ijkplayer播放rtsp视频

支持rtsp

$ vim config/module-lite.sh
// 启用rtp
export COMMON_FF_CFG_FLAGS=“ C O M M O N F F C F G F L A G S − − e n a b l e − p r o t o c o l = r t p " e x p o r t C O M M O N F F C F G F L A G S = " COMMON_FF_CFG_FLAGS --enable-protocol=rtp" export COMMON_FF_CFG_FLAGS=" COMMONFFCFGFLAGSenableprotocol=rtp"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp”

iOS

ffmpeg播放rtsp

// 默认用udp播放,有时候播放不了
$ ffplay rtsp://xxxxxx
[h264 @ 0x7f87610a4c00] Ignoring NAL 4 in global header/extradata
[rtsp @ 0x7f876187e000] UDP timeout, retrying with TCP 0B f=0/0
[rtsp @ 0x7f876187e000] method PAUSE failed: 500 ServerInternal/0
[h264 @ 0x7f87610a4c00] Ignoring NAL 4 in global header/extradata
[rtsp @ 0x7f876187e000] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
Consider increasing the value for the ‘analyzeduration’ and ‘probesize’ options
// 用tcp播放,可以成功
$ ffplay -rtsp_transport tcp rtsp://xxxxxx

iOS播放rtsp

// 强制使用tcp链接,默认的udp链接有可能播放不了,参考:https://github.com/Bilibili/ijkplayer/issues/1346
[self.player setOptionValue:@"tcp" 
                     forKey:@"rtsp_transport" 
                 ofCategory:kIJKFFOptionCategoryFormat];

Android/Unity

// tv.danmaku.ijk.media.example.widget.media.IjkVideoView.java
// 强制使用tcp
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp");

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 60);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-fps", 0);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "fps", 30);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_YV12);

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer");
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max-buffer-size", 1024);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 10);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probsize", "4096");
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", "2000000");

这个设置可能会导致ijkPlayer不能播放其他的RTMP或者HTTP格式的url,所以对于其他格式的URL,需要临时切换设置。

参考

iOS用ijkplayer播RTSP流

How to force rtsp streaming using TCP mode?

ijkplayer怎么更精简的支持RTSP?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值