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

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

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

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

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

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

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

1.1 MediaInfo工具類

在使用FFmpeg進(jìn)行解碼的時候,所需要的信息如下:

  • AVFormatContext
  • AVCodecContext
  • 流的index

MediaInfo的聲明如下:

class CMediaInfo { public:
    CMediaInfo();
    CMediaInfo(MEDIA_TYPE media);
    ~CMediaInfo(); public: ERROR_TYPE open(const char *filename); void close(); 
        		

延伸閱讀

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