FFmpeg
Abstract |
FFmpeg |
Authors |
Walter Fan |
Status |
WIP |
Updated |
2024-08-21 |
ffmpeg 是什么?
ffmpeg 是一个跨平台的音视频录制,转换和流式传输的完整解决方案,它是一套软件库, 也是一套工具集。
组件
命令行工具
FFmpeg 的共享库
库 |
说明 |
---|---|
libavcodec |
用于各种多媒体编码 |
libavdevice |
用于各种设备 |
libavfilter |
包含一些过滤器 |
libavformat |
音视频媒体格式 |
libavutil |
包含一些实用例程 |
libpostproc |
用于后期处理 |
libswresample |
用于音频重采样 |
libswscale |
用于媒体扩展 |
ffmpeg flow
ffmpeg调用libavformat库(包含demuxers)来读取输入文件,并从中获取包含编码数据的数据包。 当有多个输入文件时,ffmpeg尝试通过跟踪任何活动输入流上的最低时间戳来保持同步。
然后将编码的数据包传递给解码器(除非为流选择了streamcopy,请参阅进一步的描述)。 解码器产生未经压缩的帧(原始视频/ PCM音频/ …),可以通过过滤进一步处理(见下一节)。 滤波后,帧被传送到编码器,对编码器进行编码并输出编码的数据包。 最后,这些被传递给复制器,它将编码的数据包写入输出文件。
在编码之前,ffmpeg可以使用libavfilter库中的过滤器来处理原始音频和视频帧。 几个链式过滤器形成一个过滤器图。
ffmpeg区分两种类型的过滤器图:
简单过滤器图
复杂过滤器图。
用法
命令行的基本用法如下
ffmpeg [global_options] [input_file_options] -i input_file
[output_file_options] output_file
比如
ffmpeg -i 1secs.avi -vn -acodec pcm_s16le -ar 8000 -ac 1 1secs.wav
ffmpeg 支持很多格式和编码,可通过如下命令查看
- ::
ffmpeg -formats
or
ffmpeg -codecs
FAQ
从视频文件 mp4 中提取音频文件 wav
fmpeg -i input.mp4 -ab 160k -ac 2 -ar 44100 -vn output.wav
转换 mp4 到 avi
`
ffmpeg -i input.mp4 output.avi
`
如何根据图片和音频制作视频文件
def make_avi(image_file, wave_file, avi_file):
cmd = "ffmpeg -i %s -i %s -c copy %s " % (image_file, wave_file, avi_file)
print(cmd)
return os.system(cmd)
如何连接两个音频文件?
ffmpeg -f concat -i mylist.txt -c copy output.wav
mylist.txt:
file '4815.wav'
file '4816.wav'
如何将mp3 转换为 wav 文件
采样率为8000 Hz, 编码为 pcm, 采样深度为16bit
ffmpeg -i 4898.mp3 -acodec pcm_s16le -ac 1 -ar 8000 4898.wav
参考资料
官方书籍: ffmpeg basic - http://ffmpeg.tv/