在上一篇文章RIFF和WAVE音頻文件格式中對(duì)WAV的文件格式做了介紹,本文將使用標(biāo)準(zhǔn)C++庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)為PCM格式的WAV文件的讀寫(xiě)操作,只使用標(biāo)準(zhǔn)C++庫(kù)函數(shù),不依賴(lài)于其他的庫(kù)。
WAV文件結(jié)構(gòu)
WAV是符合RIFF標(biāo)準(zhǔn)的多媒體文件,其文件結(jié)構(gòu)可以如下:
WAV 文件結(jié)構(gòu) |
---|
RIFF塊 |
WAVE FOURCC |
fmt 塊 |
fact 塊(可選) |
data塊(包含PCM數(shù)據(jù)) |
首先是一個(gè)RIFF塊,有塊標(biāo)識(shí)RIFF,指明該文件是符合RIFF標(biāo)準(zhǔn)的文件;接著是一個(gè)FourCC,WAVE,該文件為WAV文件;fmt塊包含了音頻的一些屬性:采樣率、碼率、聲道等;fact 塊是一個(gè)可選塊,不是PCM數(shù)據(jù)格式的需要該塊;最后data塊,則包含了音頻的PCM數(shù)據(jù)。實(shí)際上,可以將一個(gè)WAV文件看著由兩部分組成:文件頭和PCM數(shù)據(jù),則WAV文件頭各字段的意義如下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(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模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26