环境:阿里云服务器ECS Ubuntu系统
目的:在服务器上使用FFmpeg将视频推流到B站进行直播。


步骤:

1. 安装FFmpeg和yasm

下载安装ffmpeg,官网下载地址:
http://ffmpeg.org/download.html
下载后上传解压
先不安装FFmpeg,因为还没有安装yasm
到官网下载yasm
http://yasm.tortall.net/Download.html
如下命令安装:

tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

安装完成后,回到FFmpeg文件夹中,继续安装。
如下命令安装:

./configure --enable-shared --prefix=/monchickey/ffmpeg
make
make install

编译过程较长,耐心等待。

2.链接配置

编译完成之后执行 cd /monchickey/ffmpeg/ 进入安装目录,查看一下发现有bin,include,lib,share这4个目录,其中bin是ffmpeg主程序二进制目录,include是C/C++头文件目录,lib是编译好的库文件目录,share是文档目录。

进入bin目录,执行 ./ffmpeg -version 查看当前版本的详细信息,默认情况下一般会报libavdevice.so.57: cannot open shared object file: No such file or directory,原因是lib目录未加载到链接到系统库中,系统ld目录列表在/etc/ld.so.conf中,打开文件会发现,里面引用了/etc/ld.so.conf.d/下面所有的.conf文件,比如mariadb-x86_64.conf我们只需要创建一个文件并写入lib路径即可,执行命令: vim /etc/ld.so.conf.d/ffmpeg.conf 然后添加一行内容: /monchickey/ffmpeg/lib 之后保存并退出,然后执行 ldconfig 使配置生效,现在再次执行 ./ffmpeg -version 显示就正常了。
(跟着一顿胡乱操作居然真的正常了…orz)

然而还需要把这个bin目录加到系统的链接库中:
方法:修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码

PATH=\$PATH:/monchickey/ffmpeg/bin
        export PATH

最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。

3.启动B站直播间获取直播码和rtmp地址

在B站的个人中心的开播设置中开启直播间,获取到rtmp地址和直播码,然后运行命令就可以开始直播啦:

ffmpeg -re -i "1.mp4" -vcodec copy -acodec aac -b:a 192k -f flv "你的rtmp地址/你的直播码"

其中
-i 后加视频路径,也可以是网络上的视频地址
-b:a 192k 表示码率
-f flv 表示推流使用格式,据说必须是这个flv格式


后记 : 跟着做完之后,虽然确实可以直播,但是却三步一卡着实蛋疼,修改码率也无效,反而会导致声音听起来像是在水下一样朦胧不清。由于我对视频的这些个格式规范都不了解,所以也无从下手解决。不过也可能是由于带宽太小的问题?用的是最低配的服务器所以带宽是1M。

参考文章:
Linux下安装ffmpeg
使用FFmpeg在B站直播的姿势