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();
延伸閱讀
- ssh框架
2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖
2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe
2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】
2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞
2017-07-26
- 從棧不平衡問題 理解 calling convention
2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明
2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解
2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析
2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二)
2017-07-26
學(xué)習(xí)是年輕人改變自己的最好方式