音视频的硬件采集设备比如摄像头、麦克风、音视频采集卡采集到的视频信息都是未经编码的原始数据,一般来说视频采集的是YUV数据,音频采集的是PCM数据。由于未经编码压缩原始的音视频数据都比较大,非常不利于传输,所以在日常工作生活中,我们一般都会将YUV和PCM数据封装成特定的视频格式来进行传输,常见的格式包括mp4,flv等等。这里就介绍一下如何通过FFmpeg将YUV视频数据和PCM音频数据封装成特定的视频格式。
FFmpeg封装YUV数据和PCM数据的流程图如下图所示:

为了封装原始的音视频数据,我们首先实现音视频编码器,编码器负责对YUV数据和PCM数据进行封装。通常情况下视频编码器采用的编码格式是H264,音频编码器采用的是AAC。对应的实现如下所示:
音频编码器
//audio_encoder.h
#ifndef _AUDIO_ENCODER_H_
本文介绍了使用FFmpeg对YUV视频和PCM音频进行封装的流程,包括音频编码器、视频编码器的实现,音频重采样的必要性以及音视频封装的步骤。重点强调了在封装前同步音视频时间基以避免不同步问题的重要性,并提供了调用示例。
订阅专栏 解锁全文
3519

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



