Opera sometimes does not play WebRTC video encoded in H.264
techmsgs last edited by
I have a media server which translates some videos encoded in H.264 to browsers via WebRTC. I tested various browsers (Firefox, Chrome, Opera, Edge) in various operating systems (Windows, Linux) and everything works fine in most cases, except for the case when Opera is run on a Windows 7/10 virtual machine in VMware. Opera receives the video stream but can't decode it for some reason.
I turned on WebRTC debug logs in Opera and got the following:
[2184:2312:1211/141911.062:INFO:decoder_database.cc(144)] Initializing decoder with payload type '102'. [2184:2312:1211/141911.062:ERROR:h264_decoder_impl.cc(210)] FFmpeg H.264 decoder not found. [2184:2312:1211/141911.062:INFO:generic_decoder.cc(216)] Decoder implementation: FFmpeg [2184:2312:1211/141911.062:ERROR:decoder_database.cc(178)] Failed to initialize decoder. Error code: -1
When I run Opera on Windows 10 outside of any virtual machines, video plays successfully and I see in logs:
[6132:16856:1211/151144.100:INFO:decoder_database.cc(144)] Initializing decoder with payload type '102'. [6132:16856:1211/151144.100:INFO:generic_decoder.cc(216)] Decoder implementation: ExternalDecoder
So I have two questions:
- How is that possible that FFmpeg is unable to initialize H.264 decoder?
- Why does Opera use different decoder implementations in different cases - FFmpeg decoder in the first case and some ExternalDecoder in the second case? What does this choise depend on? What does "ExternalDecoder" exactly mean?
I tried to solve this issue with no luck so far. I tried to do the following:
- Uninstalled Opera and installed it again from scratch.
- Tweaked various command line options containing "webrtc" in their names.
- Disabled hardware acceleration in Opera settings.
- Compared the list of video codecs installed in the non-working system with the codec list in a working system: they are the same!
- Installed K-Lite codec pack.
- Tried to play the same WebRTC video stream in different browsers using the same web client in the same system. Chrome and Firefox play video fine! Only Opera doesn't.
- Tried to use a third party software for testing purposes: Unreal Media Server and its WebRTC player for browsers. I got the same results. WebRTC player works fine in Chrome and Firefox but doesn't play video in Opera.
Is there anything else I could try? Is there a bug in Opera? Or maybe VMware is to blame?
Opera 73.0.3856.260 (x64 for Windows)
Windows x64 Pro (Install date 16.10.2020)