FFmpeg 常用命令DEMO
FFmpeg 常用命令DEMO
常用
- 爲了設定輸出視頻碼率爲64kbit/s:(碼率轉換很慢,尤其高碼率到低碼率,如:2312kbps=>1024kbps)
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
- 爲了切換幀率到24fps:
ffmpeg -i input.avi -r 24 output.avi
- 將輸入的1920x1080縮小到960x540輸出
ffmpeg -i ./test.mkv -vf scale=960:540 960_540.mp4
視頻
- FFmpeg concat 協議:
ffmpeg -i "concat:02.mp4|03.mp4" -c copy concat_output.mp4
- 視頻合併:
- 方法一:FFmpeg concat 協議(測試通過)
ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg
- 方法一:FFmpeg concat 協議
ffmpeg -i "concat:02.mp4|03.mp4" -c copy concat_output.mp4
- 方法一:FFmpeg concat 協議(測試通過)
音頻
- FFmpeg concat 協議 :
ffmpeg -i "concat:02.mp4|03.mp4" -c copy concat_output.mp4
複合流
-
第一路流的視頻:
ffmpeg -i ./0001.mp4 -i ./0002.mp4 -map 0:0 -c copy -y ./0001_video.mp4
-
第一路流的音頻:
ffmpeg -i ./0001.mp4 -i ./0002.mp4 -map 0:1 -c copy -y ./0001_video.mp4
-
第二路流的視頻:
ffmpeg -i ./0001.mp4 -i ./0002.mp4 -map 1:0 -c copy -y ./0001_video.mp4
-
第二路流的音頻:
ffmpeg -i ./0001.mp4 -i ./0002.mp4 -map 1:1 -c copy -y ./0001_video.mp4
-
第一路、第二路流的混合:
ffmpeg -i ./0001.mp4 -i ./0002.mp4 -map 0:0 -map 0:1 -map 1:0 -map 1:1 -c copy -y ./0001_0002_audio_video.mp4
攝像頭
- 直接抓取筆記本攝像頭視頻和音頻到本地存儲
ffmpeg -f dshow -i video="USB Camera":audio="麥克風 (Conexant SmartAudio HD)" -vcodec libx264 -acodec copy -preset:v ultrafast ./tinywan_computer_out.mpg
圖片流
- strfime選項允許你導出按時間/日期信息命名的文件 "%Y-%m-%d_%H-%M-%S" 模板
ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
- 每隔20秒截一張圖
ffmpeg -i input.flv -f image2 -vf fps=fps=1/20 out%d.png
- strfime選項允許你導出按時間/日期信息命名的文件 "%Y-%m-%d_%H-%M-%S" 模板
ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
- Gif圖片轉換MP4格式視頻
ffmpeg -i ./tinywanGif.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -f mp4 ./TinywanGifvideo.mp4
- 視頻添加圖片水印
- 單個圖片,測試成功
ffmpeg -i out.mpg -vf "movie=amailogo.png [watermark]; [in][watermark] overlay=10:10" tinywanVideologo.mp4
- 單個圖片,測試成功
RTSP
- 發送流到RTSP服務器
ffmpeg -rtsp_transport tcp -i "rtsp://192.168.18.240:554/onvif/live/1" -vcodec copy -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
ffmpeg -re -i /input.avi -f rtsp -muxdelay 0.1 rtsp://12.34.56.78:5545/abc
- 注意 :
如果是本地視頻,-re一定要加,代表按照幀率發送,否則ffmpeg會一股腦地按最高的效率發送數據
- 建議 :
如果拉取的是一個攝像頭的話,-re不要加
- 參數
-re
:按時間戳讀取文件(另外一種是直接讀取,文件被迅速讀完) - 參數
-vcodec copy
:要加,否則ffmpeg會重新編碼輸入流格式 - 參數
-rtsp_transport
:傳輸協議,默認UDP
- 注意 :
網絡流和本地流切換
- 使用FFmpeg轉錄網絡直播流
ffmpeg -i http://60.199.188.151/HLS/WG_ETTV-N/index.m3u8 d:\cap.mp4
:CPU消耗很大ffmpeg -i http://60.199.188.151/HLS/WG_ETTV-N/index.m3u8 -c:v copy -c:a copy -bsf:a aac_adtstoasc d:\cap.mp4
:CPU消耗很小
- 把文件當做直播推送至服務器 (RTMP + FLV)
ffmpeg - re -i demo.mp4 -c copy - f flv rtmp://w.gslb.letv/live/streamid
- 將直播的媒體保存到本地
ffmpeg -i rtmp://r.glsb.letv/live/streamid -c copy streamfile.flv
- 將一個直播流,視頻改用h264壓縮,音頻改用faac壓縮,送至另一個直播服務器
ffmpeg -i rtmp://r.glsb.letv/live/streamidA -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://w.glsb.letv/live/streamb
- 將一個高清流,複製爲幾個不同視頻清晰度的流重新發布,其中音頻不變
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
- 將直播的媒體保存到本地
ffmpeg -i rtmp://r.glsb.letv/live/streamid -c copy streamfile.flv