Невозможно воспроизвести определенные видео - PullRequest
6 голосов
/ 18 января 2011

Я пытаюсь воспроизводить фильмы на устройстве Android с нашего сервера.Это не медиа-сервер, а обычный сервер Apache.Мы используем тот же API для доступа к видео на iPhone, и он отлично работает.

На устройстве Android некоторые видео работают, а другие нет.Все они были созданы одинаково, за исключением того, что большинство из них не работают, состоят из неподвижных изображений и звука.

Мы попытались перекодировать их с помощью Videora и попытались намеки на них с помощью MP4Box.Все видео отлично воспроизводятся при хранении на SD-карте.Мы также попытались сначала загрузить видео с сервера на SD-карту, сохранить его в виде файла, а затем воспроизвести его из файла, но это тоже не работает.

Справка была бы потрясающей.Я в замешательстве.Спасибо.

Редактировать - Logcat:

01-19 08:19:12.669: DEBUG/MediaPlayer(1878): Couldn't open file on client side, trying server side

01-19 08:19:14.119: INFO/ActivityManager(1172): Displayed activity com.myproject/.VideoClass: 1966 ms (total 1966 ms)

01-19 08:19:15.779: ERROR/PlayerDriver(1071): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus

01-19 08:19:15.789: ERROR/MediaPlayer(1878): error (200, -32)

01-19 08:19:15.789: ERROR/MediaPlayer(1878): Error (200,-32)

01-19 08:19:15.789: DEBUG/VideoView(1878): Error: 200,-32

01-19 08:19:15.849: WARN/PlayerDriver(1071): PVMFInfoErrorHandlingComplete

ОБНОВЛЕНИЕ : Здесь вставка анализа видео для трех разных видео.Первые потоки в приложении с сервера.Второе видео не будет транслироваться, но может быть загружено и воспроизведено с устройства.Третий не может быть ни потоковым, ни загруженным для воспроизведения.http://pastebin.com/9qChSkFz

WTF.

1 Ответ

11 голосов
/ 01 декабря 2011

Я столкнулся с той же проблемой, и после первоначального отказа я нашел решение.

Я наткнулся на следующую страницу http://developer.android.com/guide/appendix/media-formats.html, в котором говорится:

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

После некоторых копаний я обнаружил, что это именно та проблема. Видео, записанное с определенных телефонов Android (я полагаю, до 2.3) помещает атом moov в конец файла. Это делает их неразборчивыми. Некоторый поиск в Google покажет вам, что это распространенная проблема с файлами MP4 и, в частности, с флеш-плеерами, поскольку они были созданы для потоковой передачи видео.

Существует даже определенный код ошибки для этого в MediaPlayer (но я не видел их в журнале) MediaPlayer # MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK.

Мое решение - запустить видеофайл с помощью внешнего инструмента, чтобы переместить атом moov в начало. В итоге я использовал MP4Box: http://gpac.wp.institut -telecom.fr / mp4box / и команду

MP4Box -inter 500 original.mp4 -out fixed.mp4

Надеюсь, это поможет кому-то еще!

...