ffmpeg和ffplay常用指令
FFmpeg 常見用法
1. 基本命令結構
ffmpeg [global_options] -i input_file [input_options] output_file [output_options]
2. 將其它格式圖片轉換為 YUV420p
ffmpeg -i input.jpg -pix_fmt yuv420p output.yuv
-i input.jpg: 指定輸入文件input.jpg。-pix_fmt yuv420p: 指定輸出文件的像素格式為 YUV420p。output.yuv: 指定輸出文件名為output.yuv。
3. 將視頻幀提取并保存為 YUV420p 圖片
ffmpeg -i input.mp4 -vf "select=eq(n\,100)" -pix_fmt yuv420p -vsync vfr frame_100.yuv
-i input.mp4: 指定輸入視頻文件input.mp4。-vf "select=eq(n\,100)": 使用濾鏡選取第 100 幀。-pix_fmt yuv420p: 指定輸出文件的像素格式為 YUV420p。-vsync vfr: 使用可變幀率模式。frame_100.yuv: 指定輸出文件名為frame_100.yuv。
4. 將 YUV420p 圖片轉換為其他格式
ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv output.png
-s 1920x1080: 指定輸入文件的分辨率。-pix_fmt yuv420p: 指定輸入文件的像素格式為 YUV420p。-i input.yuv: 指定輸入文件input.yuv。output.png: 指定輸出文件名為output.png。
5. 從視頻中提取所有幀并保存為 YUV420p 圖片
ffmpeg -i input.mp4 -vf "fps=1" -pix_fmt yuv420p frame_%04d.yuv
-i input.mp4: 指定輸入視頻文件input.mp4。-vf "fps=1": 每秒提取一幀。-pix_fmt yuv420p: 指定輸出文件的像素格式為 YUV420p。frame_%04d.yuv: 指定輸出文件名格式(如frame_0001.yuv,frame_0002.yuv)。
6. 將 YUV420p 圖片制作成視頻
ffmpeg -f rawvideo -pix_fmt yuv420p -s 1920x1080 -r 30 -i frame_%04d.yuv -c:v libx264 output.mp4
-f rawvideo: 指定輸入文件格式為原始視頻。-pix_fmt yuv420p: 指定輸入文件的像素格式為 YUV420p。-s 1920x1080: 指定輸入文件的分辨率。-r 30: 指定幀率為 30 fps。-i frame_%04d.yuv: 指定輸入文件名格式。-c:v libx264: 指定視頻編解碼器為 H.264。output.mp4: 指定輸出文件名為output.mp4。
7. 調整 YUV420p 圖片的分辨率
將 YUV420p 圖片從 1920x1080 縮放到 1280x720:
ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -vf scale=1280:720 -pix_fmt yuv420p output.yuv
-s 1920x1080: 指定輸入文件的分辨率。-pix_fmt yuv420p: 指定輸入文件的像素格式為 YUV420p。-i input.yuv: 指定輸入文件input.yuv。-vf scale=1280:720: 使用縮放濾鏡將分辨率調整為 1280x720。output.yuv: 指定輸出文件名為output.yuv。
8. 裁剪 YUV420p 圖片
ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -vf "crop=1280:720" -pix_fmt yuv420p output.yuv
-s 1920x1080: 指定輸入文件的分辨率。-pix_fmt yuv420p: 指定輸入文件的像素格式為 YUV420p。-i input.yuv: 指定輸入文件input.yuv。-vf "crop=1280:720": 使用裁剪濾鏡裁剪到 1280x720 的區域。output.yuv: 指定輸出文件名為output.yuv。
FFplay 常見用法
1. 基本命令結構
ffplay [options] input_file
2. 播放 YUV420p 圖片
指定分辨率和像素格式:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 input.yuv
-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。-video_size 1920x1080: 指定輸入文件的分辨率。input.yuv: 指定輸入文件input.yuv。
3. 縮放 YUV420p 圖片
將 YUV420p 圖片縮放到 1366x768:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf scale=1366:768 input.yuv
-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。-video_size 1920x1080: 指定輸入文件的分辨率。-vf scale=1366:768: 使用縮放濾鏡將分辨率調整為 1366x768。input.yuv: 指定輸入文件input.yuv。
4. 循環播放 YUV420p 圖片
ffplay -loop 0 -f rawvideo -pixel_format yuv420p -video_size 1920x1080 input.yuv
-loop 0: 無限循環播放輸入文件。-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。-video_size 1920x1080: 指定輸入文件的分辨率。input.yuv: 指定輸入文件input.yuv。
5. 播放 YUV420p 圖片序列
播放以 frame_0001.yuv, frame_0002.yuv 等命名的圖片序列:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -i frame_%04d.yuv
-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。-video_size 1920x1080: 指定輸入文件的分辨率。-i frame_%04d.yuv: 指定輸入文件名格式。
6. 調整播放窗口大小
將播放窗口調整為 800x600:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -window_size 800x600 input.yuv
-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。- `-video
_size 1920x1080`: 指定輸入文件的分辨率。
-window_size 800x600: 指定播放窗口的大小。input.yuv: 指定輸入文件input.yuv。
FFmpeg 和 FFplay 的高級用法
1. 在 FFmpeg 中使用濾鏡處理 YUV420p 圖片
添加水印
在 YUV420p 圖片中添加 PNG 格式的水印:
ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -i watermark.png -filter_complex "overlay=10:10" -pix_fmt yuv420p output.yuv
-s 1920x1080: 指定輸入文件的分辨率。-pix_fmt yuv420p: 指定輸入文件的像素格式為 YUV420p。-i input.yuv: 指定輸入文件input.yuv。-i watermark.png: 指定水印圖片watermark.png。-filter_complex "overlay=10:10": 使用復雜濾鏡,在坐標 (10,10) 處添加水印。output.yuv: 指定輸出文件名為output.yuv。
調整亮度和對比度
調整 YUV420p 圖片的亮度和對比度:
ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -vf eq=brightness=0.06:contrast=1.5 -pix_fmt yuv420p output.yuv
-s 1920x1080: 指定輸入文件的分辨率。-pix_fmt yuv420p: 指定輸入文件的像素格式為 YUV420p。-i input.yuv: 指定輸入文件input.yuv。-vf eq=brightness=0.06:contrast=1.5: 使用 eq 濾鏡調整亮度和對比度。output.yuv: 指定輸出文件名為output.yuv。
2. 在 FFplay 中使用濾鏡播放 YUV420p 圖片
調整亮度和對比度
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf eq=brightness=0.06:contrast=1.5 input.yuv
-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。-video_size 1920x1080: 指定輸入文件的分辨率。-vf eq=brightness=0.06:contrast=1.5: 使用 eq 濾鏡調整亮度和對比度。input.yuv: 指定輸入文件input.yuv。
添加字幕
在播放 YUV420p 圖片時添加字幕(字幕文件為 subtitles.srt):
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf subtitles=subtitles.srt input.yuv
-f rawvideo: 指定輸入文件格式為原始視頻。-pixel_format yuv420p: 指定輸入文件的像素格式為 YUV420p。-video_size 1920x1080: 指定輸入文件的分辨率。-vf subtitles=subtitles.srt: 使用 subtitles 濾鏡添加字幕。input.yuv: 指定輸入文件input.yuv。
常見問題及解決方法
1. 無法播放 YUV420p 圖片
確保指定了正確的分辨率和像素格式:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 input.yuv
2. 圖像顯示不全
使用 -vf scale 選項調整圖像大小以適應屏幕分辨率:
ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf scale=1366:768 input.yuv
3. 視頻或圖片質量低
調整視頻或圖片的比特率或使用更高質量的編碼器:
ffmpeg -i input.mp4 -b:v 2000k output.mp4

浙公網安備 33010602011771號