webrtc 维护方法四(webrtc增加ffmpeg打印方法)

一、 背景介绍

webrtc使用的是ffmpeg的H264解码器,遇到一些问题,需要获取ffmpeg的过程打印。这个本身不是很复杂,只要在InitDecode函数里面调用ffmpeg的钩子函数av_log_set_callback,就可以实现。但是实际操作的时候,发现编译一直失败,找不到av_log_set_callback符号表。

二、问题分析

1、首先查询ffmpeg.dll.lib符号表,看av_log_set_callback函数的符号,是否存在。

命令行:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\Llvm\x64\bin>llvm-nm D:\code\webrtc\out\Release\ffmpeg.dll.lib

发现确实只有少数几个函数符号存在,大部分的函数都不在。

2、ffmpeg的编译配置文件大多都在third_party\ffmpeg\chromium目录下,去这下面找找思路。

发现codec、parser、demuxer钩子都是在third_party\ffmpeg\chromium\config\Chrome\win\x64下libavcodec/libavformat/libavutil文件配置的

ffmpeg编译模块的开关是在third_party\ffmpeg\chromium\config\Chrome\win\x64下的config.asm、config.h配置的。

再深入找,发现对外公开的函数时在third_party\ffmpeg\chromium\ffmpeg.sigs配置的。

三、解决办法

在ffmpeg.sigs文件中,添加我们需要的函数名。编译问题解决。

 

四、附录

日志钩子函数:

void ffmpeg_log_default( void *p_unused, int i_level, const char *psz_fmt, va_list arg )
{
    char buf[4096];
    int length = vsnprintf(buf, sizeof(buf), psz_fmt, arg);
    if (length)
        RTC_LOG(LS_ERROR) << buf;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习WebRTC原理和编程知识,并动手搭建环境完成网页视频会话和文字聊天。具体内容包括: 一、Html与JavaScript小白入门二、WebRTC小白入门与流程原理分析三、网络打洞STUN和TURN、信令服务器的原理与实战五、手撕WebRTC流程与代码六、亲自敲码踩坑搭建视频会话   音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值