FFMPEG 命令行常用方法示例

引言

FFMPEG以其强大的功能而在音视频领域著称,更重要的是它还是开源的!音视频格式转换、裁剪、拼接、提取字幕或某音轨等等,它都能胜任,可谓一把瑞士军刀,小巧但功能强大,是音视频研究的必备利器之一。


示例

1. 转换成H264编解码
ffmpeg -i input_file -vcodec h264 output_file
其中 -i 表示输入文件, -vcodec  h264 表示视频编解码方式为 H264。

2. 转换成H265编解码
ffmpeg -i input_file -vcode hevc output_file
其中 -i 表示输入文件, -vcodec  hevc 表示视频编解码方式为 H265,注意ffmpeg 中名称为 hevc,不是H265!

3. 设置输出视频的分辨率
ffmpeg -i input_file -vcodec h264 -s 1280x720 output_file
其中 -s 表示分辨率。

4. 设置输出文件的音视频比特率
ffmpeg -i input_file  -vcodec h264 -b:v 10M -b:a 128K output_file
其中 -b:v 10M 表示视频码率为10Mbps, -b:a 128K 表示音频码率为 128Kbps,注意FFMPEG对于码率控制,有时候不太准确,跟输入源有一定关系。

5. 剪切某段视频
ffmpeg -ss 0:05:00 -t 0:1:30 -i input_file -vcodec copy -acodec copy output_file
ffmpeg -ss 300 -t 90  -i input_file -vcodec copy -acodec copy output_file
上面的两种方式等价,时间格式支持 HH:MM:SS或者秒数。 -ss 开始时间, -t 持续时间, -vcodec copy 保持原视频编码, -acodec copy 保持原音频编码。

6. 分离音视频流保存为不同文件
ffmpeg -i input_file -vcodec copy -an output_file_video  //提取视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //提取音频流
其中 -an 表示不处理音频, -vn 表示不处理视频。

7.合并多个音视频文件为一个文件

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file


8. 提取视频图像保存为图片文件

ffmpeg –i input_file –r 1 –f image2 image-%3d.jpeg        //提取图片

其中 -r 表示提取图像的频率,-f 表示输出格式, %3d 表示文件命名方式(也即生成的图片名为 image-001.jpeg, image-002.jpeg, ...., image-999.jpeg)。


9. 转换成YUV原始文件

ffmpeg -i input_file -vcodec rawvideo -an output_file_yuv


10. YUV序列转出AVI文件

ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi


11. 控制关键帧间隔和B帧

ffmpeg –i input_file  –vcodec h264 –bf 0 –g 25 –s 854x480 –an –f m4v output_file

其中-bf 控制B帧数目,-g 控制关键帧间隔, -f 控制文件格式(format,注意与codec的区别)。


12. 录制rtsp网络数据流

ffmpeg –i rtsp://192.168.1.100:5555/test_stream –vcodec copy out.avi

将rtsp的网络视频流文件保存为 out.avi 本地文件


13. 在多音轨文件中提取某音轨文件

得分两步走,第一步,查看源文件,找到对应的音频序号;第二步,将对应的音频序号流提取出来。如下所示:

D:>ffmpeg  -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv
ffmpeg version N-66931-gbbd8c85 Copyright (c) 2000-2014 the FFmpeg developers
  built on Oct 17 2014 01:05:12 with gcc 4.9.1 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
g --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-lib
opencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --
enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
libx265 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      54. 10.100 / 54. 10.100
  libavcodec     56.  8.100 / 56.  8.100
  libavformat    56.  9.100 / 56.  9.100
  libavdevice    56.  1.100 / 56.  1.100
  libavfilter     5.  1.106 /  5.  1.106
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, matroska,webm, from 'D:\Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv':
  Metadata:
    title           : X-MEN__DAYS_OF_FUTURE_PAST.Title800
    encoder         : libebml v0.7.8 + libmatroska v0.8.1
    creation_time   : 2014-10-07 14:08:43
  Duration: 02:11:35.18, start: 0.000000, bitrate: 28873 kb/s
    Chapter #0:0: start 0.000000, end 213.338000
    Metadata:
      title           : (01)00:00:00:000
    Chapter #0:1: start 213.338000, end 480.688000
    Metadata:
      title           : (02)00:03:33:338
    Chapter #0:2: start 480.688000, end 628.628000
    Metadata:
      title           : (03)00:08:00:688
    Chapter #0:3: start 628.628000, end 838.045000
    Metadata:
      title           : (04)00:10:28:628
    Chapter #0:4: start 838.045000, end 1022.021000
    Metadata:
      title           : (05)00:13:58:045
    Chapter #0:5: start 1022.021000, end 1216.089000
    Metadata:
      title           : (06)00:17:02:021
    Chapter #0:6: start 1216.089000, end 1331.330000
    Metadata:
      title           : (07)00:20:16:089
    Chapter #0:7: start 1331.330000, end 1597.887000
    Metadata:
      title           : (08)00:22:11:330
    Chapter #0:8: start 1597.887000, end 1832.038000
    Metadata:
      title           : (09)00:26:37:887
    Chapter #0:9: start 1832.038000, end 2069.776000
    Metadata:
      title           : (10)00:30:32:038
    Chapter #0:10: start 2069.776000, end 2160.992000
    Metadata:
      title           : (11)00:34:29:776
    Chapter #0:11: start 2160.992000, end 2298.087000
    Metadata:
      title           : (12)00:36:00:992
    Chapter #0:12: start 2298.087000, end 2437.101000
    Metadata:
      title           : (13)00:38:18:087
    Chapter #0:13: start 2437.101000, end 2753.792000
    Metadata:
      title           : (14)00:40:37:101
    Chapter #0:14: start 2753.792000, end 2933.847000
    Metadata:
      title           : (15)00:45:53:792
    Chapter #0:15: start 2933.847000, end 3118.156000
    Metadata:
      title           : (16)00:48:53:847
    Chapter #0:16: start 3118.156000, end 3283.113000
    Metadata:
      title           : (17)00:51:58:156
    Chapter #0:17: start 3283.113000, end 3471.426000
    Metadata:
      title           : (18)00:54:43:113
    Chapter #0:18: start 3471.426000, end 3648.186000
    Metadata:
      title           : (19)00:57:51:426
    Chapter #0:19: start 3648.186000, end 3806.594000
    Metadata:
      title           : (20)01:00:48:186
    Chapter #0:20: start 3806.594000, end 4029.567000
    Metadata:
      title           : (21)01:03:26:594
    Chapter #0:21: start 4029.567000, end 4183.596000
    Metadata:
      title           : (22)01:07:09:567
    Chapter #0:22: start 4183.596000, end 4391.470000
    Metadata:
      title           : (23)01:09:43:596
    Chapter #0:23: start 4391.470000, end 4531.860000
    Metadata:
      title           : (24)01:13:11:470
    Chapter #0:24: start 4531.860000, end 4647.726000
    Metadata:
      title           : (25)01:15:31:860
    Chapter #0:25: start 4647.726000, end 4770.098000
    Metadata:
      title           : (26)01:17:27:726
    Chapter #0:26: start 4770.098000, end 5090.710000
    Metadata:
      title           : (27)01:19:30:098
    Chapter #0:27: start 5090.710000, end 5218.254000
    Metadata:
      title           : (28)01:24:50:710
    Chapter #0:28: start 5218.254000, end 5464.250000
    Metadata:
      title           : (29)01:26:58:254
    Chapter #0:29: start 5464.250000, end 5643.679000
    Metadata:
      title           : (30)01:31:04:250
    Chapter #0:30: start 5643.679000, end 5853.180000
    Metadata:
      title           : (31)01:34:03:679
    Chapter #0:31: start 5853.180000, end 6114.817000
    Metadata:
      title           : (32)01:37:33:180
    Chapter #0:32: start 6114.817000, end 6292.995000
    Metadata:
      title           : (33)01:41:54:817
    Chapter #0:33: start 6292.995000, end 6439.808000
    Metadata:
      title           : (34)01:44:52:995
    Chapter #0:34: start 6439.808000, end 6689.766000
    Metadata:
      title           : (35)01:47:19:808
    Chapter #0:35: start 6689.766000, end 7002.745000
    Metadata:
      title           : (36)01:51:29:766
    Chapter #0:36: start 7002.745000, end 7212.413000
    Metadata:
      title           : (37)01:56:42:745
    Chapter #0:37: start 7212.413000, end 7354.972000
    Metadata:
      title           : (38)02:00:12:413
    Chapter #0:38: start 7354.972000, end 7831.907000
    Metadata:
      title           : (39)02:02:34:972
    Chapter #0:39: start 7831.907000, end 7895.095000
    Metadata:
      title           : (40)02:10:31:907
    Chapter #0:40: start 7895.095000, end 7895.178884
    Metadata:
      title           : (41)02:11:35:095
    Stream #0:0: Video: hevc (Main), yuv420p(tv), 3840x2160, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 48003.07 tbn, 48003
.07 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:3(spa): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:4(fra): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:5(por): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:6(rus): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s
    Stream #0:7(tha): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:8(ukr): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
At least one output file must be specified

D:>

执行上面的命令,查看原始文件,发现它有8个音轨!,我们只提取第二个音轨流(上图标识为绿色的那个),命令如下所示:

ffmpeg -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv -map 0:2 audio_2.wav

14. 多个视频文件拼接

首先创建一个需要拼接的文件,例如 concat.txt,内容如下:

file 'orig_20160616113303_0.avi'
file 'orig_20160616113303_1.avi'

然后执行如下命令 

 ffmpeg  -f concat -i concat.txt  -c copy orig_20160616113303_merge.avi

FFMPEG常用参数说明

主要参数:

-i 设定输入流
-f 设定输出格式
-ss 开始时间
-formats  查看所有支持的容器格式
-codecs  查看所有编解码器
-filters      查看所有可用的filter
-pix_fmts 查看所有支持的图片格式
-sample_fmts 查看所有支持的像素格式
-i input_file 查看媒体文件input_file的信息(注意后面不再接其它参数,例如: ffmpeg -i test.mp4,查看 test.mp4视频信息)


视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器


音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频


小结

ffmpeg功能强大,参数配置众多,最好的方式查看它的命令行帮助文档,各个参数都有详细的说明,唯一的遗憾就是没有例子,对于初入媒体领域的人来说,门槛比较高。不明白的参数,可以多试试,再接合MediaInfo工具查看具体信息,通过VLC或者FFMPEG自带的 ffplay播放器播放,就容易理解了。

你可能感兴趣的:(音视频多媒体)