2021年6月25日 星期五

FFmpeg命令的幾種應用

FFmpeg的下載與安裝

FFmpeg是開源的。但我們不必去下載它的源代碼。下載已經編譯好的exe/dll即可。可以到http://www.ffmpeg.org/download.html,然後點擊“Windows Builds”,再根據你當前的機器是32位還是64位來決定下載哪個包。我的機器跑的是Win 7,所以我選擇了“Download FFmpeg git-7c210c4 64-bit Shared”。如果你英文不好,也可以直接去我的網盤下載:http://pan.baidu.com/s/1jGgOomy


下載完成之後,解壓到硬盤上,假設路徑為E:\OpenSrc。啟動一個控制台程序,然後執行DOS命令進入FFmpeg工具的bin目錄,如下:

應用場景1:格式轉換

我想把用iPhone拍的.MOV文件轉成.avi文件。最簡單了,可以​​執行下面的命令:

ffmpeg -i D:\Media\IMG_0873.MOV D:\Media\output.avi

意思是,把D:\Media目錄下的源文件IMG_0873.MOV(視頻:h.264,音頻:aac)轉換成output.avi(編碼格式自動選擇為:視頻mpeg4,音頻mp3),目標文件仍然保存到D:\Media目錄下。問題來了:我想自己指定編碼格式,怎麼辦呢?一種方法是,通過目標文件的擴展名(.flv、.mpg、.mp4、.wmv等)來控制,比如:

ffmpeg -i D:\Media\IMG_0873.MOV D:\Media\output2 .flv

另一種方法是通過-c:v參數來控制,比如我想輸出的視頻格式是H.265(警告:編碼時間會比較長哦)。命令行如下:

ffmpeg -i D:\Media\IMG_0873.MOV -c:v libx265 D:\Media\output265.avi

注:可以先用ffmpeg -encoders命令查看一下所有可選的編碼格式。

不再深究了,我們繼續。我發現源文件的圖像幀尺寸是1920x 1080,我不需要這麼大——能有720 x 480就夠了。於是,就要用上-s參數了。為了保證圖像縮放後的質量,最好加上碼率參數-b:v。如下:

ffmpeg -i D:\Media\IMG_0873.MOV -s 720x480 -b:v 1500k D:\Media\output2.avi

還可以更簡單一點,使用-target參數匹配行業標準,參數值可以是vcd、svcd、dvd、dv、dv50等,可能還需要加上電視制式作為前綴(pal-、ntsc-或film-)。如下:

ffmpeg -i D:\Media\IMG_0873.MOV -target pal-dvd D:\Media\output2dvd.avi

又來一個問題:我發現用手機拍的視頻中,有些是顛倒的,我想讓它順時針旋轉90度。這時候,可以使用-vf參數加入一個過濾器,如下:

ffmpeg -i D:\Media\IMG_0873.MOV -vf "rotate=90*PI/180" D:\Media\output3.avi

注:如果想逆時針旋轉90度,90前面加個負號就可以了。

如果我只需要從源視頻裡截取一小段,怎麼辦呢?比如從第2秒的地方開始,往後截取10秒鐘。命令行可以這樣:

ffmpeg -ss 2 -t 10 -i D:\Media\IMG_0873.MOV D:\Media\output4.avi

注:這種情況下,-ss和-t參數必須放在-i前面,表示是限定後面跟著的輸入文件的。

應用場景2:視頻合成

我發現,用手機拍的視頻有時候背景噪音比較大。怎麼把噪音去掉,換成一段美妙的音樂呢?使用FFmpeg也能輕易做到。

第一步:把源文件裡的音頻去掉,生成一個臨時文件tmp.mov

ffmpeg -i D:\Media\IMG_0873.MOV -vcodec copy -an D:\Media\tmp.mov

注: -vcodeccopy的意思是對源視頻不解碼,直接拷貝到目標文件;-an的意思是將源文件裡的音頻丟棄。

第二步:把這個無聲的視頻文件(tmp.mov)與一個音樂文件(music.mp3)合成,最終生成output.mov

ffmpeg -i D:\Media\tmp.mov -ss 30 -t 52 -i D:\Media\music.mp3 -vcodec copy D:\Media\output5.avi

為了保證良好的合成效果,音樂時長必須匹配視頻時長。這裡我們事先知道視頻時長為52秒,於是截取music.mp3文件的第30秒往後的52秒與視頻合成。另外,為了保證音頻時長截取的準確性,我們這裡沒有使用-acodec copy,而是讓音頻重新轉碼。

還有一種情況:我們希望在一段視頻上疊加一張圖片。可以簡單實現如下:

ffmpeg -i D:\Media\IMG_0873.MOV -i D:\Media\logo.png -filter_complex 'overlay' D:\Media\output6.avi

應用場景3:視頻播放

格式轉換或合成之後,我們需要試著播放一下。播放器的選擇很多。這裡順手用ffplay工具也行:

ffplay -i D:\Media\output6.avi

應用場景4:獲取視頻信息

有時候,我只是想看看這個視頻文件的格式信息。可以用ffprobe工具:

ffprobe -i D:\Media\IMG_0873.MOV

其他應用

FFmpeg的功能非常強大。關鍵是要理解各種參數的意義,並且巧妙搭配。必要的話,就把在線文檔完整讀一遍吧:http://www.ffmpeg.org/ffmpeg.html

轉載自:https://blog.csdn.net/happydeer/article/details/42193031

版權聲明:本文為博主原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/baidu_38172402/article/details/82775105 


沒有留言: