参照http://www.jianshu.com/p/69b26da21fa5
1 修改module-lite.sh文件
打开demo文件夹,找到config文件夹下的module-lite.sh文件,修改这一行COMMON_FF_CFG_FLAGS =" $ COMMON_FF_CFG_FLAGS --disable - rtp protocol =“ 修改为--> COMMON_FF_CFG_FLAGS =" $ COMMON_FF_CFG_FLAGS --enable - rtp protocol =",在这下面再加上这一行: export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
2 修改ff_ffplay.c 此函数
static int packet_queue_get_or_buffering(FFPlayerffp, PacketQueue *q, AVPacket *pkt, int *serial, int *finished)
{
assert(finished);
while (1) {
int 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_free_packet(pkt);
continue;
}
else
break;
}
return 1;
}
替换成
static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket *pkt, int *serial, int finished)
{
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 (!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_free_packet(pkt);
continue;
}
else
break;
}
return 1;
}