我在弄清楚如何检测AAC音频源是否与Android兼容时遇到问题。 Android支持的媒体格式page表示'AAC LC / LTP'作为3GP,MPEG4或ADTS原始AAC提供。看来LC意味着“低复杂性”而LTP意味着“长期预测”但是,我最大的挫败感是确定Android上支持哪些AAC配置文件/模块。当我将输入运行到ffmpeg时,我看到它的AAC,但没有扩展有关AAC的信息。示例来源是http://6693.live.streamtheworld.com:80/WTMJAMAAC_SC。任何人都有任何想法?
答案 0 :(得分:3)
您可以使用此处提供的MediaInfo库以编程方式获取扩展媒体信息: http://mediainfo.sourceforge.net/en/Download
“DLL”或其他媒体下载包括C,C#等示例代码。 如果您不想编写任何代码,同一网站会下载“MediaInfo”,这是一个使用该库显示信息的程序。
您的Android支持的媒体格式链接说:“ Mono / Stereo内容,标准比特率高达160 kbps,采样率从8到48 kHz ”。请注意,下面的示例显示了所有这些:通道,总比特率和采样率。
可能有必要自己测试“高达160 kbps”是否意味着“总体上高达160 kbps”或“文件的任何部分,包括那些以可变比特率(VBR)编码的文件,都可能超过160kbps。” 值得注意的是,我在我的单核Android手机上播放了具有256KB VBR AAC 6声道音频的电影,但显然我没有听到后环绕声道。由于这些原因,我怀疑链接中提出的限制是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%)
我在C#中为MediaInfo编写了一个包装器库。没有必要使用MediaInfo,但使其使用更容易,更“.NET友好”。它可以在这里找到:MediaInfo.Net。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您只想检查用于几个文件的配置文件,您可以使用VLC或任何其他程序(如Sheepy已建议的那样) - 在VLC中它位于Extras -> Media Information -> CodecDetails and in your example stream
,它是AAC SBR + PS(这是High-Efficiency Profile),decodable by android。
如果您确实可以控制要通过Android播放的媒体,可能需要查看cross platform mobile media上的此博客文章,了解正确的编码方式。如果不是(例如因为用户可能选择自己的URL或文件),您应该捕获任何异常并显示错误消息。这样,您也可以在未来的Android版本中支持新的媒体类型。