如何在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. 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就安裝成功了!

1/5 - (1 vote)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *