用VPS搭建视频在线轮播频道
主机哥要搭建自己的在线直播轮播台,24小时列表循环播放,目的是做一个陪伴型的时时刻刻的直播频道,下面开始搭建方法:
阿里云限量代金券 | 此广告位出租25元/月 |
linux下载ffmpeg二进制包
linux安装
去官网下载编译好的程序:https://ffmpeg.org/download.html
选择Linux Static Builds下的构建选项,到达这个页面:https://johnvansickle.com/ffmpeg/
在列表中选择适合自己的版本,鼠标右键,复制链接地址。这里我选择了git master: built on 20240213最新版本
打开Linux中要安装ffmpeg的目录,使用wget命令下载文件:
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
解压
xz -d ffmpeg-git-amd64-static.tar.xz
经过一次解压,.xz 后缀名已经被去掉。接下来执行:
tar -xvf ffmpeg-git-amd64-static.tar
运行
进入解压出来的这个目录
接下来执行下命令试试:
./ffmpeg
如果想要ffmpeg命令全局可用,可以在bin目录加个链接。比如,分别执行如下命令,即可在/usr/local/bin目录下创建ffmpeg和ffprobe软链接。
ln -s /opt/ffmpeg/ffmpeg /usr/local/bin/ffmpeg ln -s /opt/ffmpeg/ffprobe /usr/local/bin/ffprobe
这样在其他目录也都可以直接使用 ffmpeg 和 ffprobe 而不用加目录前缀了。
windows安装
去官网下载编译好的程序:https://ffmpeg.org/download.html
选择windows Windows EXE Files - Buids from gyan.dev,进入这个页面:https://www.gyan.dev/ffmpeg/builds/
在列表中选择适合自己的版本。这里我选择了git master builds:version: 2024-02-22-git-76b2bb96b4最新版本ffmpeg-git-essentials.7z
下载完成后解压到C盘,并重命名为ffmpeg.exe
开始菜单搜索:编辑系统环境变量,点击环境变量,在系统变量的Path选中,点编辑,新建对应FFmpeg的bin路径:C:\ffmpeg\bin
打开cmd输入ffmpeg -version,返回版本信息则安装配置成功。
如果没有返回版本信息可能需要重启
使用FFmpeg下载m3u8视频并转换为mp4格式
ffmpeg -i https://xxx.m3u8 D:\video.mp4
按“Q”键停止。如果你就想录制一小段时间(比如60秒),可以在-i参数前加-t 60参数
以下命令可避免转码,防止采集时CPU占用过高
ffmpeg -i http://xxx.m3u8 -c:v copy -c:a copy -bsf:a aac_adtstoasc D:\video.mp4
查看支持的协议列表
ffmpeg -protocols
使用ffplay进行拉流
ffplay D:/video.mp4
或者直接播放网络资源
ffplay https://xxx.m3u8
使用ffmpeg进行推流
推流需要自建推流服务器,这里我推荐使用livego
项目地址:https://github.com/gwuhaolin/livego/
中文说明:https://github.com/gwuhaolin/livego/blob/master/README_cn.md
下载地址:https://github.com/gwuhaolin/livego/releases
livego在linux vps上安装
新建软件目录
mkdir /opt/livego/
cd /opt/livego/
下载二进制包
wget https://github.com/gwuhaolin/livego/releases/download/0.0.15/livego_0.0.15_linux_amd64.tar.gz
解压
tar -zxvf livego_0.0.15_linux_amd64.tar.gz
删除压缩包
rm -f livego_0.0.15_linux_amd64.tar.gz
在/usr/local/bin目录下创建livego软链接
ln -s /opt/livego/livego /usr/local/bin/livego
这样在其他目录也都可以直接使用livego而不用加目录前缀了。
livego使用教程
1、启动服务:执行livego二进制文件启动livego服务;你可以暂时使用screen守护进程,但是不建议,后面介绍用systemd来守护进程防止进程退出
2、访问http://localhost:8090/control/get?room=movie 获取一个房间房间名叫movie的channelkey(channelkey用于推流,movie用于播放)
当然你也可以在ssh上使用这个命令直接获取
curl http://localhost:8090/control/get?room=movie
3、推流: 通过RTMP协议推送视频流到地址ffmpeg -re -i 1.mp4 -c copy -f flv rtmp://localhost:1935/live/rfBd56ti2SMtYvSgD5xAV0YU99zampta7Z7S575KLkIZ9PYk
4、播放地址
rtmp://localhost:1935/live/movie http://127.0.0.1:7001/live/movie.flv http://127.0.0.1:7002/live/movie.m3u8
livego开启启动
使用systemd守护livego进程防止以外退出
编写livego.service文件
vi /etc/systemd/system/livego.service
#将下面的代码复制进去
[Unit] Description=livego server Documentation=https://23vps.com/post/96.html After=network.target [Service] User=root #Group=some_group WorkingDirectory=/opt/livego LimitNOFILE=4096 ExecStart=/opt/livego/livego ExecStop=/bin/kill $MAINPID Restart=on-failure StartLimitInterval=600 [Install] WantedBy=multi-user.target
重载配置
systemctl daemon-reload
管理服务
开机启动:systemctl enable livego 取消开机启动:systemctl disable livego 启动:systemctl start livego 重新启动:systemctl restart livego 停止运行:systemctl stop livego 查看运行状态:systemctl status livego
使用ffmpeg推流到livego
单视频循环轮播
ffmpeg -stream_loop -1 -re -i 1.mp4 -c copy -f flv rtmp://localhost:1935/live/rfBd56ti2SMtYvSgD5xAV0YU99zampta7Z7S575KLkIZ9PYk
列表循环轮播
ffmpeg -stream_loop -1 -re -f concat -i "list.txt" -c copy -f flv rtmp://localhost:1935/live/L17LTlsVqMNTZyLKMIFSD2x28MlgPJ0SDZVHnHJPxMKi0tWx
视频轮播列表文件list.txt编写格式
file '1.mp4' file '2.mp4' ...