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,值越小視頻質量越好。