ChromeがAAC録音に対応していた
スタッフAです
自サービスでMediaRecoderAPIを使っていましてChromeが「audio/mp4」にいつの間にか対応していたため不具合が生じるということに出くわしましたそれ以前までは「audio/webm」にしか対応していなかったのに(サービス自体の不具合はすぐに解消しました)あまりに急な仕様変更でかなり驚きましたなので最新のChromeのMediaRecoderAPIの仕様はどうなっているんだ、と備忘録がてら確認
検証コード
window.onload = function(){
const codecs = [
'audio/webm',
'audio/webm; codecs=opus',
//以下は以前はダメだったコーデック
'audio/mp4',
'audio/mp4; codecs=opus',
'audio/mp4; codecs=mp3',
'audio/mp4; codecs=mp4a.40',
'audio/mp4; codecs=mp4a.40.2',
'audio/mp4; codecs=mp4a.40.5',
'audio/mp4; codecs=mp4a.40.29'
];
for(let i in codecs){
console.log(codecs[i]+' '+MediaRecorder.isTypeSupported(codecs[i]));
}
};
「audio/webm」「audio/webm; codecs=opus」がtrueなのは以前通りそして「audio/mp4」が可能になっていました「audio/mp4」でMediaRecorderAPIに入れるとcodecs=opusで出力されるようで「audio/mp4; codecs=opus」ももちろん可能でした
特筆すべきは「audio/mp4; codecs=mp4a.40.2」が可能になっているところですえ・・・?AACで出力してくれるの???という驚きしかなかったのですが実際出力してみると確かにAACでした
ただこのmp4iOSやMacで再生しようとしても出来ないというかffmpegやMP4BOXで入力ソースと使っても問題ないのでMP4の仕様的には合ってるのでしょうけど恐らく内部のmp4タグの何かがiOS・Macの仕様に引っかかってるんだろうなという感想ですまあ普通に使う分には再変換すればいいので詳しく調べなくてもいいかなあと思いつつ後々のため調べてみようかな
こういう仕様変更で今運営してる自サービスのエラーとかが減るのでは?と期待はしております(実際に使えるかはまた別問題ですが)
※2024年9月段階の最新バージョンのChromeで検証
文:スタッフA
2024/09/12 18:56
#開発部