FFmpeg + SoundTouch实现音频的变调变速
本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件。
主要有以下内容:
- 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息
- 将解码后的音频保存为WAV文件
- SoundTouch的使用指南
1.从视频文件中提取音频保存为WAV文件
本小节实现从视频文件中提取音频,解码并保存为WAV文件。
在使用FFmpeg解码时,一般的流程是:
- 打开一个多媒体文件流
- 得到媒体流信息
- 查找视频、音频流的index
- 根据流的index查找相应的的CODEC,打开AVCodecContext
进行完以上操作后,就得到解码所需的各种信息:AVFormateContext、AVCodecContext以及对应流的index。也就说,这些数据是解码多媒体流的必须信息,所以这里对上述操作做一个封装,提供一个单一接口来获取解码所需的信息。
1.1 MediaInfo工具类
在使用FFmpeg进行解码的时候,所需要的信息如下:
- AVFormatContext
- AVCodecContext
- 流的index
MediaInfo的声明如下:
class CMediaInfo { public:
CMediaInfo();
CMediaInfo(MEDIA_TYPE media);
~CMediaInfo(); public: ERROR_TYPE open(const char *filename); void close();
网友评论

