1.RTMP协议
参考: RTMP.docx
2. MAC使用FFmpeg推流
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
执行命令安装ffmpeg
brew install ffmpeg
把H.264和AAC码流封装成mp4格式
ffmpeg -i abc.h264 -i abc.aac -vcodec copy -f mp4 abc.mp4
把mp4视频打包成ts流
ffmpeg -i abc.mp4 -c:v libx264 -c:a copy -f hls abc.m3u8
打包结果如下:
复制这三个文件到/usr/local/var/www路径下, 使用 http://localhost:8080/abc.m3u8 即可进行点播。
ffmpeg推rtmp流
ffmpeg -re -i 视频的绝对路径 -vcodec copy -acodec copy -f flv rtmp://localhost:1935/live1/room
将视频推流到服务器后,打开VLC,rtmp://localhost:1935/live1/room
如果要运行在手机上,则为:rtmp://电脑的ip:1935/live1/room
ffmpeg推hls流
ffmpeg -re -i 视频的据对路径 -vcodec copy -acodec copy -f flv rtmp://localhost:1935/hls/room
将视频推流到服务器后,打开VLC,http://localhost:1935/hls/room.m3u8
如果要运行在手机上,则为:http://电脑的ip:1935/hls/room.m3u8
3. iOS使用LFLiveKit推流
新建一个Xcode工程,在podfile输入pod ‘LFLiveKit’,执行pod install。代码很简单,如下:
- (IBAction)onStart:(UIButton *)sender {
if ([sender.currentTitle isEqualToString:@"开始直播"]) {
[sender setTitle:@"结束直播" forState:UIControlStateNormal];
LFLiveStreamInfo *stream = [LFLiveStreamInfo new];
stream.url = @"rtmp://172.17.44.151:1935/hls/live";
[self.session startLive:stream];
}
else {
[sender setTitle:@"开始直播" forState:UIControlStateNormal];
[self.session stopLive];
}
}
推流后索引文件及视频切片会保存在/usr/local/var/www/hls文件夹下面,名称与推流路径相同(这里都是live)。
更多代码参考:RtmpPush
想深入了解rtmp的推流过程、应对网络变化的丢帧策略等可以看LFLiveKit的源码.