我有一个使用MediaPlayer的应用程序,可以在播放渐进式下载MP3时正常工作。我试图使用相同的应用程序来分发进度下载AAC文件。它播放的文件很好。什么不工作是当我尝试使用MediaPlayer.seekTo()与AAC在流中跳过时。这再次在MP3中正常工作。对于AAC流,它只是重新开始播放零。如何使用Android MediaPlayer通过http流进行AAC搜索?
我的感觉是编码有关。该AAC文件尚未正确配置为流式传输。
下面是从的MediaInfo工具的输出:
Size: 2.3 MB
Format: QuickTime/MPEG-4/Motion JPEG 2000 format
Stream count: 2
Duration: 00:05:02
Bit rate: 64 kb/s
Meta info:
album_artist: Red Hot Chili Peppers
album: The Getaway
minor_version: 512
encoder: Lavf57.41.100
title: Dark Necessities
major_brand: M4V
track: 2
disc: 1
compatible_brands: isomiso2avc1
artist: Red Hot Chili Peppers
copyright: 2016 Warner Bros. Records Inc.
genre: Alternative
Stream 0
Type: video
Codec: h264
Codec profile: High 10
FourCC: avc1
Duration: 00:00:00
Width: 350
Height: 350
Sample aspect ratio: 1:1
Display aspect ratio: 1:1
Pixel format: yuv420p10le
Frame rate: 90000 fps
Meta info:
handler_name: VideoHandler
language: und
Stream 1
Type: audio
Codec: aac
FourCC: mp4a
Duration: 00:05:02
Bit rate: 64 kb/s
Sample rate: 44100 Hz
Sample format: s16
Channel: 2
Meta info:
handler_name: SoundHandler
language: und
你会发现它真的与AAC音频和没有真正的视频的视频文件包括在内。如果是这样的话,我想它需要更多的元数据来知道在哪里播放,当我要求可能会或可能不会被加载的流的一部分。此外,视频需要关键帧才能知道播放位置,因此我相信流/文件中不包含任何关键帧或“提示”框。
我还没有找到任何关于什么是缺失或如果这是可能的真实细节运气。我已经在其他版本上测试过它,它似乎在5.0.2之前运行。在5.0.2之后它不起作用。我还没有找到有关该版本中更改内容的任何详细信息。
因此,这可能是流编码问题,不允许我们通过渐进式下载http(s)流来传输此文件。或者,它可能是5.0.2时间段左右创建的Android媒体播放器中的一个错误。或者它可能是两个。
为什么不能正常工作?
有没有反正流输出作为原始AAC(与ADTS标头),而不是M4A/MP4内包含的音频? MP3正在工作,因为你得到的MP3帧(每个是几毫秒的声音),所以你只是跳过帧来寻求。 AAC也是框架(如果你没有放入容器内)。我不太熟悉Android SDK,但我相信你可以发送帧的字节到SDK解码器。我会调查一些选项。 –
我在Android的播放器中获得了对ADTS支持的混合消息,所以我不确定它是否有效。我期待着听到你发现的内容。 – chubbsondubs
你有一个样本流链接检查? –