人工智能与计算机学院新媒体中心 陈牧函
这是 FFmpeg多媒体处理工具的基本流程,主要使用的工具是“小丸工具箱”,核心作用是对 MP4 文件进行音频提取转码 + 视频重新编码的批量处理,底层依赖 FFmpeg的编解码核心与格式封装能力实现多媒体流转换。
一、核心作用
1.音频提取与格式转换:从 MP4 文件中分离 AAC 音频流,先转成 PCM 编码的 WAV 格式,再优化编码为 AAC 格式的 m4a 文件。
2.视频重新编码:将 MP4 中原有的 HEVC(高效视频编码)格式视频流,通过 x264 编码器转码为 AVC(H.264)格式,同时控制码率、帧率等参数。
3.过程监控与参数输出:实时记录转码进度(帧处理数量、完成百分比)、码率稳定性、预计剩余时间和输出文件大小,确保处理过程可追溯。
二、底层原理
1. 多媒体流解析与分离
- FFmpeg 通过libavformat库识别输入 MP4 文件的容器格式,解析出视频流(HEVC,hvc1 编码)和音频流(AAC,mp4a 编码)
- 基于Stream mapping机制,单独提取音频流(Stream #0:1)进行后续处理,视频流(Stream #0:0)则进入编码流程,实现音视频独立处理。
2. 编解码核心工作流程
- 解码阶段:音频流(AAC)通过libavcodec的原生解码器解码为无压缩的 PCM 数据(Int16 格式),视频流(HEVC)通过 HEVC 解码器解码为原始像素数据(yuv420p 格式)。
- 编码阶段:PCM 音频通过pcm_s16le编码器转码为 WAV,再通过 AAC 编码器优化为 m4a;视频原始数据通过 x264 编码器(High profile,level 4.0)重新编码为 AVC 格式,支持帧率(30fps)和码率控制。
3. 格式封装与优化
- 输出文件通过libavformat封装为目标格式(WAV、m4a、MP4),写入元数据(创建时间、编码器信息)。
- 音频转码后通过AudioConverterRef进行优化,确保输出音频的兼容性和播放质量。
4. 过程控制与资源调度
- 因未编译线程支持,采用线程模拟机制处理编解码任务,避免资源冲突。
- 实时计算并输出处理进度(帧数量、完成百分比)、码率(如 1411kbits/s)、预计剩余时间,基于输入文件总时长和已处理时长动态调整。
三、关键技术依赖
- 核心库:libavutil(工具函数)、libavcodec(编解码)、libavformat(格式处理)、libswscale(视频缩放)等FFmpeg 核心组件。
- 编码器:x264(AVC 视频编码)、AAC 编码器(音频编码)、pcm_s16le(PCM 编码)。
- 参数控制:固定帧率(30fps)、码率策略(strategy=2)、分辨率(1280x720)、采样率(44100Hz)等,确保输出文件的一致性。
4425

被折叠的 条评论
为什么被折叠?



