版权声明:作者已开启版权声明,如转载请注明转载地址。 https://blog.csdn.net/qq_34829447/article/details/83964346
一.直播源的制作【方法一:Nginx+ffmpeg】
1.方法一:Nginx+ffmpeg
-
安装Nginx(简易服务器)
- Mac上安装命令
brew install nginx-full --with-rtmp-module
- 验证是够安装成功
- 执行
nginx
启动Nginx服务器 - 在浏览器中输入
http://localhost:8080
- 执行
- Mac上安装命令
-
安装ffmpeg(处理视频工具)
- Mac上安装命令
brew install ffmpeg
- 验证是否安装成功
- 输入命令
ffmpeg
- 输入命令
- Mac上安装命令
-
配置Nginx(从而与ffmpeg配合实现推流)
-
打开
/usr/local/etc/nginx/nginx.conf
文件 -
添加rtmp模块
rtmp{ server{ listen 1935; chunk_size 4000; #RTMP 直播流配置 application rtmplive { live on; max_connections 1024; } #hls 直播流配置 application hls{ live on; hls on; hls_path /usr/local/var/www/hls; hls_fragmente 5s; } } }
-
在server模块中增加路径,用于测试
location /hls{ types{ application/vnd.apple.mpegurl.m3u8;#响应头类型 video/mp2t ts; } root /usr/local/var/www; add_header Cache-Control no-catch;#不要缓存 }
-
查看是否可以推流
- 首先需要停掉之前开启的nginx
nginx -s stop
,再重启nginx
(因为修改了配置文件) - 将之前live-demo中的test.mp4模拟作为视频源,当成摄像头,进行视频采集(已经制作好的视频和摄像头采集的视频本质上是没有太大区别的)
- 使用
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/rtmp
切视频进行推流-i
表示输入test.mp4
作为输入文件-vcodec libx264
视频编码为libx264-acodec aac -f flv
设置音频编码rtmp://localhost:1935/rtmplive/rtmp
表示推流地址
- 首先需要停掉之前开启的nginx
-
-
准备视频【请看上方】
-
利用ffmpeg推流【请看上方】
2.方法一:查看视频流信息
普通的播放器是不能识别rtmp协议的,故需要使用下方播放器
- 安装VLC播放器和Safari浏览器
- 验证流是否能成功播放
- 执行命令
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/rtmp
进行推流(等几秒钟,因为推流的过程中需要推一个片段出去,一个片段需要很多帧) - 打开VLC播放器,File->Open NetWork,复制地址
rtmp://localhost:1935/rtmplive/rtmp
点Open进行视频流的播放
- 执行命令
- 验证hls进行推流
- 执行命令
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/hls/stream
(hls已经不是rtmp协议了,使用的是http协议,故使用的时候需要添加上述server模块中的locaion) - ffmpeg实现原理:ffmpeg实现推流的时候,会将MP4的视频文件按照hls协议转成对应的格式,将视频文件存储到
hls_path /usr/local/var/www/hls;
中,用户访问地址的时候是通过http协议访问的,访问/hls,路径是root /usr/local/var/www;
- 打开safari浏览器,访问
localhost:8080/hls/strem.m3u8
- 执行命令
二.直播源的制作【方法二:集成服务】
1.集成服务
- 下载服务
- 稍后会在给出server程序的资源下载地址,是一个压缩包
- 安装服务
- 压缩包中有可执行文件,直接解压压缩包即可
- 准备源视频(test.mp4)
- 开启服务
- 运行现成的二进制程序server,执行
open server
- 运行现成的二进制程序server,执行
- 利用ffmpeg推流
- 推流命令
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://localhost:1935/live/movie
- 验证地址(都可以访问)
RTMP:rtmp://localhost:1935/live.movie
FLV:http://127.0.0.1:7001/live/movie.flv
HLS:http://127.0.0.1:7002/live/movie.m3u8
- 推流命令
三.方法一和方法二的区别
- 方法一优点:手动设置nginx和ffmpeg,可以更强的判断nginx到底起的是什么服务;而方法二都是封装好的,很多设置没法进行改变
- 方法一的缺点:成本比较高,必须要学会Nginx