FFmpeg生成測試元數(shù)據(jù)
FFmpeg不但可以處理音視頻文件,還可以生成音視頻文件,可以通過lavfi設備虛擬音視頻源數(shù)據(jù)。
1、FFmpeg生成音視頻測試流
在FFmpeg中,可以通過lavfi虛擬音頻源的abuffer、aevalsrc、anullsrc、flite、anoisesrc、sinc濾鏡生成音頻流。
ffmpeg -re -f lavfi -i abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo -acodec aac -y output.aac
命令行執(zhí)行后,F(xiàn)Fmpeg會根據(jù)lavfi設備輸入的abuffer中定義的采樣率、格式、聲道布局,通過AAC編碼,生成AAC音頻文件。
ffmpeg -re -f lavfi "aevalsrc=sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC" -acodec aac output.aac
命令行執(zhí)行后,音頻為使用aevalsrc生成的雙通道音頻,輸出為output.aac。
也可以anullsrc、flite、anoisesrc、sinc虛擬輸入的音頻設備生成音頻流,與以上的abuffer、aevalsrc兩種輸入類似。
2、FFmpeg生成視頻測試流
在使用FFmpeg測試流媒體時,如果沒有輸入文件,則可以通過FFmpeg虛擬設備虛擬出來一個輸入視頻流,可以通過FFmpeg模擬多種視頻源:allrgb、allyuv、color、haldclutsrc、nullsrc、rgbtestsrc、smptebars、smptehdbars、testsrc、testsrc2、yuvtestsrc。
舉例如下:
ffmpeg -re -f lavfi -i testsrc=duration=5.3:size=qcif:rate=25 -vcodec libx264 -r:v 25 output.mp4
命令行執(zhí)行后,F(xiàn)Fmpeg會根據(jù)testsrc生成長度為5.3秒、圖像大小為QCIF分辨率、幀率為25fps的視頻圖像數(shù)據(jù),并編碼成H.264,然后輸出output.mp4視頻文件。

ffmpeg -re -f lavfi -i testsrc2=duration=5.3:size=qcif:rate=25 -vcodec libx264 -r:v 25 output.mp4
命令行執(zhí)行后,會根據(jù)testsrc2生成一個視頻圖像內容,其他參數(shù)與testsrc相同。

ffmpeg -re -f lavfi -i color=c=red@0.2:s=qcif:r=25 -vcodec libx264 -r:v 25 output.mp4
命令行執(zhí)行后,會使用color作為視頻源,圖像內容為純紅色,編碼為H.264。

ffmpeg -re -f lavfi -i "nullsrc=s=256x256,geq=random(1)*255:128:128" -vcodec libx264 -r:v 25 output.mp4
命令行執(zhí)行后,會使用nullsrc作為視頻源,寬高為256x256,數(shù)據(jù)為隨機雪花樣。
