windows上编译webrtc_m84支持h.264编解码遇到的问题总结

在使用VS2019进行WebRTC m84版本的项目开发时,遇到了h.264编解码支持的相关问题。首先,由于bug.webrtc.org/9213导致的编译错误,通过注释掉相关文件中的#error行得以解决。其次,PCM_VIDC未定义的问题,通过注释掉ffmpeg的pcm.c文件最后一行解决。最后,由于x64汇编代码不兼容,替换x64版ffmpeg源码解决了链接错误。使用gng和ninja命令进行编译,并调整了编译参数以适应编译需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用mediasoup做项目时,需要使用h.264编解码支持,于是按照网上的一些方法编译,遇到一些问题如下,开发环境为vs2019,webrtc版本为m84:

1.See: bugs.webrtc.org/9213#c13.

解决方法:
将 modules\video_coding\codecs\h264\目录下的 h264_decoder_impl.h、h264_encoder_impl.h、h264_color_space.h 几个文件中的#error "See: bugs.webrtc.org/9213#c13." 注释掉。


2.C2059  error "string"

解决方法:
注释掉\third_party\ffmpeg\libavcodec\pcm.c的最后一行,原因是PCM_VIDC这个标志未定义

3.ffmpeg_internal.lib(pcm.obj) : error LNK2001: 无法解析的外部符号 avpriv_emms_asm(不影响最终webrtc库的生成)

解决方法:替换ffmpeg文件,x86版本无此问题,x64才会出现,原因是x64不支持大多数汇编指令,ffmpeg里面有汇编代码,用clang就没那个问题,但是clang编译的vc不能引用

亲测替换thirdparty/ffmpeg下文件x64可编译引用m84下替换的ffmpeg源码

我的编译脚本如下:

gn gen out/x64DebugVC --args="is_debug=true enable_iterator_debugging=true is_clang=false is_component_build=false rtc_include_tests=false rtc_use_h264=true proprietary_codecs=true ffmpeg_branding=\"Chrome\" rtc_enable_protobuf=false use_rtti=true treat_warnings_as_errors=false  target_cpu=\"x64\"" --ide=vs2019

ninja -C  out/x64DebugVC

gn gen out/x64ReleaseVC --args="is_debug=false enable_iterator_debugging=true is_clang=false is_component_build=false rtc_include_tests=false rtc_use_h264=true proprietary_codecs=true ffmpeg_branding=\"Chrome\" rtc_enable_protobuf=false use_rtti=true treat_warnings_as_errors=false  target_cpu=\"x64\"" --ide=vs2019

ninja -C  out/x64ReleaseVC

主要参数为is_clang=false,不能用clang,否则vc不能引用webrtc.lib,

rtc_use_h264=true proprietary_codecs=true ffmpeg_branding=\"Chrome\",开启编译h.264

treat_warnings_as_errors=false,有些编译出现警告

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值