日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FFmpeg:视频转码、剪切、合并、播放速调整

發布時間:2024/3/26 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FFmpeg:视频转码、剪切、合并、播放速调整 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝

去官網按提示安裝即可,支持三大操作系統。唯一要吐槽的是,Ubuntu 14.04 等較新的版本,從默認軟件列表里移除了 ffmpeg,轉而支持 libav,可是 libav 又沒弄好,很難用——開源社區瞎折騰起來真是無力吐槽。

2017 更新: Ubuntu 16.04,FFmpeg 又回到了官方倉庫:

sudo apt install ffmpeg

轉碼

最簡單命令如下:

ffmpeg -i out.ogv -vcodec h264 out.mp4 ffmpeg -i out.ogv -vcodec mpeg4 out.mp4 ffmpeg -i out.ogv -vcodec libxvid out.mp4 ffmpeg -i out.mp4 -vcodec wmv1 out.wmv ffmpeg -i out.mp4 -vcodec wmv2 out.wmv

-i 后面是輸入文件名。-vcodec 后面是編碼格式,h264 最佳,但 Windows 系統默認不安裝。如果是要插入 ppt 的視頻,選擇 wmv1 或 wmv2 基本上萬無一失。

附加選項:-r 指定幀率,-s 指定分辨率,-b 指定比特率;于此同時可以對聲道進行轉碼,-acodec 指定音頻編碼,-ab 指定音頻比特率,-ac 指定聲道數,例如

ffmpeg -i out.ogv -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec libfaac -ab 48k -ac 2 out.mp4

剪切

用 -ss 和 -t 選項, 從第 30 秒開始,向后截取 10 秒的視頻,并保存:

ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0 output.wmv ffmpeg -i input.wmv -ss 30 -c copy -t 10 output.wmv

達成相同效果,也可以用 -ss 和 -to 選項, 從第 30 秒截取到第 40 秒:

ffmpeg -i input.wmv -ss 30 -c copy -to 40 output.wmv

值得注意的是,ffmpeg 為了加速,會使用關鍵幀技術, 所以有時剪切出來的結果在起止時間上未必準確。 通常來說,把 -ss 選項放在 -i 之前,會使用關鍵幀技術; 把 -ss 選項放在 -i 之后,則不使用關鍵幀技術。 如果要使用關鍵幀技術又要保留時間戳,可以加上 -copyts 選項:

ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4

參考:ffmpeg.org

合并

把兩個視頻文件合并成一個。

簡單地使用 concat demuxer,示例:

$ cat mylist.txt file '/path/to/file1' file '/path/to/file2' file '/path/to/file3'$ ffmpeg -f concat -i mylist.txt -c copy output

更多時候,由于輸入文件的多樣性,需要轉成中間格式再合成:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

參考:stackoverflow; ffmpeg.org。

調整播放速度

加速四倍:

ffmpeg -i TheOrigin.mp4 -vf "setpts=0.25*PTS" UpTheOrigin.mp4

四倍慢速:

ffmpeg -i TheOrigin.mp4 -vf "setpts=4*PTS" DownTheOrigin.mp4

FFmpeg精確時間截取視頻

簡介:
之前用到過FFmpeg截取過音頻和視頻發現,截取的視頻文件時間不是很準確,今天便系統的學習了一下FFmpeg截取視頻的知識

1.首先明確為什么FFmpeg截取的視頻時間點不精確?
造成這些問題的原因是ffmpeg無法seek到非關鍵幀上。

2.剪切方法:(非重新編碼)

ffmpeg -ss [start] -t [duration] -accurate_seek -i [in].mp4 -codec copy [out].mp4參數分析:--[start]起始時間--[duration]需要截取的時長--[in]輸入文件名--[out]輸出文件名親測:時間并不精確(我是在Linux下使用ffmpeg),另外這種方式會導致:如果視頻結尾不是關鍵幀,那么視頻最后就會出現一段空白。解決方法是: 加入[-avoid_negative_ts 1]ffmpeg -ss [start] -t [duration] -accurate_seek -i [in].mp4 -codec copy -avoid_negative_ts 1 [out].mp4

3.重新編碼進行剪切

ffmpeg -ss [start] -t [duration] -i [in].mp4 -c:v libx264 -c:a aac -strict experimental -b:a 98k [out].mp4

相對來說比較精確,可是還是不是特別精確,,什么原因呢?望有人解答


FFmpeg的使用及常用參數

一.下載:

官網:http://ffmpeg.org/

二.demo:

class Program{static void Main(string[] args){string srcFileName = @"F:\資料\Demo\FFmpeg_Demo\videoold\PROMO.wmv";string destFileName = @"F:\資料\Demo\FFmpeg_Demo\videonew\PROMO.mp4";Process p = new Process();p.StartInfo.FileName = @"F:\資料\Demo\FFmpeg_Demo\mencoder\ffmpeg.exe";p.StartInfo.UseShellExecute = false;p.StartInfo.Arguments = "-i " + srcFileName + GenerateDefaultSetting() + destFileName;p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardError = true;//把外部程序錯誤輸出寫到StandardError流中p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);p.Start();p.BeginErrorReadLine();//開始異步讀取p.WaitForExit();//阻塞等待進程結束p.Close();//關閉進程p.Dispose();//釋放資源Console.WriteLine("ok");Console.ReadKey();}private static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e){Console.WriteLine(e.Data);}private static void p_OutputDataReceived(object sender, DataReceivedEventArgs e){Console.WriteLine(e.Data);}private static string GenerateDefaultSetting(){string setting = string.Empty;setting += " -y ";//setting += " -b 800 ";//-b大于0就模糊【?】setting += " -ab 56 ";setting += " -ar 22050 ";setting += " -qscale 4 ";setting += " -r " + 29.970;setting += " -ac 2 ";setting += " -s " + 640 + "x" + 480 + " ";return setting;}}

三.ffmpeg各種視頻處理:(注意參數順序)

1.視頻轉換:

avi-------------------------->flv

ffmpeg -i file.avi output.flv

MPEG-1--------------->MPEG-4

ffmpeg -i inputfile.mpg -f mp4 -acodec libfaac -vcodec mpeg4 -b 256k -ab 64k outputfile.mp4

MP3------------------->MPEG-4

ffmpeg -i inputfile.mp3 -f mp4 -acodec libaac -vn -ab 64k outputfile.mp4

DVD的VOB---------->VideoCD格式的MPEG-1

ffmpeg -i inputfile.vob -f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k outputfile.mpg

AVI------------------->H.264格式的M4V

ffmpeg -i inputfile.avi -f mp4 -acodec libfaac -vcodec libx264 -b 512k -ab 320k outputfile.m4v

任何------------------->東芝REGZA可辨識的MPEG2

ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg

2.音頻視頻合并:ok

ffmpeg -i input1.avi -i input2.mp3 -vcodec copy -acodec copy out.avi

3.拆分音頻視頻:ok

提取音頻:

ffmpeg -i input.flv -vn -acodec copy out.mp3

提取視頻:

ffmpeg -i input.flv -an -vcodec copy out.flv okffmpeg -i input.flv out.flv -an -vcodec copy error------->注意參數順序

音視頻都提取:

ffmpeg -i input.flv -an out1.flv -vn out2.mp3

4.提取圖片:ok

ffmpeg -i input.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 out.jpg

5.壓縮文件:ok

ffmpeg -i input.mp3 -ab 128 out.mp3

6.截取指定的時間間隔的視頻:ok

ffmpeg -ss 00:00:10 -t 00:01:22 -i 五月天-突然好想你.mp3 out.mp3

7.屏幕錄像:

ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 wheer.avi ffmpeg -f x11grab -s 320x240 -r 10 -i :0.0+100+200 wheer.aviffmpeg -f x11grab -s xga -qscale 5 -r 10 -i :0.0+0+0 wheer.avi

8.屏幕錄像,同時錄音:

ffmpeg -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 output.mkvffmpeg -ac 2 -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv

9.屏幕錄像,指定窗口:

10.視頻連接:

ffmpeg -i input1.avi -i input2.avi output.avi -vcodec copy -acodec copy

11.分割視頻:ok

ffmpeg -ss 01:00:00 -i input.mp4 -vcodec copy -acodec copy -t 00:06:00 out.mp4

四.參數:

1.常用參數:

-ab bitrate 設置音頻碼率-acodec codec 使用codec編解碼-ac channels 設置通道,缺省為1-ar freq 設置音頻采樣率-r fps 設置幀頻,缺省25-b bitrate 設置比特率,缺省200kb/s -qscale 6或4 使用動態碼率來設置-vcodec libx264 這個應該是個編碼設置,網上查到 libx264.dll

2.更多參數:
參考百度百科
參考官網

總結

以上是生活随笔為你收集整理的FFmpeg:视频转码、剪切、合并、播放速调整的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。