Android: не удается воспроизвести видео mp4

Я пытаюсь воспроизвести потоковое видео mp4 с сервера, используя собственный VideoView , к сожалению, я продолжаю получать сообщение « Can not play video ».

Странно то, что одно и то же видео хорошо воспроизводится на Froyo, но не будет играть на HoneyComb. Я пробовал одно и то же видео с MX Video Player (на HC), и он отлично играет.

Еще одна серьезная проблема заключается в том, что я не могу повторно кодировать видео, поэтому мне нужно использовать видео, как есть.

  • Что вызывает ошибку?
  • Как я могу воспроизвести видео?
  • Должен ли я найти способ включения библиотеки кодеков в мое приложение?

Ниже приведены данные из logcat:

E/MediaExtractor( 242): **********MediaExtractor::Create D/DivXPlugin( 241): DivXPlugin::onInitialize : 75 D/DivXPlugin( 241): DivXPlugin::onSetOnInfoListener : 75 D/DivXPlugin( 241): DivXPlugin::onOpenDecryptSession: Enter : 75 E/DivXPlugin( 241): DivXPlugin::onOpenDecryptSession() Not a Divx File. E/DrmManager(Native)( 241): DrmManager::openDecryptSession: no capable plug-in found D/DivXPlugin( 241): DivXPlugin::onTerminate : 75 E/MediaExtractor( 242): ************Autodetected media content as 'video/mpeg4' with confidence 0.40 D/AwesomePlayer( 242): finishSetDataSource_l getDrmInfo D/AwesomePlayer( 242): setDataSource_l E/MPEG4Extractor( 242): ftyp chunk found D/MPEG4Extractor( 242): kKeyAVCC found E/MPEG4Extractor( 242): ERROR_MALFORMED because ret=-108 E/MPEG4Extractor( 242): return ERROR_UNSUPPORTED E/MPEG4Extractor( 242): return ERROR_UNSUPPORTED D/AwesomePlayer( 242): UNKNOWN_ERROR: no Video and no Audio D/AwesomePlayer( 242): abortPrepare D/AwesomePlayer( 242): notifyListener_l E/MediaPlayer( 3906): error (1, -2147483648) E/MediaPlayer( 3906): Error (1,-2147483648) D/VideoView( 3906): Error: 1,-2147483648 

И характеристики видео, которое невозможно воспроизвести:


     Генеральная
     Формат: MPEG-4
     Профиль профиля: Base Media
     Codec ID: изома
     Размер файла: 60.7 MiB
     Продолжительность: 7 млн. 3 с
     Режим общей битовой скорости: переменная
     Общая скорость передачи: 1 201 Кбит / с
     Письменное приложение: Lavf52.37.0

     видео
     ID: 1
     Формат: AVC
     Формат / Информация: Расширенный видеокодек
     Профиль профиля: High@L3.1
     Настройки формата, CABAC: Да
     Настройки формата, ReFrames: 4 кадра
     Codec ID: avc1
     Codec ID / Информация: расширенное кодирование видео
     Продолжительность: 7 млн. 3 с
     Длительность_FirstFrame: 40 мс
     Битрейт: 1 072 Кбит / с
     Ширина: 1 024 пикселя
     Высота: 576 пикселей
     Соотношение сторон экрана: 16: 9
     Режим частоты кадров: постоянный
     Частота кадров: 25 000 кадров в секунду
     Цветовое пространство: YUV
     Хроматическая подвыборка: 4: 2: 0
     Глубина бит: 8 бит
     Тип сканирования: прогрессивный
     Биты / (пиксель * Рамка): 0,073
     Размер потока: 54,2 MiB (89%)
     Написание библиотеки: x264 core 65 r0 + 1016 dbc5ef0
     Настройки кодировки: cabac = 1 / ref = 4 / deblock = 1: 0: 0 / anal = 0x3: 0x113 / me = umh / subme = 8 / psy_rd = 1.0: 0.0 / mixed_ref = 1 / me_range = 16 / chroma_me = 1 / Trellis = 1 / 8x8dct = 1 / cqm = 0 / deadzone = 21,11 / chroma_qp_offset = -2 / threads = 6 / nr = 0 / decimate = 1 / mbaff = 0 / bframes = 16 / b_pyramid = 0 / b_adapt = 1 / b_bias = 0 / direct = 3 / wpredb = 1 / keyint = 125 / keyint_min = 25 / scenect = 40 (pre) / rc = 2pass / bitrate = 1072 / ratetol = 1.0 / qcomp = 0.80 / qpmin = 10 / qpmax = 51 / qpstep = 4 / cplxblur = 20,0 / qblur = 0,5 / ip_ratio = 1,41 / pb_ratio = 1,25 / aq = 1: 1,00
     Английский язык

     аудио
     ID: 2
     Формат: AAC
     Формат / информация: расширенный аудиокодек
     Формат профиля: LC
     Codec ID: 40
     Продолжительность: 7 млн. 3 с
     Режим бит-скорости: переменная
     Скорость передачи: 122 Кбит / с
     Канал (ы): 2 канала
     Позиции каналов: Фронт: LR
     Частота дискретизации: 48,0 кГц
     Режим сжатия: Lossy
     Размер потока: 6.18 MiB (10%)
     Английский язык

Проблема может заключаться в кодировании видео. Android FROYO и Gingerbread не поддерживают форматы H264, кроме «Baseline» H264. Поэтому, если ваше видео кодируется Mp4 и H264, убедитесь, что его «базовая линия AVC» закодирована. Используйте некоторые инструменты, такие как «Информация о медиа» в Windows / Linux и проверьте кодировку видео.

Некоторые устройства Froyo (например, Samsung Galaxy Tab) используют медиакарту OpenCore, в то время как другие используют Stagefright. Из пряников все устройства, насколько мне известно, используют Stagefright. Так что это может объяснить ваш опыт.

При воспроизведении через HTTP или RSTP существуют дополнительные ограничения для видеоконтейнера.

Из документов разработчика:

Для контейнеров 3GPP и MPEG-4 атом moov должен предшествовать любым атомам mdat, но должен преуспеть в атоме ftyp.