迷途小書童——ffmpeg常用命令
阿新 • • 發佈:2020-10-12
不錯不錯
從視訊的第10秒開始,擷取長度為30秒的視訊,維持編碼方式不變
ffmpeg -ss 00:00:10 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
ffmpeg常用命令
常用ffmpeg命令
流媒體迷途小書童2周前 (09-29)0評論軟硬體環境
- windows 10 64bit
- ffmpeg3.4.8
下載及安裝
從官網下載編譯好的二進位制檔案http://ffmpeg.org/download.html,並將其路徑加入到系統環境變數中
獲取音訊/視訊檔案資訊
顯示媒體檔案的資訊,執行ffmpeg -i test.mp4
(base) PS C:\Users\Administrator\Desktop> ffmpeg.exe -i .\test.mp4 ffmpeg version N-93125-gdbfd042983 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8.2.1 (GCC) 20190212 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt libavutil 56. 26.100 / 56. 26.100 libavcodec 58. 47.100 / 58. 47.100 libavformat 58. 26.101 / 58. 26.101 libavdevice 58. 6.101 / 58. 6.101 libavfilter 7. 48.100 / 7. 48.100 libswscale 5. 4.100 / 5. 4.100 libswresample 3. 4.100 / 3. 4.100 libpostproc 55. 4.100 / 55. 4.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\test.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf57.83.100 Duration: 00:01:08.40, start: 0.000000, bitrate: 5947 kb/s Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 5945 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default) Metadata: handler_name : VideoHandler At least one output file must be specified (base) PS C:\Users\Administrator\Desktop>
在上面的輸出中可以看到媒體檔案的資訊,以及ffmpeg
的資訊,例如版本、配置細節、版權標記、構建引數和庫選項等
轉換視訊格式
從mp4
轉換成avi
ffmpeg -i test.mp4 test.avi
視訊擷取
從視訊的第10秒開始,擷取長度為30秒的視訊,維持編碼方式不變
ffmpeg -ss 00:00:10 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
視訊拼接
用一個txt
檔案將需要拼接在一起的視訊檔案組織起來,格式是
file 'test1.mp4'
file 'test2.mp4'
file 'test3.mp4'
有了上面的文字檔案,就可以使用ffmpeg
ffmpeg -f concat -i filelist.txt -v:c copy output.mp4
更改視訊的解析度
將原視訊中的解析度更改為1280×720,音訊編碼方式不變
ffmpeg -i test.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
如果還想更改視訊比例的話,可以這樣
ffmpeg -i test.mp4 -vf scale=1280x720,setdar=16:9 output.mp4
改變音視訊的編碼方式
也就是轉碼,可以指定編碼方式
ffmpeg -i test.avi -c:v libx264 -c:a aac output.mp4
提取視訊中的音訊
使用引數-vn
,就是disable video
的意思
ffmpeg -i test.mp4 -vn test.mp3
對應的,如果想去掉音訊,使用引數-an
ffmpeg -i test.mp4 -an output.mp4
提取影象
ffmpeg -i test.mp4 -r 1 -f image2 image_%2d.png
其中-r
表示幀速度,-r 1
就是每一秒提取一張圖片的意思,提取出來的圖片命名格式是image_01.png
、image_02.png
、image_03.png
,以此類推
m3u8切片
m3u8
非常適合在網路上播放,ffmpeg
可以將本地視訊檔案轉化成m3u8
索引加ts
視訊的組合。這樣,只要將生成的檔案拷貝到類似nginx
這樣的web
服務上,就可以實現視訊點播了
ffmpeg -i test.mp4 -vcodec libx264 -strict -2 -acodec aac -hls_list_size 0 -f hls index.m3u8
調整視訊播放速度
下面的示例是2倍速的轉換,如果是原來的1/2速度,則引數變為setpts=2*PTS
ffmpeg -i test.mp4 -vf "setpts=0.5*PTS" output.mp4
編輯視訊
可以修改original_network_id
、transport_stream_id
、service_id
等等,streamid
代表音視訊pid
,可以修改video pid
和audio pid
ffmpeg -i test.mp4 -vcodec libx264 -strict -2 -acodec aac -streamid 1:2595 -
mpegts_original_network_id 0x1122 -mpegts_transport_stream_id 0x3344 -
mpegts_service_id 0x02 -mpegts_pmt_start_pid 0x0A20 -mpegts_start_pid
0x0A21 -metadata service_provider="yakir" -metadata service_name="yakir"
-bsf h264_mp4toannexb -f mpegts output.ts
尋求幫助
最後放出終極大招,超級詳細的官方幫助資訊
ffmpeg -h full