如何在CentOS 8 / RHEL 8上安装FFmpeg

如何在CentOS 8 / RHEL 8 Linux系统上安装FFmpeg?FFmpeg是一个免费的开源多媒体框架,用于播放,编码,解码,流式传输,转码,多路复用,多路复用和过滤各种格式的多媒体文件,包括MPEG1音频和视频,MPEG4,h263,ac3,asf,avi,real, mjpeg和Flash。

如何在CentOS 8 / RHEL 8 系统上安装?FFmpeg是一个免费的开源多媒体框架,用于播放,编码,解码,流式传输,转码,多路复用,多路复用和过滤各种格式的多媒体文件,包括MPEG1音频和视频,MPEG4,h263,ac3,asf,avi,real, mjpeg和Flash。
FFmpeg是一个跨平台应用程序,可以在各种构建环境,配置和机器架构下的Linux,macOS,Windows,BSD,Solaris等上运行。大多数可用于Linux的媒体播放器以及音频/视频下载器和转换器(例如youtube-dl)都需要FFmpeg才能工作。
FFmpeg工具
这些是FFmpeg的主要构建基块:
ffmpeg –用于在格式之间转换多媒体文件的命令行工具
ffplay –基于SDL和FFmpeg库的简单媒体播放器
ffprobe –简单的多媒体流分析仪
FFmpeg还包含开发人员库– libavutil,libavcodec,libavformat,libavdevice,libavfilter,libswscale和libswresample。
ffmpeg 下图描述了每个输出的转码过程 :

如何在CentOS 8 / RHEL 8上安装FFmpeg
在CentOS 8 / RHEL 8 Linux上安装FFmpeg之前,确保系统环境已经配置完全。
安装RPMfusion Yum存储库
创建RPM Fusion数据源是为了提供Fedora和基于Red Hat的发行版未提供的软件。该数据源中可用的软件应用程序均以预编译的RPM文件的形式提供。下面将使用RPMfusion数据源在CentOS 8 / RHEL 8上安装FFmpeg。
在安装RPM Fusion数据源之前,需要在系统上安装EPEL数据源。

sudo dnf -y install https://download.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
sudo dnf install --nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

在CentOS 8 / RHEL 8 Linux上安装FFmpeg
添加EPEL和RPM Fusion存储库后,在终端中运行以下命令以在CentOS 8 / RHEL 8 Linux系统上安装FFmpeg。

sudo dnf install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm
sudo dnf install ffmpeg
sudo dnf -y install ffmpeg-devel

使用以下命令检查RHEL / CentOS系统上安装的FFmpeg版本。

rpm -qi ffmpeg
ffmpeg -version


命令
1:录制视频:


-f:指定从使用mac的avfoundation采集数据。

-i:就是input,输入流,后面的1是设备编号,表示屏幕(录屏)

i处理输入流)。

-r:指定帧率,一般来说25帧就比较流畅,15帧就勉强够用了。

out.yuv:采集后的数据保存成yuv格式,这是一种原始格式的数据,比较大。

ffmpeg -f avfoundation -i 1 -r 30 out.yuv

播放视频:


-s 指定分辨率

-pix_fmt 指定原始视频格式

ffplay -s 2560*1600 -pix_fmt uyvy422

采集音频


冒号之前代表视频设备,冒号之后就代表音频设备

ffmpeg -f avfoundation -i :1 out.wav

播放音频


这里由于是有格式的音频数据,直接播放就可以了。

ffplay out.wav

2:分解与复用
用于更换多媒体数据的格式(封装格式)
解复用 - 本质是音视频数据的分离。
复用 - 将音视频数据重新封装。
转换音视频格式


-vcodec 视频解复用

-acodec 音频解复用

copy 表示不更改变解复用后的编码格式,完全copy

ffmpeg -i test.mp4 -vcodec copy -acodec copy out.flv

提取视频流


-an 表示不要音频流

ffmpeg -i test.mp4 -an -vcodec copy out.h264

提取音频流

ffmpeg -i test.mp4 -acodec copy -vn out.h264

3:处理原始数据
提取视频原数据


-c:v 对视频进行解码,使用的编解码器是 rawvideo

-pix_fmt 每一帧图像编码为 yuv 4:2:0

ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

播放视频原数据
提取音频原数据


-ar 即 audio read,音频采样率为44100

-ac 即 audio channel,声道,ac2表示双声道

-f 抽取出的音频pcm数据的格式,s16le s表示有符号,16位,le-little end 表示小头。

ffmpeg -i out.mp4 -vn -ar 44100 ac 2 -f s16le out.pcm

播放音频原数据

ffplay -ar 44100 -ac 2 -f s16le out.pcm

4:滤镜命令


-vf 指定滤镜

crop,一个滤镜的名字,=后面是参数,in_w 表示宽度减少200,in_h表示高度减少200

-c:v 指定使用的编解码器,前面有说过

-c:a copy 不对音频做处理

ffmpeg -i test.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

5:ffmpeg 裁剪与合并命令
裁剪:


-ss 裁剪的时间点

-t 裁剪的时长,以秒为单位

ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

合并:


-f concat 表示要对后面的文件进行拼接

-i 指定输入文件,inputs.txt 中是一个文件列表,指定了要拼接的视频

out.flv 输出

ffmpeg -f concat -i inputs.txt out.flv

其中,inputs.txt中文件的格式为

file '1.mp4'
file '2.mp4'

加上copy,会使用当前的编码方式,不会执行解码的流程,速度更快:

ffmpeg -f concat -i files.txt -c copy output.mp4

6:图片与视频互转命令
视频转图片


-r 1 表示一秒钟转一张图片

-f 指定转出文件格式,这里为image2

image-%3d.jpeg 表示图片名,%3d表示图片编号由3个数字组成。

ffmpeg -i in.flv -r 1 -f image2 image-%3.jpeg

图片转视频

ffmpeg -i image-%3d.jpeg out.mp4

7:直播推/拉流
直播推流

#-c 音视频编解码,-a是音频编解码 -v是视频编解码
#-f 指定格式
#-re 表示帧率和真正的帧率保持同步 ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

直播拉流

ffmpeg -i rtmp://server/live.streamName -c copy dump.flv

更多操作方法可以查看帮助。或者浏览FFmpeg官方文档

ffmpeg --help

好了到这里FFmpeg就安装成功了!

评分

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注