升级服务器安装工具
sudo apt-get update
安装ffmpeg
sudo apt-get install ffmpeg
第三步:在winscp上登录云后将想要直播的文件传到云端(只要打开了22端口就可以用putty或winscp访问服务器,一般在阿里云的防火墙规则处设置端口)
设文件位置为/root/Vedio/BB1.mp4
ffmpeg -re -i "/root/Vedio/F2.flv" -vcodec copy -acodec aac -strict -2 -f flv "rtmp://txy.live-send.acg.tv/live-txy/?streamname=live_XXXXXX_XXXXXX"
其中
-i 后的/root/Vedio/F2.flv为服务器文件路径,也可以是其他直播的直播流m3u8地址
==-re 按照视频的FPS进行推流,如果不加这个参数的话……反正不行。
-acodec aac == 设置音频编码为aac
-vcodec copy 设定视频编码与原视频相同
最后 rtmp://txy.live-send.acg.tv/live-txy/?streamname=live_XXXXXXXXX
其中:rtmp://txy.live-send.acg.tv/live-txy/
以及:?streamname=live_XXXXXX_XXXXXXX&key=XXXXXXXXX
来自
B站直播间
B站实名认证后,选择好播放类型后,点击开始直播便会生成
在这个界面可以管理打开或关闭直播
注意:魔法上网工具需设置为直连或PAC
实名认证比较烦,但是为维护文明上网必不可少
假如视频不是x264格式会有警告,影响不大,想解决可以把原视频用Arctime或小丸工具箱转一下
https://blog.csdn.net/cai6811376/article/details/74783269
循环命令使用-stream_loop会出现
Option "-stream_loop" unrecognized
找到原因是因为 低版本Ubuntu无法识别循环命令来自 此网址
(注意,阿里云默认安装版本为,升级版本,这里直接依据这里的默认安装最高版本,查看Ubuntu内核版本)
参考;来自此网址
cat /etc/issue
升级系统版本,参考依据此Linux公社
sudo apt install update-manager-core
sudo do-release-upgrade
注意:
升级过程会遇到许多对话框,全部y然后enter,会有一个特殊对话框,上下键选择最上面一个即可
升级的最后一步需要restart重启,假如使用远程连接会断开一会
循环直播单个文件代码:
ffmpeg -re -stream_loop -1 -i "/root/Vedio/BB1.mp4" -vcodec copy -acodec aac -strict -2 -f flv "rtmp:XXXXXXXXXXX"
其中 -stream_loop -1便是让其可以循环推流的命令
升级Ubuntu教程可以参考
ffmpeg -i "http://cctvalih5ca.v.myalicdn.com/live/cctv2_2/index.m3u8" -c:v copy -c:a aac -b:a 320k -ar 44100 -strict -2 -f flv "rtmp://txXXXXX"
ffmpeg -ss 00:00:00 -i /root/Vedio/BB2.mp4 -c copy -t 00:23:31 output.mp4
其中:
-ss: 起始时间
注意: -ss要放在-i之前
-i: 要分割的是频文件
-t: 分割时长:格式如下
可以是-t xx -> xx秒
也可以是-t 01:00:00 -> 时:分:秒,且不是视频中的时刻,而是要向后截取多长的视频
举例
若一个视频需要分成 3 段,具体分割位置为视频中的 Start~01:17:55,01:17:55~02:06:50,02:06:50~End
则可以:
ffmpeg -ss 00:00:00 -i sample_Input.mp4 -c copy -t 01:17:55 sample_Output-part1.mp4 #Start~01:17:55
ffmpeg -ss 01:17:56 -i sample_Input.mp4 -c copy -t 00:48:57 sample_Output-part2.mp4 #01:17:55~02:06:50
ffmpeg -ss 02:06:55 -i sample_Input.mp4 -c copy -t 01:11:48 sample_Output-part3.mp4 #02:06:50~End
可以试试,速度很快
另外,想快速切割视频为多份可以使用BoilsoftVideoSplitter这个软件
5. 服务器中Screen使用
screen命令为Ubuntu内部自带,可以让服务器现在进行的进程在关闭远程连接后继续进行,比如你在新Screen里推流成功后,电脑关机离线了后,云服务器还可以继续推流
screen -S name
启动一个名字为name的screen
其实假如直接用字符‘name’系统会自动分配一个随机数字加.nsme,比如1122.name进程,想知道现在服务器的所有screen进程时,使用
screen -ls
需要关闭某screen时,使用
screen -S name -X quit
可以让服务器现在进程在关闭远程连接后继续进行,就是你在新Screen里推流成功后,电脑关机离线了后,云服务器还可以继续推流
下次打开服务器时,打开的screen进程时默认关闭的,想要打开需要用
screen -r name
6.进阶用法 多文件自动续播及自动循环播放
用bash命令与循环命令来实现,同时搭配Winspcp来写入文件
下面代码感谢@一只不愿透露姓名的猫:
while true
do
for i in ./*.mp4
do
ffmpeg -re -i "$i" -c copy -f flv "rtmp://txy.live-send.acg.tv/live-txy/?streamname=live_232670856_9449243&key=6c4e26928342b910be48404c7309bbc2"
done
done
用法:将代码复制后新建一个文本文档中,如txt结尾的文档,将代码粘贴到里面,用winscp传到需要直播的文件夹里后,例如文件名为tl.txt,
winscp用法
winscp是一款很方便的文件传输工具,轻松在本地与服务器之间传输文件
上图为新建对话以连接服务器
下图为软件界面
在用cd命令进入到所在文件夹后(例如绝对路径为/root/vedio/tl.txt)
cd /root/vedio/tl.txt
之后bash命令使得tl.txt中命令自动运行
bash tl.txt
—————————————————结束分割线—————————————————————
每一分我都当作是你十分的喜欢(❤ ω ❤)