[FFmpeg-devel] Initialize DirectShow source filters with IFileSourceFilter::Load
Maxim Ershtein
mershtein at gmail.com
Sat Sep 22 00:19:08 EEST 2018
Hello,
ffmpeg allows capturing a/v from custom DirectShow source filters, and
provides some methods to pass parameters to these filters, but these
methods seem insufficient.
So ffmpeg offers to launch a filter configuration dialog via
-show_video_device_dialog
, however, it doesn't work on some filters, but most importantly, it is not
a programmatic way; you need to have a user configuring the filter.
I wrote an issue report yesterday to ffmpeg-users:
http://www.ffmpeg-archive.org/Cannot-receive-audio-video-from-Unreal-WebRTC-DirectShow-Source-filter-td4685353.html
The principal problem is with network capture filters that must be
initialized with URL or some network address, in order for them to get the
stream and construct a media type on the output pins.
They don't have any output media type once instantiated - they must be
initialized in order to have a media type. Depending on network address
where they pull a stream from, this media type can be very different.
So a feature suggestion is to use a common COM interface used in DirectShow
for this purpose:
IFileSourceFilter. Notice how GraphEdit pops up an open file dialog
prompting you to load a configuration file, when you try to add source
filter that supports this interface.
So, ffmpeg can have a command-line parameter, like
*-IFileSourceFilter_Init_String.*
If this parameter is passed, AND source filter supports IFileSourceFilter,
then ffmpeg calls IFileSourceFilter::Load with that parameter.
Any other idea of how to programmatically pass *custom* parameters to
source filters,
is welcomed.
Thanks!
More information about the ffmpeg-devel
mailing list