スタッフAです。
iOS 17.1でSafariにManagedMediaSource APIというのが実装されました。
Chromeなどに実装されていたMediaSource APIのApple版という位置付けです。
MediaSource APIは動画や音声を再生中でも後からどんどんデータを追加出来る機能、ということでLIVE配信なんかで使われています。
これによって今までのiOSでしか使えなかったLIVE配信の仕様のHLSの仕様から移行出来るようになりLIVE配信の遅延がHLSの時と比べてかなり減らすことが可能になりました。
とても有難い仕様ですが、
が、
まったくドキュメントが公開されてない。
Apple公式の公開してるソースが、
function getMediaSource(){
return self.ManagedMediaSource || self.MediaSource;
}
const MediaSource = getMediaSource();
var ms = new MediaSource();
「ね?簡単でしょ?」
という感じ。
それはいいのですが、
ms.addSourceBuffer(‘video/mp4; codecs=”mp4a.40.2,avc1.4d4015″‘);
データを追加する際にファイルの形式を指定する必要があるのに特定のコーデックしか公開されておらず。
他のコーデックだとエラーすることもあった模様。
有効なコーデック一覧とかもうちょっと詳しいのが欲しかったというか。
自サイト内で必要だったのは音声だけだったので、こちらは「audio/mp4」と指定しておけばよしなにしてくれるっぽいので楽でした。(多分mp4のヘッダー部分で判定してるっぽい)
Appleさんもうちょっとこうブラウザ向けの開発者に優しくして欲しい。