在實際工作中,通常需要ffmpeg作為工具來驗證一個問題,比如播放一個視頻,提取一個碼流,轉碼視頻,轉封格式等,用的時候才發現忘記了相關命令,Google一番花老大的力氣才找到自己需要的命令行。本文總結常用的命令,並演示如何通過命令行的help用法去構建新的命令。
常用命令總結
一.採集命令
列出攝像頭設備
ffmpeg -list_devicestrue -f dshow -i dummy
列出某一個攝像頭的能力
ffmpeg -list_optionstrue -f dshow -i video=「Integrated Camera」
指定格式播放某一個設備
ffplay -video_size 640x480 -pixel_formatyuyv422 -framerate "30" -f dshow -i video="IntegratedCamera"
錄屏命令
ffmpeg -y -f gdigrab -t 30 -r 25 -i desktop -vcodeclibx264 -s 1280x720 test720.mp4
詳見:https://www.jianshu.com/p/601757bd053b
二.提取視頻或音頻裸流
ffmpeg.exe -i CCTV-2-dszg-1.mp4 -vn -y -acodec copyaudio.aac //提取音頻
ffmpeg.exe -i CCTV-2-dszg-1.mp4 -an -y -acodec copyvideo.h264 //提取視頻
三.轉碼和轉封
轉碼:
ffmpeg -i test_1920x1080.mp4-acodec copy -vcodec libx264 -s 1280x720 test_1280x720.ts
轉封
ffmpeg -i test_1920x1080.mp4-acodec copy -vcodec copy -s 1280x720 test_1920x1080.flv
四.播放
播放編碼後或封裝後的數據
ffplay –x 800 –y 400test.mp4 –autoexit
強制某個解碼器解碼
ffplay -vcodech264_qsv -i test.h264
播放原始數據
查看格式
ffplay -pix_fmts
播放RGB
ffplay -x 800 -y 400 -pixel_format bgra -video_size 1366x768 -irgb24_320x240.rgb
播放YUV
ffplay -x 800 -y 400 -pixel_format yuv420p -video_size 1366x768 -i capture.yuv
播放AAC
ffplay -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
播放網絡流
ffplay –x 800 –y400 url
五.提取原始數據
提取YUV
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv
提取RGB
ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb
提取PCM
ffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le48000_2_f32le_2.pcm
help 查詢
1基本的help查詢,可以重定向文件再查看
ffmpeg/ffplay/ffprobe–h
ffmpeg -h long
ffmpeg -h full
2.查看某個一個類型支持的能力
如查看支持編解碼器
ffmpeg -codecs
查看所支持的復用器
ffmpeg -muxers等
3.查看具體類型所支持的參數
基本格式:ffmpeg -h type=xxx
舉例如下:
ffmpeg-h encoder=libx264
ffmpeg-h filter=atempo
後續在工作和學習中如遇到新的需求,該命令行會繼續擴充。