AACオーディオソースがAndroidと互換性があるかどうかを検出する方法を理解するのに問題があります。Androidでサポートされているメディアフォーマットページには、3GP、MPEG4、またはADTS raw AACとして配信された場合、「AAC LC/LTP」と表示されます。LCは「低複雑度」を意味し、LTPは「長期予測」を意味するようですが、私の最大のフラストレーションは、AndroidでサポートされているAACプロファイル/モジュールを決定することです。ffmpegに入力を実行すると、そのAACが表示されますが、拡張されていませんAACに関する情報。ソースの例はhttp://6693.live.streamtheworld.com:80/WTMJAMAAC_SCです。誰かアイデアがありますか?
3 に答える
http://mediainfo.sourceforge.net/en/Downloadから入手できる MediaInfo ライブラリを使用して、プログラムで拡張メディア情報を取得できます 。
「DLL」またはその他のメディア ダウンロードには、C、C# などのサンプル コードが含まれています。コードを記述したくない場合は、同じ Web サイトから、ライブラリを使用して情報を表示するプログラム「MediaInfo」をダウンロードできます。
Android がサポートするメディア形式のリンクには、「最大 160 kbps の標準ビット レートと 8 ~ 48 kHz のサンプリング レートの任意の組み合わせのモノラル/ステレオ コンテンツ」と記載されています。以下のサンプルでは、チャネル、全体のビット レート、およびサンプリング レートがすべて表示されていることに注意してください。
「最大 160 kbps」が「全体で最大 160 kbps」を意味するのか、それとも「可変ビット レート (VBR) でエンコードされたものを含め、ファイルのどの部分も 160 kbps を超えてはならない」ことを意味するのか、自分でテストする必要があるかもしれません。256KBit VBR AAC 6 チャンネル オーディオを備えたシングルコア Android フォンで映画を再生したことは注目に値しますが、明らかにリア サラウンド チャンネルは聞こえませんでした。これらの理由から、リンクで提案されている制限は Google が許可する最小限のものであると思われますが、実際にサポートされているオーディオ形式ははるかに広範です。
実際の AAC ファイルの例を次に示します (MediaInfo プログラムを使用):
Format : ADTS
Format/Info : Audio Data Transport Stream
File size : 176 KiB
Duration : 30s 707ms
Overall bit rate : 46.8 Kbps
Audio
Format : AAC
Format/Info : Advanced Audio Codec
Format version : Version 4
Format profile : LC
Format settings, SBR : Yes
Format settings, PS : Yes
Muxing mode : ADTS
Duration : 30s 707ms
Bit rate mode : Constant
Bit rate : 46.8 Kbps
Channel(s) : 2 channels
Sampling rate : 44.1 KHz
Stream size : 176 KiB (100%)
MediaInfo のラッパー ライブラリを C# で作成しました。MediaInfo を使用する必要はありませんが、その使用がはるかに簡単になり、より「.NET フレンドリー」になります。ここで見つけることができます: MediaInfo.Net。
- ソースをMedia Player Classicにロードします。
- そのプロパティを表示します。
- MediaInfo タブには、次のように表示されます。
- フォーマット:AAC
- フォーマットプロファイル:LC
いくつかのファイルに使用されているプロファイルを確認したいだけの場合は、VLC またはその他のプログラム (Sheepy が既に提案したものなど) を使用できます。VLC ではExtras -> Media Information -> CodecDetails and in your example stream
、AAC SBR+PS (これは高効率プロファイル) です。androidでデコード可能です。
Android で再生するメディアを制御できる場合は、クロス プラットフォームのモバイル メディアに関するこのブログ記事を参照して、正しいエンコーディングを確認してください。そうでない場合 (たとえば、ユーザーが独自の URL やファイルを選択できる可能性があるため)、代わりに例外をキャッチしてエラー メッセージを表示する必要があります。そうすれば、将来の Android バージョンでサポートされる可能性のある新しいメディア タイプに対する将来の証明にもなります。