ijk本不支持直接播裸流,本想自行增加一个协议去处理,同事发现AndroidIO可以支持。
1.新建类实现AndroidIO,如图
2.设置AndroidIO 并且Uri增加协议头
((IjkMediaPlayer) mMediaPlayer).setAndroidIOCallback(new FileAndroidIO());
mUri = Uri.parse("ijkio:androidio:" + mUri.toString());
3.增加白名单 ijkio
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "protocol_whitelist", "ijkio,crypto,file,http,https,tcp,tls,udp");
4.可能遇到的问题
1).引用v8架构 ffmpeg有bug
内含解决办法https://github.com/bilibili/ijkplayer/issues/4759
2).moov atom not found
应该是AndroidIO 中seek方法有问题,需要返回文件长度
待上传代码工程.
网友评论