ffmpeg常用命令(一)

711 阅读3分钟

软硬件环境

  • windows 10 64bit
  • ffmpeg 3.4.8

下载及安装

从官网下载编译好的二进制文件 ffmpeg.org/download.ht…,并将其路径加入到系统环境变量中

ffmpeg

获取音频/视频文件信息

显示媒体文件的信息,执行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

更改视频的分辨率

将原视频中的分辨率更改为1280x720,音频编码方式不变

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.pngimage_02.pngimage_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_idtransport_stream_idservice_id等等,streamid代表音视频pid,可以修改video pidaudio 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