問題
工作原因遇到音視頻相關開源庫,例如: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
打斷點。