环境搭建
- 云服务器一台 或者24开机联网运行的本地电脑
ffmpeg
- 推流地址 (B站、抖音、斗鱼…)
- 准备好不涉及侵权的视频内容
ffmpeg安装
我这边以ubuntu
的云服务器为例给大家介绍
执行以下指令进行安装:
1 | sudo apt-get update |
推流地址的获取
这里以B站直播平台为例 首先登陆哔哩哔哩直播 进入直播中心:
然后开通直播间 这里需要进行实名认证:
由于实名认证太过麻烦 扫码半天扫不上 于是决定转战微信视频号直播 然而同样也需要各种认证 最后头大的我 又回到了B站😂
后来我发现二维码迟迟扫不上的原因是 手机登录的账号和电脑端登录的账号不一致 也是很无语 也没有个提示 只能靠试🤦♀️
好不容易扫码成功 进入实名认证页面 居然app
存在bug
提示人脸SDK初始化失败
哎😔
最后我下载了一个抖音直播伴侣
需要有一千粉丝才能开 咳咳 这个条件我已经满足了😃
不过凭心而论 B站直播是门槛最低的 接下来还是以B站直播为例 我使用老版本的哔哩哔哩app通过了实名认证, 然后进入到直播中心 点击开播设置选项卡:
往下拉能看到服务器地址和密钥:
推流地址=服务器地址+串流密钥
将两者组合在一起就能得到一个推流地址 如下:
1 | rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_485691562_50807751&key=afxxxxx99e2552f502129ba17a5b0&schedule=rtmp&pflag=1 |
开始推流
单个视频循环播放
执行以下指令开始循环播放视频:
1
ffmpeg -re -stream_loop -1 -i "xxx.mp4" -c copy -f flv "推流地址"
多个视频挨个播放
如果我们有多个视频需要进行挨个播放 那么我们需要创建一个文本文件 如
need_play.txt
然后将视频绝对路径写入该文本中, 如下:1
2file '/root/xxx/视频1.mp4'
file '/root/xxx/视频2.mp4'然后执行以下指令开始播放:
1
ffmpeg -f concat -safe 0 -i /root/need_play.txt -c copy -f flv "推流地址"
多个视频循环播放
上面多个视频挨个播放指令 一旦文本中的视频播放完 推流就会终止, 如果我们想从头到尾无限循环播放 那么我们可以使用
shell
脚本 将指令放入while
循环中 如下:1
2
3
4
5
6
while true
do
ffmpeg -f concat -safe 0 -i /root/need_play.txt -c copy -f flv "推流地址"
done
echo "所有视频播放完毕"然后运行该脚本:
1
./xxx.sh
效果测试
此时 我们能看到已经可以接收到直播内容了
将视频同时推到多个直播平台
如果我们想将视频同时推到多个直播平台, 可以使用以下指令:
1 | ffmpeg -re -stream_loop -1 -i input_video.mp4 -c copy -f flv "推流地址1" -c copy -f flv "推流地址2" |
如果需要配置视频参数可以使用类似于下面的指令:
1 | ffmpeg -re -stream_loop -1 -i input_video.mp4 \ |
参数解释:
-c:v libx264
指定视频编码器为x264(H.264)。-preset fast
设置编码预设,影响编码速度和质量。-b:v 2500k
设置视频比特率为2500kbps。-maxrate
和-bufsize
用于控制编码的比特率变化。-pix_fmt yuv420p
设置像素格式,常用于兼容性。-c:a aac
指定音频编码器。-b:a 128k
设置音频比特率。-ar 44100
设置音频采样率。-f flv
指定输出格式为FLV,这是直播常用的格式。- 目标URL和推流密钥。
Python脚本
如果你想实现一个大而全的功能, 那么可以考虑使用python
写一个脚本, 如下:
1 | import os |
上面代码实现了将文件夹中的视频挨个循环推流到多个直播平台 后期可根据需求增减推流地址
直播转播
如果你想将网络的上直播或者视频进行转播 比如将国外的直播转到国内B站播放, 那么FFmpeg
也可以实现, 指令如下:
1 | ffmpeg -re -stream_loop -1 -i 视频网络地址 -c copy -f flv "推流地址" |
关于获取网络直播的m3u8地址
方法一 : 使用谷歌插件进行嗅探 比如猫抓
方法二 : 使用本地抓包工具 或者浏览器开发者工具拦截
方法三 : 使用命令行工具
以
youtube
直播为例 使用以下指令可以获取到该直播的m3u8
地址:1
yt-dlp -g https://www.youtube.com/live/ydYDqZQpim8?si=fFDeIHwOO5Xrf9qb
相关文章
本文为作者原创 转载时请注明出处 谢谢