使用ffmpeg推流直播的正确姿势

前面写的Armbian教程(二)简单说明了利用ffmpeg推流到哔哩哔哩进行直播的方法,但是对于如何实现列表顺序播放和推流命令的意思没有详细的说明,这篇教程来进行讲解。
已经搭建好的直播间:https://live.bilibili.com/7123399

一、如何实现列表顺序播放

1、音频文件列表顺序播放

怎么把音频文件转换成视频在Armbian教程(二)里说了就不说了,下面说一下怎么让音频按照你想要的顺序播放:
1.把想要合并的mp3文件放到一个文件夹;
2.对mp3文件进行重命名,按照你想要的顺序在前面加上1、2、3……
3.按名称进行排序,然后合并成一个文件,如何合并成一个文件Armbian教程(二)里有教。

2、视频文件列表循环播放

2.1 首先新建一个文本文档,命名为mylist.txt。
2.2 编辑mylist.tx的内容,复制下列命令粘贴到mylist.txt里:

1
2
3
4
#使用同一编码器的文件可以使用这个命令
file '/path/to/file1.wav'
file '/path/to/file2.wav'
file '/path/to/file3.wav'

其中/path/to/为文件的路径,file1.wav为文件名和扩展名,有多少个视频文件,上面的列表就多少行。

2.3 新建一个文本文档,复制以下内容,粘贴至文本里:

1
2
3
4
5
#!/bin/bash
while true
do
ffmpeg -f concat -safe 0 -re -i "/path/to/mylist.txt" -vcodec copy -acodec aac -b:v 1500k -b:a 320k -r 60 -f flv "你的rtmp地址/你的直播码"
done

把文本文档重命名为live.sh

把前面创建的mylist.txt文件和live.sh文件放到视频文件同一目录下。

3、使用命令进行循环推流

输入下列命令进行推流:

1
2
#screen创建ffmpeg对话框
sudo screen -S ffmpeg
1
2
3
4
#切换至live.sh文件所在目录
cd /path/to/
#执行命令开始推流
sudo sh live.sh

如果报错执行:

1
2
#切换至live.sh和mylish.txt文件所在目录
cd /path/to/
1
2
#给文件提权
sudo chmod +x mylist.txt
1
2
#给文件提权
sudo chmod +x lish.sh

然后执行命令:

1
2
#执行命令开始推流
sudo sh live.sh

推流命令详解

1.其中screen -S ffmpeg,该命令主要是避免网络中断或是断开putty的情况下中断了命令的执行,它可以保证命令会在后台继续执行。
2.当回来时可以执行:

1
sudo screen -r ffmpeg

即可恢复到离开前创建的ffmpeg会话的工作界面。
3.如果忘记了,或者当时没有指定会话名,可以执行:

1
sudo screen -ls

screen会列出当前存在的会话列表。
4.执行:

1
exit

会提示:[screen is terminating],表示已经成功退出screen会话。

5.-re 代表按照帧率发送,否则ffmpeg会一股脑地按最高的效率发送数据

6.-stream_loop -1循环次数,-1表示无限循环

7.-i “发送文件路径”指定要发送的源文件

8.-vcodec copy 表示视频解码使用原有格式,如果报错可以修改类型,如使用-vcodec h264

9.-acodec aac 表示声音解码使用AAC格式,未设定时则使用与输入流相同的编解码器

10.#-b:v 1500k 指定视频码率为1500k,未设定时默认为200Kbit/s

11.#-b:a 320k 指定音频码率为320k

12.#-r 60 指定帧率为60帧/s,如果不写这个参数默认为25,要原视频支持60帧,否则意义不大,不影响推流

13.-f flv 设定输出格式为flv

14.”rtmp地址和直播码” 推流的目标地址

本教程参考以下文章:
晨旭的博客
简书:夕枫晚照
ffmpeg

liunx文件权限

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2023 XuanMing
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信