У меня есть приложение, использующее MediaPlayer, который отлично работает при потоковой загрузке MP3 файлов. Я попытался использовать то же приложение для потоковой загрузки файлов AAC. И он отлично воспроизводит файлы. Что не работает, когда я пытаюсь пропустить в потоке, используя MediaPlayer.seekTo() с AAC. Это снова отлично работает в mp3. Для потока 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 с прогрессивной загрузкой. Или это может быть ошибкой в Android Media Player, созданной примерно в 5.0.2 таймфрейма. Или это может быть и то, и другое.
Почему это не работает?