次のようなものを指定する方法が必要です
<audio src="http://somesite.com/track/377374"></audio>
ソースとしてmp3ファイルがあります。URLの最後に.mp3拡張子を使用できないため、これを実現する別の方法が必要です。オーディオタグで指定されているファイル形式を判別できない場合は、古いブラウザバージョンにフォールバックするカスタムプレーヤーjQueryプラグインを使用しています。これを達成する方法はありますか?
次のようなものを指定する方法が必要です
<audio src="http://somesite.com/track/377374"></audio>
ソースとしてmp3ファイルがあります。URLの最後に.mp3拡張子を使用できないため、これを実現する別の方法が必要です。オーディオタグで指定されているファイル形式を判別できない場合は、古いブラウザバージョンにフォールバックするカスタムプレーヤーjQueryプラグインを使用しています。これを達成する方法はありますか?
を使用する代わりに、要素src="..."
をネストすることができます。<source>
これにより、MIMEタイプを指定できます。
あなたの例のために:
<audio>
<source src="http://somesite.com/track/377374" type="audio/mpeg3" />
</audio>
(免責事項:これがどれほど広くサポートされているか、またはjQueryプラグインで発生している問題が実際に解決されるかどうかを確認するためのテストは行っていません。MDNドキュメントに基づいています。)
ファイル拡張子をチェックして照合しようとする機能があります
canPlayType = function( file )
{
var audioElement = document.createElement( 'audio' );
return !!( audioElement.canPlayType &&
audioElement.canPlayType( 'audio/' + file.split( '.' ).pop().toLowerCase() + ';' ).replace( /no/, '' ) );
};
この関数がtrueを返すか、次のようなものに変更されたとしましょう。
canPlayType = function( type )// type = mp3
{
var audioElement = document.createElement( 'audio' );
return !!( audioElement.canPlayType &&
audioElement.canPlayType( 'audio/' + type.toLowerCase() + ';' ).replace( /no/, '' ) );
};
次に、プラグイン行75の更新されたコードは、ファイルがmp3であると想定し、srcを使用する場合のようにこれを行います...ソース要素は引き続き従来の方法で使用できます。
else if( canPlayType( 'mp3' ) ) isSupport = true; // here change this
ソースタイプを検出するには(@ruakhによって提案されたように、コードを(再度)編集する必要があります:
if( typeof audioFile === 'undefined' )
{
$this.find( 'source' ).each( function()
{
audioFile = $( this ).attr( 'src' );
var sourceType = $( this ).attr( 'type' );
if( typeof audioFile !== 'undefined' &&
typeof sourceType !== 'undefined' &&
canPlayType( sourceType.split( '/' ).pop().toLowerCase() ) )
{
isSupport = true;
return false;
}
});
}
これは、ページへのリンクを壊さずに最後に.mp3を付けるだけでよい場合に、ここで創造性を発揮しようとする私の最初のアイデアでした。次のようなハッシュタグのクエリ文字列を使用できます。
URLを変更できる場合は<audio src="http://somesite.com/track/377374?i=.mp3"></audio>
、プラグインをバイパスし、ファイルタイプを特定せずにURLを使用できるようにします。
ただし、もちろん、最後に.mp3を表示したくない場合は、このアイデアを破棄してください。