FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。
许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
下载 打开官网地址,进入下载页:https://ffmpeg.org/download.html#build-linux
1 wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
解压 下载完成后,可以看到下载完成的文件后缀名为 .tar.xz ,执行对应解压命令解压文件:
1 xz -d ffmpeg-git-amd64-static.tar.xz
经过一次解压,.xz 后缀名已经被去掉。接下来执行:
1 tar -xvf ffmpeg-git-amd64-static.tar
解压完成后进入解压目录ffmpeg-git-[date]-amd64-static/:ffmpeg 和 ffprobe 都在这里。 在当前安装目录下执行 ./ffmpeg 命令,即可查看当前FFmpeg版本信息。 当然,倘若希望ffmpeg命令全局可用,可以在bin目录加个链接。比如,分别执行如下命令,即可在:/usr/bin目录下创建ffmpeg和ffprobe软链接。
1 2 3 4 cd /usr/bin ln -s /home/ffmpeg-git-20191127-amd64-static/ffmpeg ffmpeg ln -s /home/ffmpeg-git-20191127-amd64-static/ffprobe ffprobe
配置 编写Shell脚本,与此同时获取目标直播间的RTMP推流地址。
1 2 3 4 5 # !/bin/bash while true do ffmpeg -re -f concat -safe 0 -i /home/video/mylist.txt -vcodec copy -acodec aac -b:a 192k -f flv "rtmp://*******" done
其中mylist.txt文件内容格式应当如下:
1 2 3 4 5 6 7 8 9 10 11 # 在Notepad++编码格式应为UTF-8无BOM编码 file 'WGP_New_01.mkv' file 'WGP_New_02.mkv' file 'WGP_New_03.mkv' file 'WGP_New_04.mkv' file 'WGP_New_05.mkv' file 'WGP_New_06.mkv' file 'WGP_New_07.mkv' file 'WGP_New_08.mkv' file 'WGP_New_09.mkv' file 'WGP_New_10.mkv'
或者单个文件推流,命令如下。
1 2 ffmpeg -re -i /home/video/**.mp4 -vcodec copy -acodec aac -b:a 192k -f flv "rtmp://********" # "rtmp://********" 格式为该直播间rtmp地址/直播码
关于Linux中后台程序运行Screen的命令:
1 2 3 4 5 screen -S video //初始化名为video的screen screen -X -S [num] quit //退出[num]的screen screen -ls //列出当前后台所有正在运行的screen kill [num] //杀掉screen CRTL A+D //后台运行当前screen
参数 1 2 3 4 5 6 -re 按照视频的FPS进行推流,必要参数。 -i 后加视频路径,也可以是网络上的视频地址 -vcodec copy 指定视频编码为复制。 -acodec aac 音频使用aac编码。后面的-b:a 192k则是指定码率。 -f flv 指定输出格式,这个必须是flv才能推到直播服务器,后接直播地址。 -i 指定的输入文件并不一定是本地文件,可以是网络视频流,甚至可以是.m3u8文件。
文末尾,附上一款SOCKS代理软件Proxifier ,或许能解决某些系统级的代理问题(例如:OBS推流到Twitch)。