FFmpeg + SoundTouch實(shí)現(xiàn)音頻的變調(diào)變速
本文使用FFmpeg + SoundTouch實(shí)現(xiàn)將音頻解碼后,進(jìn)行變調(diào)變速處理,并將處理后的結(jié)果保存為WAV文件。
主要有以下內(nèi)容:
- 實(shí)現(xiàn)一個(gè)FFmpeg的工具類,保存多媒體文件所需的解碼信息
- 將解碼后的音頻保存為WAV文件
- SoundTouch的使用指南
1.從視頻文件中提取音頻保存為WAV文件
本小節(jié)實(shí)現(xiàn)從視頻文件中提取音頻,解碼并保存為WAV文件。
在使用FFmpeg解碼時(shí),一般的流程是:
- 打開(kāi)一個(gè)多媒體文件流
- 得到媒體流信息
- 查找視頻、音頻流的index
- 根據(jù)流的index查找相應(yīng)的的CODEC,打開(kāi)AVCodecContext
進(jìn)行完以上操作后,就得到解碼所需的各種信息:AVFormateContext、AVCodecContext以及對(duì)應(yīng)流的index。也就說(shuō),這些數(shù)據(jù)是解碼多媒體流的必須信息,所以這里對(duì)上述操作做一個(gè)封裝,提供一個(gè)單一接口來(lái)獲取解碼所需的信息。
1.1 MediaInfo工具類
在使用FFmpeg進(jìn)行解碼的時(shí)候,所需要的信息如下:
- AVFormatContext
- AVCodecContext
- 流的index
MediaInfo的聲明如下:
class CMediaInfo { public:
CMediaInfo();
CMediaInfo(MEDIA_TYPE media);
~CMediaInfo(); public: ERROR_TYPE open(const char *filename); void close();
網(wǎng)友評(píng)論