问题
工作原因遇到音视频相关开源库,例如:live555,ffmpeg,ijkplayer,vlc等等。现在把其中的经验记录如下。
方案
方案1集成源码
其中live555客户端源码较少可以直接把源码文件copy进工程,直接调试即可。

com_ios_mediacodec_VideoDecoder_hh_和_videotoolbox_m.png
方案2自己编译而后打断点
包括ffmpeg以及vlc.ijkplayer是基于ffmpeg开发的,ijk原生部分代码可以直接调试,ijk依赖的ffmpeg也需要用到方案2.
案例1ijkplayer
参照iOS 版FFMPEG调试
安装好之后,直接打断点即可,例如找到调用的ffmpeg解码函数avcodec_decode_video2,单步跟进

utils_c.png
案例2MobileVLCKit
参照iOS编译MobileVLCKit客户端打开Demo工程
先在player.m打断点
- (void)playMedia {
[_player play];
}

videotoolbox_m_和_utils_c.png
需要注意的点
- 因为是多线程的,调试
步进到某一部分就已经进不去了。因为在别的线程执行了,这就需要自己对源码的基本框架有所了解了 - 这种打断点弊端一,无
index关键字不变色,无法跳转进去对应的类以及方法。 - 弊端二,我想知道
videotoolbox.m相关调用,因为没有videotoolbox.h对应代码是动态条用的,只能通过对源码的了解猜测才能步进到videotoolbox.m这个文件,只有找到至少 一个能进入videotoolbox.m的地方,才能给videotoolbox.m打断点。