转码

对输入文件进行处理,并生成输出文件的过程,称为转码

转码可以是这样:

  • 格式转换

  • 只修改某些数据,同时保持文件格式不变

转码过程可以被分成以下部分:

  1. 解复用:使用libavformat中的解复用器,对输入文件进行处理,生成已编码的数据包

  2. 解码:使用解码器,将已编码的数据包进行解码,生成未压缩的帧

  3. 滤镜(可选):使用滤镜对解码后的帧进行处理

  4. 编码:使用编码器,将未压缩的帧,编码为数据包

  5. 复用:使用复用器,将数据包封装为所选择的媒体格式

解复用器,会基于输入文件的扩展名进行自动选择 如果没有指定所使用的编码器、复用器,则会基于输出文件的扩展名进行自动选择

编解码器(codec)这个名字,源自编码器(取coder中的co)和解码器(取decoder中的dec)。

在命令行中指定编解码器,需要使用-c-codec选项,其语法如下:

-c 编解码器名称-codec 编解码器名称

转码时,如果要保持编解码器不变,可以使用-c copy-codec copy

如果要保持音频编解码器不变,可以使用-c:a copy-codec:a copy

如果要保持视频编解码器不变,可以使用-c:v copy-codec:v copy

ffmpeg -i input.mp4 -c copy output.flv

最后更新于