[FFmpeg-user] Cannot receive audio/video from Unreal WebRTC DirectShow Source filter

Roger Pack rogerdpack2 at gmail.com
Sat Oct 27 14:54:32 EEST 2018

On Thu, Sep 20, 2018 at 12:08 PM Maxim Ershtein <mershtein at gmail.com> wrote:
> Hello,
> I am trying to record VP9/Opus -encoded live stream into .mkv file. The
> live stream is being encoded by Chrome browser and sent via WebRTC to
> Unreal Media Server.
> Unreal Media Server allows installing WebRTC DirectShow Source filter:
> http://umediaserver.net/components/index.html
> This filter allows connecting to Unreal Media Server and receiving the
> original stream.
> It works fine in GraphEdit - I can render and play the stream.
> But my goal is to record it with ffmpeg to .mkv file with no transcoding.
> So I am doing:
> *ffmpeg -f dshow -show_video_device_dialog true -i video="Unreal WebRTC
> Client Source":audio="Unreal WebRTC Client Source" -c:a copy -c:v copy
> c:\temp\output.mkv*
> According to documentation, it should work.
> Notice that I am doing  *-show_video_device_dialog true*
> This is because you need to initialize the filter, like all Unreal source
> filters, with the URL where to pull the stream from. This URL is not
> getting persisted anywhere, so each time you instantiate this filter, you
> need to initialize it with the URL. So the dialog allows you to input the
> URL.
> But when I do it, ffmpeg reports *"Could not get media type"*.
> *What am I doing wrong?*

full uncut console output please?  Also you might be able to put it in
a gif file and play that through avisynth...

> Again, using the same dialog in GraphEdit works fine and I can render pins
> and play.
> I am also looking for some automation of that dialog - how do I pass that
> URL to the filter using command line? The filter readme says:
> "Configuration parameters can be provided via property page or via
> IFileSourceFilter interface exposed by the filter. When configured via
> IFileSourceFilter interface, initialization string needs to be provided as
> first parameter of IFileSourceFilter::Load()
> method."
> So, I guess, ffmpeg could check if IFileSourceFilter interface is supported
> and then call a Load function with  command line - supplied parameter. If
> ffmpeg doesn't support that, any ideas on how to pass the URL to the filter
> programmatically?

Good idea...though it might take some time.  Funding would help :)

> Note that this is a pretty generic situation - I might have 10 ffmpeg
> instances loading this filter and each one is going to use a different URL.
> So the URL is not something static and cannot sit in registry or some
> config file. So same problem with other network source filters from Unreal,
> but I don't need others, as ffmpeg can receive rtsp, rtmp and mpeg-ts
> streams by itself.
> But ffmpeg, of course, cannot receive browser-encoded WebRTC streams with
> VP9/Opus encodings. Hence I am trying to use Unreal WebRTC DirectShow
> Source filter.
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".

More information about the ffmpeg-user mailing list