IOS IJKPlayer播放RTSP
来源:互联网 发布:淘宝网卖家体检中心 编辑:程序博客网 时间:2024/05/16 13:55
官网:https://github.com/Bilibili/ijkplayer
本文的意义
今天闲下来,把以前做RTSP的过程简单整理下。
详细的图文步骤网络上有很多,但大多是RTMP等的,这里简单记录一下RTSP的部分,由于IJKPlayer默认不支持RTSP,需要改些配置。
转载请注明出处 ethan_xue博客
1.clone
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ioscd ijkplayer-iosgit checkout -B latest k0.8.0
2.修改config
修改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"
保存后
cd /Users/xue/Downloads/RTSP/ijkplayer-ios/config rm module.sh //删除原来的ln -s module-lite.sh module.sh //用修改过的替换
3.修改源文件
ijkplayer-ios/ijkmedia/ijkplayer/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;}
修改
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;}
4.编译
./init-ios.shcd ios./compile-ffmpeg.sh clean./compile-ffmpeg.sh all
打开xcode编译模拟器和真机,分别编译一遍。
将编译出来的库进行合并
xuedeiMac:Products xue$ lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
得到想要的framework
5.使用
IJKDemoInputURLViewController.m里
url = [NSURL URLWithString:@"rtsp://39.xx.x3.x:556/realplay://bca32cf8bb2e4a1a95aeb294bf536328:SUB:TCP?cnid=1&pnid=0&token=&auth=30&redirect=0&transcode=0&resolution=2&bitrate=100&framerate=10&videotype=2&systemformat=2"];// if ([scheme isEqualToString:@"http"]// || [scheme isEqualToString:@"https"]// || [scheme isEqualToString:@"rtmp"]) {
IJKVideoViewController.m里
// 使用 TCP [options setOptionValue:@"tcp" forKey:@"rtsp_transport" ofCategory:kIJKFFOptionCategoryFormat]; // [options setPlayerOptionIntValue:1 forKey:@"videotoolbox"];
ffmpeg的配置只需要在
[options setFormatOptionValue:@"tcp" forKey:@"rtsp_transport"];//[options setOptionValue:@"tcp" forKey:@"rtsp_transport" ofCategory:kIJKFFOptionCategoryFormat];// 使用硬解[options setPlayerOptionIntValue:1 forKey:@"videotoolbox"];
参考
ijkplayer ios项目集成(图文详细版) http://www.jianshu.com/p/4f21af680c19
阅读全文
0 0
- IOS IJKPlayer播放RTSP
- 使用ijkPLayer播放rtsp协议地址
- iOS集成ijkplayer支持rtsp流播放并使用播放样例
- ijkplayer从编译到使用来播放rtsp过程小结
- iOS ijkplayer 播放器 消息循环 详解
- iOS ijkplayer 音频数据的播放
- iOS ijkplayer Audio Unit 播放音频
- IJKplayer播放
- 编译ijkplayer,并添加rtsp、rtmp支持,解决无法播放、unknown、延迟问题
- ijkplayer --B站开源播放框架使用教程(iOS版)
- 开源播放框架ijkplayer(iOS版)使用教程
- 【音视频】Android/iOS 视频播放器ijkplayer
- 开源播放框架ijkplayer(iOS版)使用教程
- iOS音频播放参数设置问题(rtsp)
- ios 如何播放RTSP视频流
- iOS使用FFmpeg 播放rtsp实时监控
- iOS使用MobileVLCKit播放rtsp视频流
- android ijkplayer 通过rtsp直播
- leetcode--evaluate-reverse-polish-notation
- 我的C++学习之路
- 多线程问题总结
- Oracle 导出导入数据
- 四、组件化和属性(props)
- IOS IJKPlayer播放RTSP
- Xshell连接Linux
- Android 7.0 自定义系统service过程与注意事项
- php底层分析
- Asch和ETH ,Lisk的对比
- Linux 多路转接I/O select函数
- html5 input type="datetime-local"时间赋值问题
- Python之路---一些小练习
- Delphi文件读写操作常用的方法