当播放器APP使用平台的MediaPlayer接口来播放视频时,可以参考下面的说明来查看播放的是哪支视频文件,该文件的容器格式和编码格式等基本信息。
如果播放器没有调用平台的MediaPlayer接口来播放视频,例如在播放时间点前后,搜索不到MediaPlayer的log,那么可能就是没有使用MediaPlayer接口,具体是否有log来说明这些信息,要看播放器有没有打印。
查看播放的哪支视频文件:
使用eng版本抓取log,在main log中搜索setDataSource,会打印类似下面的log:
D MediaPlayerService: line:943 setDataSource fd=8 (/storage/emulated/0/Movies/test.mp4), offset=0, length=576460752303423487
这个log说明播放的是/storage/emulated/0/Movies/test.mp4文件
查看文件的容器信息
在main log中搜索"Autodetected media content as",会打印类似下面的log:
D MediaExtractor: Autodetected media content as ‘video/mp4’ with confidence 0.40
这个log说明所播放的文件是MPEG4类型
查看文件的编码信息
将GenericSource.cpp文件的ALOGV替换成ALOGI,在main log搜索initFromDataSource,打印类似下面的log:
06-27 09:21:48.400229 500 2944 I GenericSource: initFromDataSource track[0]: video/avc
06-27 09:21:48.404787 500 2944 I GenericSource: initFromDataSource track[1]: audio/mp4a-latm
06-27 09:21:48.406415 500 2944 I GenericSource: initFromDataSource mSources.size(): 2 mIsSecure: 0 mime[0]: video/avc
这几句log说明该视频文件包含video流、audio流,video是avc编码格式,也就是H.264,audio是mp4a-latm编码格式