FFmpeg + SoundTouch實現(xiàn)音頻的變調(diào)變速

本文使用FFmpeg + SoundTouch實現(xiàn)將音頻解碼后,進行變調(diào)變速處理,并將處理后的結(jié)果保存為WAV文件。
主要有以下內(nèi)容:

  • 實現(xiàn)一個FFmpeg的工具類,保存多媒體文件所需的解碼信息
  • 將解碼后的音頻保存為WAV文件
  • SoundTouch的使用指南

1.從視頻文件中提取音頻保存為WAV文件

本小節(jié)實現(xiàn)從視頻文件中提取音頻,解碼并保存為WAV文件。
在使用FFmpeg解碼時,一般的流程是:

  • 打開一個多媒體文件流
  • 得到媒體流信息
  • 查找視頻、音頻流的index
  • 根據(jù)流的index查找相應的的CODEC,打開AVCodecContext

進行完以上操作后,就得到解碼所需的各種信息:AVFormateContext、AVCodecContext以及對應流的index。也就說,這些數(shù)據(jù)是解碼多媒體流的必須信息,所以這里對上述操作做一個封裝,提供一個單一接口來獲取解碼所需的信息。

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(); 
        		

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式