谷歌实现的WebRTC是否支持H.264?

4

在尝试在线研究后,我仍然不确定是否需要更加最新的答案(因为WebRTC不断变化):

现在,Google WebRTC实现是否支持H.264?

在网上做了一些研究,我看到有计划支持,但是当我查看Google WebRTC的源代码时,确实有提到H.264解码:

test@lab:~/myWebRTC/src$ find . -name "h"  | xargs grep -i 264
...
./chromium/src/content/common/gpu/media/h264_decoder.h:  void ConstructReferencePicListsB(media::H264SliceHeader slice_hdr);
./chromium/src/content/common/gpu/media/h264_decoder.h:  int PicNumF(const scoped_refptr& pic);
./chromium/src/content/common/gpu/media/h264_decoder.h:  int LongTermPicNumF(const scoped_refptr& pic);
./chromium/src/content/common/gpu/media/h264_decoder.h:  bool ModifyReferencePicList(media::H264SliceHeader* slice_hdr,
./chromium/src/content/common/gpu/media/h264_decoder.h:                              H264Picture::Vector* ref_pic_listx);
./chromium/src/content/common/gpu/media/h264_decoder.h:  bool StartNewFrame(media::H264SliceHeader* slice_hdr);
./chromium/src/content/common/gpu/media/h264_decoder.h:  void OutputPic(scoped_refptr pic);
./chromium/src/content/common/gpu/media/h264_decoder.h:  media::H264Parser parser_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  H264DPB dpb_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  scoped_refptr curr_pic_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  H264Picture::Vector ref_pic_list_p0_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  H264Picture::Vector ref_pic_list_b0_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  H264Picture::Vector ref_pic_list_b1_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  H264Picture::Field prev_ref_field_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  scoped_ptr curr_nalu_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  scoped_ptr curr_slice_hdr_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  H264Accelerator* accelerator_;
./chromium/src/content/common/gpu/media/h264_decoder.h:  DISALLOW_COPY_AND_ASSIGN(H264Decoder);

我的目标是我需要一个内嵌的设备,该设备带有编码的H.264,以使用WebRTC进行流传输。

所以,我想知道Google WebRTC是否是一个选择,或者OpenWebRTC是否是目前仅有的支持H.264的选择?

谢谢。


1
它目前没有出现在任何Chrome版本中。互联网上的一些常规html5视频使用h264(如YouTube),这可能会解释解码器。但是Chrome不支持h264的实时webrtc流式传输。 - Benjamin Trent
1
Firefox支持H.264在WebRTC中,但你需要修改SDP。请参考这个针对Firefox特定的测试页面:http://mozilla.github.io/webrtc-landing/pc_test.html。 - jib
在过去的一年左右,即2017年,Chrome除了VP8/9之外,还支持分组模式1中的h.264。Chromium使用openh264进行编码和ffmpeg进行解码。 - Paul Gregoire
2个回答

2
您所看到的只是解码H264所需的代码,这对于非WebRTC相关的视频接收/解码非常必要。
一般来说,Chrome不支持WebRTC的H264编码,因为VP8是他们主要的免版税编解码器,也是回答H264的方式,而后者有太多与专利相关的复杂性。最近,思科发布了openh264 - https://github.com/cisco/openh264,这是Firefox实现支持H264的方式。然而,我并不认为Google会很快支持它,尤其是VP9即将推出。
理想情况下,如果您可以访问设备上的原始视频帧,然后自己将其编码为VP8,则可以更轻松地通过WebRTC传输视频。

0

由于浏览器中的编解码器理论上可能会出现变化,因此您应该考虑在另一端进行视频转换(转码)(听起来您需要H.264,因为另一端正在处理它)。这样,您就不必担心浏览器在任何时候协商了什么编解码器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接