目的
因為項目中用到了IJKMediaFramework這個直播的框架。不小心發(fā)現(xiàn)無法播放RTPS的流地址,所以網(wǎng)上各種資料,各種嘗試靶端。
本文不會有很長的內(nèi)容和步驟的介紹谎势,具體步驟我給出參考的地址,也是一位簡書的小伙伴寫的杨名,已經(jīng)很詳細了脏榆。這里我就提出如何把RTPS和HTTPS都支持,整合在一起台谍。
關鍵步驟
1.支持HTTPS
在模塊文件中加入此行代碼须喂。我的編譯是在module-lite.sh這個文件。
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
2.支持RTPS
1.修改模塊文件
首先將模塊文件(module-lite.sh)中的此行代碼修改成可使用的狀態(tài)趁蕊。
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-protocol=rtp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
接著在下面添加這行代碼
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
2.修改ff_ffplay.c文件
我是直接下載的zip包坞生,而不是走git的拉下來的代碼。但是應該差別不大掷伙。我的路徑是ijkplayer-ios/ijkplayer/ff_ffplay.c是己。將文件中的方法替換成下面的方法即可。
static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket *pkt, int *serial, int *finished){
if (!ffp->packet_buffering)
return packet_queue_get(q, pkt, 1, serial);
while (1) {
int new_packet = packet_queue_get(q, pkt, 1, serial);
if (new_packet < 0){
new_packet = packet_queue_get(q, pkt, 0, serial);
if(new_packet < 0)
return -1;
}else if (new_packet == 0) {
if (q->is_buffer_indicator && !*finished)
ffp_toggle_buffering(ffp, 1);
new_packet = packet_queue_get(q, pkt, 1, serial);
if (new_packet < 0)
return -1;
}
if (*finished == *serial) {
av_packet_unref(pkt);
continue;
}else
break;
}
return 1;
}
結(jié)尾
首先給出我參考的步驟鏈接,除了文中提出的支持RTPS部分加入任柜,其它可按照此文步驟去操作卒废。并且小伙伴不用擔心不支持armv7會不會有什么不好的影響。我的項目已經(jīng)順利上線宙地,只是不支持iPhone5s之前的機器也就是必須要64位的手機摔认。
最后再嘮叨一下,如果你有好的想法或者好的建議都可以給我留言宅粥,可能我回復的沒那么及時级野,但是我看到了一定會給你回復的。我希望可以和你們一起進步粹胯。