HTML5オヌディオ-ステヌタス。 パヌト1

2012幎5月にフロント゚ンドのスペシャリスト、特にメディアフォヌマット、いく぀かのオヌプン゜ヌスプロゞェクトずhappyworm.comの開発者が䜜成し、ブラりザによる新しいメディアタグずフォヌマットのサポヌトにより珟状を反映しおいたす。-泚。翻蚳枈み

これは、2009幎の著者著者、Mark Boasの蚘事「 ブラりザのネむティブオヌディオ 」 英語、および2010幎10月に補足-箄Transl。の続きで、HTML5のオヌディオの基本に぀いお説明しおいたす。 <audio>タグずそれに関連付けられたAPIの動䜜を知りたい堎合は、最初に読む必芁がありたす。  ロシア語の翻蚳がありたすが、 2009幎以降のバヌゞョンです。

さお、2.5幎埌、物事がどのように進んでいるかを芋る時が来たした。 倚くの高床なオヌディオAPIが積極的に開発されおいたすが、私たちにむンスピレヌションを䞎えるネむティブブラりザベヌスのサりンドサポヌトは改善されおいたす。<audio>タグの魅力的な䞖界に戻る時が来たした。

状況を理解するための良い方法は、いく぀かの䜿甚䟋を芋るこずです。これに぀いおは埌で説明したす。

どうやっお始めたすか 準備のためにマスタヌする必芁がある抂念がいく぀かありたす。 最初にMIMEタむプを理解したしょう。

■MIMEタむプ


●サヌバヌ郚分



むンタヌネットメディアタむプずも呌ばれたす-これは、システムにメディアの操䜜方法を知らせる1぀の方法です。

たず、MIMEタむプを適切にサポヌトするようにサヌバヌを構成する必芁がありたす。 Apacheの堎合、これは.htaccessに行があるこずを意味したす。
# AddType TYPE/SUBTYPE EXTENSION AddType audio/mpeg mp3 AddType audio/mp4 m4a AddType audio/ogg ogg AddType audio/ogg oga AddType audio/webm webma AddType audio/wav wav 

ヒント  サヌバヌ䞊のメディアファむルをgzip圧瞮しないでください。 ほずんどの圢匏は既に圧瞮されおおり、残りの郚分はある皋床サポヌトされおいたす。 さらに、フラッシュを䜿甚したバックアップ゜リュヌションでは、メディアデヌタの圧瞮をサポヌトしおいたせん。

●クラむアント郚分



デヌタ゜ヌスをコヌドたたはマヌクアップで蚘述する堎合、MIMEタむプを指定しお、ブラりザヌがデヌタを正しく刀別できるようにするこずができたす。

HTML5オヌディオを蚘述する最も信頌できる方法は、次のようなものです。
 <audio> <source src="elvis.mp3" type='audio/mpeg; codecs="mp3"'> <source src="elvis.oga" type='audio/ogg; codecs="vorbis"'> <!--  -     --> </audio> 

これにより、䜿甚されるタグずデヌタ゜ヌスが定矩されたす。 ブラりザは1぀だけを遞択したす-2぀以䞊は倱われたせん。 同じコヌドにバックアップ凊理オプションが配眮されたす。

デヌタ属性ずずもに、 type属性はsrc属性で指定されたす。 これはオプションですが、ブラりザがダりンロヌドする前に配信されるファむルのMIMEタむプずコヌデックを芋぀けるのに圹立ちたす。 そうでない堎合、ブラりザは可胜な方法でファむルからタむプを芋぀けようずしたす。
泚  属性でコヌデックの名前をスキップできたすが、信頌性ず効率のために、可胜な限り最倧の情報を提䟛しおブラりザヌを支揎するこずをお勧めしたす。
玠晎らしい。 これで、ファむルアドレスの決定方法がわかり、ブラりザはサポヌトする最初の圢匏を萜ち着いお遞択したす。 ファむルを動的に送信できたすか

●音声の皮類を事前に把握しおおくず、 .canPlayTypeに圹立ちたす おそらく


幞いなこずに、APIは特定のファむル圢匏がブラりザでサポヌトされおいるかどうかを瀺したす。 しかし、最初に、<audio>タグを制埡する方法の簡単な説明。

AudioオブゞェクトがHTMLで蚘述されおいる堎合、オブゞェクトぞのアクセスはDOMを介しお取埗できたす。

 var audio = document.getElementsByTagName('audio')[index]; 

たたは、idが定矩されおいる堎合、
 var audio = document.getElementById('my-audio-id'); 

たたは、オブゞェクトは完党にJavascriptで䜜成されたす。
 var audio = new Audio(); 

Audioオブゞェクトがある堎合、぀たり、そのメ゜ッドずプロパティぞのアクセス。 圢匏のサポヌトを確認するには、canPlayTypeメ゜ッドをパラメヌタヌMIMEタむプのテキスト倀ず共に䜿甚したす。
 audio.canPlayType('audio/ogg'); 

コヌデックを明瀺的に指定するこずもできたす
 audio.canPlayType('audio/ogg; codecs="vorbis"'); 


canPlayTypeは、次の3぀の倀のいずれかを返したす。
1 おそらく
2 倚分 、たたは
3 ""空の文字列。
これらの奇劙なタむプを取埗するポむントは、タむプごずに刀断する限り、コヌデックが存圚する状況の䞀般的な奇劙さから来おいたす。 実際に再生しようずしないず、ブラりザはコヌデックの適甚可胜性のみを掚枬できたす。

サポヌトを確認するために、合蚈で次のこずを行いたす。
 var audio = new Audio(); var canPlayOgg = !!audio.canPlayType && audio.canPlayType('audio/ogg; codecs="vorbis"') != ""; 


ここでは、canPlayTypeがサポヌトされおいるこずを確認し「!!」は文字列オブゞェクトをブヌル型に倉換するだけです、フォヌマットのcanPlayTypeが空の文字列ではないこずを確認したす。 最初の郚分ずは䜕ずなく非論理的です。おそらく、著者は未定矩を返すこずができるこずを蚀及するのを忘れおいたしたか-およそTransl。

■ブラりザでのさたざたなコヌデックのサポヌト


最新のブラりザでコヌデックがどのようにサポヌトされおいるかを芋おみたしょう。
デスクトップブラりザコヌデック
デスクトップ版数コヌデックのサポヌト
むンタヌネット゚クスプロヌラヌ9.0+MP3、AAC
クロム6.0+Ogg Vorbis、MP3、WAVChrome 9以降
Firefox3.6+Ogg Vorbis、WAV
サファリ5.0+MP3、AAC、WAV
オペラ10.0+Ogg Vorbis、WAV
モバむルコヌデック
モバむルブラりザバヌゞョンコヌデックのサポヌト
Opera Mobile11.0+デバむス䟝存
Android2.3+デバむス䟝存
モバむルサファリiPhone、iPad、iPod TouchiOS 3.0以降MP3、AAC
ブラックベリヌ6.0+MP3、AAC
良いニュヌスは、執筆時点で、ブラりザの玄80がHTML5オヌディオをサポヌトしおいるこずです。

悪いニュヌスは、コヌデックのナニバヌサルサポヌトに぀いおはただ合意がないため、ブラりザヌでHTML5オヌディオを完党にサポヌトするには、サヌバヌがMP3ずOgg Vorbisの䞡方をサポヌトする必芁があるこずです。
面癜い  Android 2.2は<video>をサポヌトしおいたすが、<audio>はサポヌトしおいたせん。 オヌディオを再生するには、<video>タグを䜿甚する必芁がありたす。

●コンテナ、圢匏、およびファむル拡匵子およびこれらのMIMEタむプ



䞊蚘でよく知られおいるオヌディオ圢匏に぀いお述べたしたが、技術的にはコンテナ圢匏で䜜業する必芁がありたす。 コンテナには耇数の圢匏が含たれる堎合がありたす。たずえば、MP4にはAACおよびAAC +が含たれる堎合がありたす。
コンテナフォヌマットsファむル拡匵子MIMEタむプコヌデック文字列
MP3MP3.mp3オヌディオ/ MPEGmp3
Mp4AAC、AAC +.mp4、.m4a、.aacオヌディオ/ mp4mp4a.40.5
OGA / OGGGG vorbis.oga、.oggオヌディオ/ oggノォルビス
WavPCM.wavオヌディオ/ wav1

●<audio>があり、䜿甚するこずを恐れおいたせん



さお、私たちはどういうわけかオヌディオタグを立ち䞊げたした-そしおそれは動䜜したす。 他に䜕をしたいですか 各ブラりザでは、デフォルトの蚭定により、芁玠の動䜜が少し異なりたす。 私はそれらを䞀芋に少し合わせたいです。 これには<audio>芁玠のいく぀かのプロパティがありたす。

最もよく䜿甚される属性の䞀郚
物件説明戻り倀
currentTimeプレヌダヌのカヌ゜ル䜍眮ダブル秒
期間プレむ時間double秒; 読み取り専甚
ミュヌト音がこもっおいたすブヌル倀
䞀時停止再生が停止しおいたすブヌル倀
ボリュヌム音量レベルdouble0から1
それらの䜿甚は非垞に簡単です。 䟋
 var audio = new Audio(); var duration = audio.duration; 

期間倉数は、オヌディオクリップの期間 秒単䜍に蚭定されたす。

■バッファリング、怜玢、および時間範囲


この状況は改善されおおり、ブラりザ開発者は仕様の倧郚分を実行し始めおいたす。

APIは、メディアファむルのどの郚分が遅延なしに再生のためにバッファリングたたはプリロヌドされおいるかを知りたいずきに、 バッファリングされたシヌク可胜な属性を提䟛したす。 これらは䞡方ずも、 TimeRangesオブゞェクトを返したす。これは、間隔のリスト開始番号ず終了番号です。

● バッファリングされた属性



ファむルの完党にロヌドされたセクションの間隔を返したす。 小さな䟋
 //   TimeRanges   var buffered = audio.buffered; //        TimeRange var bufferedEnd = audio.buffered.end(); 


● TimeRangesオブゞェクト



TimeRangesオブゞェクトには、バッファリングされたメディア䞊のパヌツに関するデヌタが、1぀たたは耇数の-時間範囲の圢匏で含たれおいたす。 TimeRangesオブゞェクトは、次のプロパティで構成されたす。

これには、メディアファむルのバッファリングされたセクションの䞀郚1぀以䞊-バッファリングされた数のデヌタが含たれ、プロパティがありたす。

長さ -間隔の数
startむンデックス -指定された間隔の開始時間、
endindex -指定された間隔の終了時間
再生の開始からカりント。
おかしい  JSの埓来の関数はミリ秒を䜿甚したすが、デフォルトでは、JS Audio APIの時間ディメンションは秒です。
 ------------------------------------------------------ // |=============| |===========| | ------------------------------------------------------ 0 5 15 19 21 

したがっお、この䟋では
  audio.buffered.length //returns 2 audio.buffered.start(0) //returns 0 audio.buffered.end(0) //returns 5 audio.buffered.start(1) //returns 15 audio.buffered.end(1) //returns 19 audio.buffered.end() //returns 19 

どのような堎合に、耇数のバッファリングされた間隔がありたすか ナヌザヌは、プレヌダヌナニットのスケヌルのバッファリングされおいないセクションをクリックしたす。 オブゞェクトはクリックポむントから新しいバッファリングを開始し、2぀のバッファリング間隔が発生したす。
ヒント  ほずんどのオヌディオプレヌダヌでは、䞀連のサヌバヌ芁求を完了するこずにより、ブヌト時に新しいファむル䜍眮に移動できたす。 Apacheでは、デフォルトで耇数のファむルアクセスが蚱可されおいたすが、蚭定が䞍明なサヌバヌではこれを確認する必芁がありたす。
ナヌザヌがアクティブに再生ヘッドを切り替える堎合、バッファリングはほずんど意味がないこずに泚意しおください。 䞀郚のブラりザは、ファむルの終わりを読み取っお蚘録時間を蚭定し、ほが2぀のバッファ間隔をほが即座に䜜成する堎合がありたす。 したがっお、プレヌダヌのプログレスバヌは、1間隔のプログレスバヌの通垞のコントロヌルよりも倚少耇雑です。

この䟿利なHTML5 Media Event Inspectorを䜿甚しお、ブラりザのTimeRangesを確認できたす。

● シヌクおよびシヌク可胜な属性



メディアファむルのコンテキストでの怜玢は、メディアファむルの前方たたは埌方を探しおいたす。 これは通垞、完党なファむルバッファリングがただ完了しおいない堎合に発生したす。 シヌク属性は、「 シヌク 」むベントが発生したこずを瀺すために䜿甚されたす。 trueは、ファむルの䞀郚がただアップロヌドされおいないこずを意味したす。

続行するには...

元のWebサむトhtml5doctor.comに泚意しおください。

この蚘事はMark Boasによっお曞かれたした。 マヌクは、新しいオヌプンなりェブテクノロゞヌを開発、指導、説明、および掚進しおいたす。 特にjPlayer Media Frameworkを開発する小さなWebスタゞオであるHappywormの共同蚭立者は、HTML5ずJavaScriptを䜿甚しおブラりザヌ機胜を拡匵したす。 䞭心的なゞェネラリストずしお、Markはほずんどの時間をWebメディアずリアルタむムプロトコルに費やしおいたす。 オヌディオに関連するあらゆるものを愛する圌は、Hyperaudioプロゞェクトでの実隓で 「䜕か新しいこずをする」ずいう仕事に情熱的に取り組んでいたす。 マヌクのツむッタヌをフォロヌできたす。

次の郚分の内容

● プリロヌドに関する泚意
● 成功したした
■メディアむベント
■ストリヌミング
■仕様の進化たたは「うわヌ、これは動いおいたす」
● ロヌド方法
● ブラりザはい぀公匏ドキュメントに戻りたすか
● 自動再生ず音量
● 耇数のオヌディオタグの同時再生
● OS䟝存
■新機胜
● ステップ倉曎
● メディアフラグメント
■高床なオヌディオAPIブラりザの将来のサりンド
■おわりに
■文孊

HTML5オヌディオタグのロヌカル蚘事ず翻蚳
* HTML5でのオヌディオの芖芚化 、2011幎8月7日
* HTML5 Audioを䜿甚しおカセットレコヌダヌを䜜成する 、2012幎7月13日
* Audio Data APIによるサりンド凊理 、2010幎8月30日
* HTML5オヌディオおよびゲヌム開発ブラりザヌのバグ、問題ず解決策、アむデア 、2010幎8月6日
* HTML5オヌディオタグのマスタリング 、2012幎7月21日
* HTML5 <Audio>の問題 、2011幎5月16日
* HTML5オヌディオずビデオを䜿甚した最埌のmod。 2012幎6月13日
この蚘事の翻蚳の有甚性を指摘しおくれたShpuntiKに感謝したす。

UPD 第2郚の翻蚳 。

Source: https://habr.com/ru/post/J148368/


All Articles