FFmpeg 常用命令DEMO

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 -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轉錄網絡直播流
  • 把文件當做直播推送至服務器 (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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章