Google WebRTC 的实现是否支持 H.264
Does Google implementation of the WebRTC support H.264 or not
尝试在线研究后,我仍然不确定,因为我需要更新的答案(因为 WebRTC 不断变化):
现在,WebRTC 的 Google 实现是否支持 H.264?
在网上做了一些研究,我看到有计划但不支持,但是
但是当我看到 google WebRTC 的源代码时,我确实看到了一些关于 H.264 解码的内容:
<pre>
test@lab:~/myWebRTC/src$ find . -name "<em>h" | xargs grep -i 264
...
./chromium/src/content/common/gpu/media/h264_decoder.h: void ConstructReferencePicListsB(media::H264SliceHeader</em> 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);
</pre>
我的目标是我需要一个带有编码 H.264 的嵌入式设备
使用WebRTC流出。
所以,我想知道 Google WebRTC 是否是一个选项,
还是 OpenWebRTC 是我此时 H.264 的唯一选择?
谢谢。
您看到的只是用于解码非 webrtc 相关视频所需的 H264 代码 recv/decoding。
一般来说,Chrome 不支持 webrtc 的 H264 编码,只是因为 VP8 是他们主要的免版税编解码器,并且是对 H264 的回应,H264 有太多与专利相关的并发症。最近 cisco 发布了 openh264 - https://github.com/cisco/openh264 这也是 Firefox 为支持 H264 而实现的。但是,我认为 Google 短期内不会支持它,尤其是在 VP9 即将推出的情况下。
理想情况下,如果您可以访问设备上的原始视频帧,然后自己在 VP8 中对其进行编码;通过 webrtc 播放视频会容易得多。
由于浏览器中的编解码器在理论上可以来来去去,也许您应该考虑在另一端转换(转码)视频(听起来您需要 H.264,因为那是另一端正在处理的内容)。这样,您就无需关心浏览器在任何时候协商的编解码器。
尝试在线研究后,我仍然不确定,因为我需要更新的答案(因为 WebRTC 不断变化):
现在,WebRTC 的 Google 实现是否支持 H.264?
在网上做了一些研究,我看到有计划但不支持,但是 但是当我看到 google WebRTC 的源代码时,我确实看到了一些关于 H.264 解码的内容:
<pre>
test@lab:~/myWebRTC/src$ find . -name "<em>h" | xargs grep -i 264
...
./chromium/src/content/common/gpu/media/h264_decoder.h: void ConstructReferencePicListsB(media::H264SliceHeader</em> 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);
</pre>
我的目标是我需要一个带有编码 H.264 的嵌入式设备 使用WebRTC流出。
所以,我想知道 Google WebRTC 是否是一个选项, 还是 OpenWebRTC 是我此时 H.264 的唯一选择?
谢谢。
您看到的只是用于解码非 webrtc 相关视频所需的 H264 代码 recv/decoding。
一般来说,Chrome 不支持 webrtc 的 H264 编码,只是因为 VP8 是他们主要的免版税编解码器,并且是对 H264 的回应,H264 有太多与专利相关的并发症。最近 cisco 发布了 openh264 - https://github.com/cisco/openh264 这也是 Firefox 为支持 H264 而实现的。但是,我认为 Google 短期内不会支持它,尤其是在 VP9 即将推出的情况下。
理想情况下,如果您可以访问设备上的原始视频帧,然后自己在 VP8 中对其进行编码;通过 webrtc 播放视频会容易得多。
由于浏览器中的编解码器在理论上可以来来去去,也许您应该考虑在另一端转换(转码)视频(听起来您需要 H.264,因为那是另一端正在处理的内容)。这样,您就无需关心浏览器在任何时候协商的编解码器。