FFmpeg 常見功能使用之格式轉換與查看

1、利用 ffplay 查看YUV數據包括視頻或者圖片

ffplay [-f rawvideo] -video_size 640x480 test.yuv

注:
(1)-f rawvideo 經測試,此選項可加可不加。
(2)yuv 文件不包含寬高數據所以必須用 -video_size widthxheight 指定寬和高。
(3)test.yuv 可以是一幀(圖片)或者多幀(視頻)數據。

多輸入多輸出流處理

當我們想要對同時獲取到的不同的輸入流進行不同的操作時,可以使用-map來進行輸入和輸出之間的映射,即指定某個輸入對應某個輸出,中間的過程只對指定的輸入進行。

如下例所示,將四個輸入流分別保存下來。

ffmpeg -i /dev/video0 -i /dev/video1 -i /dev/video2 -i /dev/video3 \
-map 0:v -vcodec libx264 -vb 50M -vframes 500 -y result_test/out_v0.mp4 \
-map 1:v -vcodec libx264 -vb 50M -vframes 500 -y result_test/out_v1.mp4 \
-map 2:v -vcodec libx264 -vb 50M -vframes 500 -y result_test/out_v2.mp4 \
-map 3:v -vcodec libx264 -vb 50M -vframes 500 -y result_test/out_v3.mp4

2、使用 FFmpeg 將 MOV 轉爲 MP4

將 MOV 格式轉爲 MP4 格式並獲得極高質量的一種方法是在重新編碼時使用 CRF 參數。

ffmpeg -i input.mov -vcodec libx264 -crf 18  -acodec aac -b:a 128K -movflags +faststart output.mp4

參數解析

  • -vcodec libx264 將 H.264/AVC 編解碼器的視頻編解碼器設置爲 libx264
  • -crf 18 將 CRF 值設置爲 18
  • -acodec aac 將音頻編碼器設置爲AAC
  • -b:v 2M-b:a 128K 表示將視頻和音頻比特率分別指定爲2M和128k。
  • -movflags +faststart 設置FFmpeg的特定標誌。+faststart 標誌會重新排列 MP4 文件的元數據,以便在線流式傳輸時可以在完全下載之前開始播放。

3、視頻加速

ffmpeg -i input.mp4 -an -filter:v "setpts=0.5*PTS" output.mp4
  • 調整速度倍率範圍[0.25, 4]
  • 只調整視頻,可以把音頻禁掉,節省開銷
  • 對視頻加速時,如果不想丟幀,可以添加-r參數指定幀率。

4、MOV轉換成gif

ffmpeg -i input.mov -vf "scale=360:-1" -r 15 -b:v 512K output.gif

上述兩個功能組合使用,可以通過filter_complex選項來進行

ffmpeg -i input.mov -an -filter_complex "[0:v]setpts=0.4*PTS[res];[res]scale=720:-1" -r 15 -b:v 3M -y output.gif

5、WEBM格式轉換成MP4

ubuntu系統通過ctrl-shift-alt-r快捷鍵錄製的視頻,默認保存成WEBM格式的視頻文件,編碼格式是VP8。
如果我們像使用ffmpeg將其轉換成mp4格式,可以使用如下指令

ffmpeg -i vp8_record_test.webm -vcodec libx264 -crf 18 -an -y record_test.mp4
  • crf 當用H.264編碼視頻時,可以通過固定碼率因子(Constant Rate Factor)來控制視頻質量,取值範圍是[0-51],0代表無損,默認值是23,值越小視頻質量越好。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章