Open

Description
1、我用module-default.sh是可以播放RTSP,但是打的包快500M,太大了。
2、现在是采用修改module-lite.sh文件,
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
然后修改ff_ffplay.c文件,
修改:static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket *pkt, int *serial, int *finished)
{
assert(finished);
if (!ffp->packet_buffering)
return packet_queue_get(q, pkt, 1, serial);
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_packet_unref(pkt);
continue;
}
else
break;
}
return 1;
}
TO----->
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;
}
然后编译,打包播放不了,我从网上搜到的开源视频流地址:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
求大家指教!!!
Activity
[-]ijkplayer怎么支持RTSP?[/-][+]ijkplayer怎么更精简的支持RTSP?[/+]bbcallen commentedon Nov 14, 2016
./configure --help in ffmpeg's directory.
ghost commentedon Nov 14, 2016
./configure --help in ffmpeg's directory. 能不能详细点,大神?
cqswzqcj commentedon Nov 15, 2016
大神解决了没有。。求解释
fengbenpaao commentedon Nov 28, 2016
哈哈,已经解决了,支持 rtsp,编译出来只有13M.
fengbenpaao commentedon Nov 28, 2016
加入那几个之后,还不行,要把 这个http的网络协议打开才行:# ./configure --list-protocols 这个地方全部开放, 不过也可以过滤掉一些,具体你可以试一下, 编完之后,查看config.h, 看看那个rtsp的宏是否已经打开了,
我现在测试 ,我的rtsp网络延时很慢,要5到6秒, 听说要改缓存, 正在查找....
fengbenpaao commentedon Nov 28, 2016
另外还需要,注意你的视频,音频格式是否支持rtsp的播放, 网络缓存设置那个地方要加大,50ms, 似乎太短了
packet buffering optimizations.
fengbenpaao commentedon Dec 15, 2016
哈哈,不错, 在对 ijkMediaPlay 加点参数, 现在rtsp的码流播放速度很快啊, 没有延时.
fengbenpaao commentedon Dec 15, 2016
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 60);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-fps", 0);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "fps", 30);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_YV12);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max-buffer-size", 1024);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 3);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probsize", "4096");
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", "2000000");
dourgulf commentedon Dec 15, 2016
mark.
MaxZhangs commentedon Dec 16, 2016
@fengbenpaao 大神,对支持rtsp的音频的处理能否指点一二?
fengbenpaao commentedon Dec 22, 2016
@MaxZhangs 首先用pc播放器 看看你当前的 rtsp码流属于什么 音频,视频,格式, 然后编译的时候,再把那些格式打开, 这样你放出来的 rtsp就有声音有图片了;
我现在比较纠结的时候 1080p ijk播放很不流畅, ......卡卡卡卡
ipapamagic commentedon Jan 3, 2017
我照上面的修改,可以播放rtsp了,但遇到关掉player的时候,server没收到rtsp teardown的指令
这个大神有遇到吗?
xu819241519 commentedon Jan 20, 2017
@fengbenpaao 按照你说的设置好了参数,为什么还是有>1秒的延迟?
allentsing commentedon Jul 10, 2017
@fengbenpaao 我现在也是用ijkPlayer播放1080p的,卡顿严重,你解决了吗?
fengbenpaao commentedon Jul 12, 2017
@allentsing 开启硬解码,但是不是所有手机都能支持到1080的硬解码,也是个悲剧
allentsing commentedon Jul 12, 2017
@fengbenpaao 开启硬解码之后,我的画面是黑的,有数据传过来,但是画面是黑的,你知道怎么回事吗?
HoQer commentedon May 15, 2018
mark
zkj3e commentedon May 30, 2019
mark
v-jibfen commentedon Sep 15, 2021
@fengbenpaao 大神,rtsp 延迟优化现在有好的方案了么