iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 7
1
Modern Web

Web x Sound - 用 Web 玩轉聲音系列 第 7

Day07 - 音訊格式介紹

  • 分享至 

  • xImage
  •  

今天來講講一個音檔的組成,以及 Web 可以支援的格式有哪些。

開始之前說個題外話,找資料的過程中發現 演算法筆記 有一整個 section 都在介紹 Audio 相關的技術,涵蓋了資訊、聲學與合成器的基本介紹,也介紹許多當前有趣的應用,很接近我當初寫這系列的初衷,如果等不及了想多看看,或是本系列沒提到的其他領域,很推薦先從這邊下手去找。

Audio File Format

一個音檔可以分成兩個部分:audio coding format (audio data)、metadata。

Audio File Format 是指音檔的副檔名 (filename extension),可以分成三種類型:未壓縮、無損壓縮、有損壓縮。

group description format
未壓縮 uncompressed 完全沒有壓縮,直接存放由 PCM 等類比轉數位技術得到的資料,常用來儲存原始錄音。 .wav, .aiff, .au
無損壓縮 lossless compressed 透過一些方法減少檔案大小、同時又不影響到原始音質,例如:移除無聲響的部分 (像是黑白圖片只存黑的部分一樣),一般而言檔案大小會是未壓縮的一半。 .flac, .wv , .ape, .m4a...
有損壓縮 lossy compressed 根據人類聆聽的特性(心理聲學),在不易察覺的前提下移除、簡化部分 audio data。以 bit rate 代表壓縮的程度。 .mp3, .aac

檔案格式一覽

Audio Coding Format

Audio Coding Format 是一種表示音訊資料的格式,常見的有:MP3、AAC、Vorbis、FLAC...等。可以是單純的 bitstream ,也可以是一個 container format。

container format 存放了 encoded 的原始資料,透過 audio codec 進行 encoding 與 decoding。一般而言,一種 audio 檔案格式通常只會支援一種 codec。若內部使用的 container 有支援、或是使用 video 檔案格式只存 audio,亦可以支援多種 codec。像是 Matroska (MKV) 可以兼容任何 coding format。

audio file format container format / audio coding format note
.wav none PCM or LPCM
.aiff none PCM or LPCM
.au G729 亦可是 μ-law, a-law 壓縮的 PCM
.flac FLAC
.wv WavPack
.ape Monkey's Audio
.m4a AAC or ALAC
.mp3 none
.aac ADTS or ADIF

Audio Coding Format 比較表

Audio Codec

Audio Codec 是指將原始資料 encoding 與 deconding 的轉換器,它包含了幾種意義:

  • 以軟體來說,codec 是指處理資料編碼的程式,力求最少 bits 保存最高保真度的資料
  • 以硬體來說,codec 是指類比數位訊號轉換的裝置,如:ADC (analog-to-digital converter)、DAC (digital-to-analog converter)

Audio Codes 一覽

metadata

檔案本身可以帶 metadata 描述,像是曲名、作者等相關資訊,而有些格式的 container 可以自帶 metadata header 描述取樣率 (sample rate)、位元深度 (bit depth) 等資訊,例如:.wav、.aiff。其中特別的是 .mp3,mp3 是利用新增一個 chunk 儲存曲名等資訊,播放器識別到這個異常的區塊會自動忽略。

Web 支援的格式

各家瀏覽器支援的格式都不同,主因是 codecs 的專利問題。事實上不是所有的 codecs 都是免費、開源,從上面的 coding format 比較表與這份開源的 codec 表可以看得出來,因此各瀏覽器實作 HTML5 Audio 與 Video 時,codecs 專利成了最主要的考量。

file format video codecs audio codecs MIME types note
.webm VP8 / VP9 Vorbis / Opus video/webm, audio/webm IE9 不支援
.ogg Theora Vorbis / Opus video/ogg, audio/ogg, application/ogg application/ogg 用在不知道檔案是 video 或 audio 時,但其實 video 也可以只包含 audio 資訊
.mp4 H.264 AAC / MP3 MPEG 是有專利的,但看起來 firefox 與 chrome 仍堅決要支援
.mp3 MP3 audio/mpeg
.wav / .aiff WAVE PCM codec 1 audio/wave (建議), audio/wav, audio/x-wav, audio/x-pn-wav

https://ithelp.ithome.com.tw/upload/images/20181008/20111876X4Ged4kCPk.png
各家瀏覽器支援的檔案格式

這樣看下來,Audio 建議用 .mp3 、Video 建議用 .mp4 (XD),如果很在意音質又可以捨棄 IE 的話,.flac 會是個好選擇。

今天就先這樣了 Orz

Reference


上一篇
Day06 - 使用 HTML 播放音檔 - 自製播放器 (3)
下一篇
Day08 - 淺談聲音訊號的轉換
系列文
Web x Sound - 用 Web 玩轉聲音13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
froce
iT邦大師 1 級 ‧ 2018-10-08 08:09:53

mp4是容器格式吧?
裡面包的影像格式也需要系統支援,壓縮的時候要小心。

我要留言

立即登入留言