1. 程式人生 > >ffmpeg常用的命令

ffmpeg常用的命令

轉組播流
ffmpeg -re -i /media/1.mpg -r 1800  -c copy -f mpegts udp://239.1.1.1:7000
ffmpeg -re -i ./test.ts -vcodec copy -acodec copy -f mpegts udp://239.168.1.212:8888?pkt_size=1316


1.1. 傳送H.264裸流至組播地址
ffmpeg -re -i chunwan.h264 -vcodec copy -f h264 udp://233.233.233.223:6666 
ffmpeg -i big.mp4 -c:v libx264 -b:v 8000k -s 1920x1080 -c:a libfaac 100.mp4


1.分離視訊音訊流
ffmpeg -i input_file -vcodec copy -an output_file_video  //分離視訊流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分離音訊流


2.視訊解複用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264


3.視訊轉碼
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264              //轉碼為碼流原始檔案
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264  //轉碼為碼流原始檔案
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi            //轉碼為封裝檔案
//-bf B幀數目控制,-g 關鍵幀間隔控制,-s 解析度控制


4.視訊封裝
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file


5.視訊剪下
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg        //提取圖片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    //剪下視訊
//-r 提取影象的頻率,-ss 開始時間,-t 持續時間


6.視訊錄製
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi


7.YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv


8.YUV序列轉AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi


1,獲取視訊的資訊
   ffmpeg -i video.avi


2,將圖片序列合成視訊
   ffmpeg -f image2 -i image%d.jpg video.mpg
   上面的命令會把當前目錄下的圖片(名字如:image1.jpg, image2.jpg, 等...)合併成video.mpg


3,將視訊分解成圖片序列
   ffmpeg -i video.mpg image%d.jpg
   上面的命令會生成image1.jpg, image2.jpg, ...
   支援的圖片格式有:PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI


4,為視訊重新編碼以適合在iPod/iPhone上播放
   ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
   說明:
       * 源視訊:source_video.avi
       * 音訊編碼:aac
       * 音訊位率:128kb/s
       * 視訊編碼:mpeg4
       * 視訊位率:1200kb/s
       * 視訊尺寸:320 X 180
       * 生成的視訊:final_video.mp4


5,為視訊重新編碼以適合在PSP上播放
   ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
   說明:
       * 源視訊:source_video.avi
       * 音訊編碼:aac
       * 音訊位率:32kb/s
       * 視訊編碼:xvid
       * 視訊位率:1200kb/s
       * 視訊尺寸:320 X 180
       * 生成的視訊:final_video.mp4


6,從視訊抽出聲音,並存為Mp3
   ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
   說明:
       * 源視訊:source_video.avi
       * 音訊位率:192kb/s
       * 輸出格式:mp3
       * 生成的聲音:sound.mp3


7,將wav檔案轉成Mp3
   ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3


8,將.avi視訊轉成.mpg
   ffmpeg -i video_origine.avi video_finale.mpg


9,將.mpg轉成.avi
   ffmpeg -i video_origine.mpg video_finale.avi


10,將.avi轉成gif動畫(未壓縮)
   ffmpeg -i video_origine.avi gif_anime.gif


11,合成視訊和音訊
   ffmpeg -i son.wav -i video_origine.avi video_finale.mpg


12,將.avi轉成.flv
   ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv


13,將.avi轉成dv
   ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
   或者:
   ffmpeg -i video_origine.avi -target pal-dv video_finale.dv


14,將.avi壓縮成divx
   ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi


15,將Ogg Theora壓縮成Mpeg dvd
   ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg


16,將.avi壓縮成SVCD mpeg2
   NTSC格式:
      ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
   PAL格式:
      ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg


17,將.avi壓縮成VCD mpeg2
   NTSC格式:
      ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
   PAL格式:
      ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg


18,多通道編碼
   ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2


19,從flv提取mp3
   ffmpeg -i source.flv -ab 128k dest.mp3


1、將檔案當做直播送至live
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName


2、將直播媒體儲存至本地檔案
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv


3、將其中一個直播流,視訊改用h264壓縮,音訊不變,送至另外一個直播服務流
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
 
4、將其中一個直播流,視訊改用h264壓縮,音訊改用faac壓縮,送至另外一個直播服務流
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream


5、將其中一個直播流,視訊不變,音訊改用faac壓縮,送至另外一個直播服務流
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream


6、將一個高清流,複製為幾個不同視訊清晰度的流重新發布,其中音訊不變
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


7、功能一樣,只是採用-x264opts選項
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k


8、將當前攝像頭及音訊通過DSSHOW採集,視訊h264、音訊faac壓縮後釋出
ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name


9、將一個JPG圖片經過h264壓縮迴圈輸出為mp4視訊
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4


10、將普通流視訊改用h264壓縮,音訊不變,送至高清流服務(新版本FMS live=1)
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1〃


11 ts-ts
sh -c /usr/local/ffmpeg/bin/ffmpeg -loglevel debug -y -i /data/2110/2110.file   -c:v libx264 -b:v 200k -s 320x240  /data/2110/200/2110_200k_320x240.ts  2>&1


12  將圖片合併成視訊
ffmpeg -r 0.5 -i d:/tmpImg/image%04d.jpg -i d:/time.mp3 -vcodec mpeg4 d:/video5.avi


13 ffmpeg合併ts
ffmpeg -i "concat:file001.tsfile002.ts|file003.ts|file004.ts" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4


14 檢視引數
ffprobe -i  20161223T151810.ts  -show_streams


15 最高質量
nohup  /usr/bin/ffmpeg -i /trans/source/1080P7M04.mov -c:v libx264 -c:a libfaac -r 25  -b:v 2000k -ab 128k -s 1920x1080 -keyint_min 250 -preset veryslow  -tune film -deinterlace -pix_fmt yuv420p  /data/ts/H264_2M_7M04.ts >/dev/null 2>& 1 &


16 最快速度
nohup  /usr/bin/ffmpeg -i /trans/source/1080P7M04.mov -c:v libx264 -c:a libfaac -r 25 -g 25 -b:v 2000k -ab 128k -s 1920x1080 -keyint_min 25 preset ultrafast -sws_flags neighbor -deinterlace -pix_fmt yuv420p  /data/ts/H264_2M_7M04.ts >/dev/null 2>& 1 &




ffmpeg -loglevel debug -y -i youdian1.mp4 -c:v libx264 -c:a libfaac -r 15 -g 150 -b:v 450k -maxrate 900k  -bufsize 900k  -ab 128k -s 640x360 -keyint_min 150 -sc_threshold 0 -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  450/450.m3u8 -c:v libx264 -c:a libfaac -r 18 -g 180 -b:v 850k -maxrate 1700k  -bufsize 1700k  -ab 128k -s 640x480 -keyint_min 180 -sc_threshold 0 -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  850/850.m3u8 -c:v libx264 -c:a libfaac -r 22 -g 220 -b:v 1200k -maxrate 2400k  -bufsize 2400k  -ab 128k -s 1280x720 -keyint_min 220 -sc_threshold 0 -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  1200/1200.m3u8




-c /usr/local/ffmpeg/bin/ffmpeg -loglevel debug -y -i /data/2443/2443.file -c:v libx264 -c:a libfaac -r 25 -g 25 -b:v 400k -maxrate 600k -bufsize 600k -ab 128k -s 360x480 -keyint_min 25 -sc_threshold 0 -f hls   -hls_time 10   -hls_list_size 2048 -pix_fmt yuv420p -vf "movie=/data/watermark/2443/20160817032411.png,scale=80:80[watermark]; [in] [watermark] overlay= main_w-overlay_w-30:15 [out]"  /data/2443/400/2443_400.m3u8  2>&1




-c /usr/local/ffmpeg/bin/ffmpeg -loglevel debug -y -i /data/2443/2443.file -c:v libx265 -c:a libfaac -r 25 -g 25 -b:v 15000k -maxrate 15000k -bufsize 600k -ab 128k -s 360x480 -keyint_min 25 -sc_threshold 0 -f hls   -hls_time 10   -hls_list_size 2048 -pix_fmt yuv420p -vf "movie=/data/watermark/2443/20160817032411.png,scale=80:80[watermark]; [in] [watermark] overlay= main_w-overlay_w-30:15 [out]"  /data/2443/400/2443_400.m3u8  2>&1




增加水印
Top left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];
[in][watermark] overlay=10:10 [out]" outputvideo.flv




Top right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];
[in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv




Bottom left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];
[in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv




Bottom right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];
[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]"
outputvideo.flv








常用引數說明:






主要引數:
-i 設定輸入流
-f 設定輸出格式
-ss 開始時間
視訊引數:
-b 設定視訊流量,預設為200Kbit/s
-r 設定幀速率,預設為25
-s 設定畫面的寬與高
-aspect 設定畫面的比例
-vn 不處理視訊
-vcodec 設定視訊編解碼器,未設定時則使用與輸入流相同的編解碼器
音訊引數:
-ar 設定取樣率
-ac 設定聲音的Channel數
-acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器
-an 不處理音訊


--preset的引數主要調節編碼速度和質量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo這10個選項,從快到慢。?


?--tune的引數主要配合視訊型別和視覺優化的引數,或特別的情況。如果視訊的內容符合其中一個可用的調整值又或者有其中需要,則可以使用此選項,否則建議不使用(如tune grain是為高位元率的編碼而設計的)。
tune的值有: film: ?電影、真人型別;?
animation: ?動畫;?
grain: ? ? ?需要保留大量的grain時用;?
stillimage: ?靜態影象編碼時使用;?
psnr: ? ? ?為提高psnr做了優化的引數;?
ssim: ? ? ?為提高ssim做了優化的引數;?
fastdecode: 可以快速解碼的引數;?




preset ultrafast -sws_flags neighbor -threads 56 -deinterlace 


preset veryslow  -tune film


nohup  /usr/bin/ffmpeg -i /trans/source/1080P7M04.mov -c:v libx264 -c:a libfaac -r 25  -b:v 2000k -ab 128k -s 1920x1080 -keyint_min 250 -preset veryslow  -tune film -deinterlace -pix_fmt yuv420p  /data/ts/H264_2M_7M04.ts >/dev/null 2>& 1 &


/usr/bin/ffmpeg -i /trans/ffmpeg.sh/1080P7M03.ts -c:v libx264 -c:a libfaac -r 25 -g 25 -b:v 800k -maxrate 1200k  -bufsize 1200k  -ab 128k -s 640x480 -keyint_min 25 -sc_threshold 0 -preset ultrafast -sws_flags neighbor -threads 56  -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  /trans/hls/1/800.m3u8 -c:v libx264 -c:a libfaac -r 25 -g 25 -b:v 2000k -maxrate 3000k  -bufsize 3000k  -ab 128k -s 1920x1080 -keyint_min 25 -sc_threshold 0 -preset ultrafast -sws_flags neighbor -threads 56 -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  /trans/hls/1/2000.m3u8 -c:v libx264 -c:a libfaac -r 25 -g 25 -b:v 4000k -maxrate 6000k  -bufsize 6000k  -ab 128k -s 1920x1080 -keyint_min 25 -sc_threshold 0 -preset ultrafast -sws_flags neighbor -threads 56 -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  /trans/hls/1/4000.m3u8