Android: не может воспроизводить видео в формате mp4 - PullRequest
5 голосов
/ 22 декабря 2011

Я пытаюсь воспроизвести mp4 потоковое видео с сервера с использованием собственного VideoView , к сожалению, у меня постоянно появляется ошибка " Не удается воспроизвести видео ".

Странно то, что такое же видео хорошо воспроизводится на 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

и спецификации видео, которое не может быть воспроизведено:


    General
    Format                           : MPEG-4
    Format profile                   : Base Media
    Codec ID                         : isom
    File size                        : 60.7 MiB
    Duration                         : 7mn 3s
    Overall bit rate mode            : Variable
    Overall bit rate                 : 1 201 Kbps
    Writing application              : Lavf52.37.0

    Video
    ID                               : 1
    Format                           : AVC
    Format/Info                      : Advanced Video Codec
    Format profile                   : High@L3.1
    Format settings, CABAC           : Yes
    Format settings, ReFrames        : 4 frames
    Codec ID                         : avc1
    Codec ID/Info                    : Advanced Video Coding
    Duration                         : 7mn 3s
    Duration_FirstFrame              : 40ms
    Bit rate                         : 1 072 Kbps
    Width                            : 1 024 pixels
    Height                           : 576 pixels
    Display aspect ratio             : 16:9
    Frame rate mode                  : Constant
    Frame rate                       : 25.000 fps
    Color space                      : YUV
    Chroma subsampling               : 4:2:0
    Bit depth                        : 8 bits
    Scan type                        : Progressive
    Bits/(Pixel*Frame)               : 0.073
    Stream size                      : 54.2 MiB (89%)
    Writing library                  : x264 core 65 r0+1016 dbc5ef0
    Encoding settings                : cabac=1 / ref=4 / deblock=1:0:0 / analyse=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 / scenecut=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
    Language                         : English

    Audio
    ID                               : 2
    Format                           : AAC
    Format/Info                      : Advanced Audio Codec
    Format profile                   : LC
    Codec ID                         : 40
    Duration                         : 7mn 3s
    Bit rate mode                    : Variable
    Bit rate                         : 122 Kbps
    Channel(s)                       : 2 channels
    Channel positions                : Front: L R
    Sampling rate                    : 48.0 KHz
    Compression mode                 : Lossy
    Stream size                      : 6.18 MiB (10%)
    Language                         : English

Ответы [ 2 ]

1 голос
/ 19 марта 2013

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

0 голосов
/ 17 февраля 2012

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

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

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

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

...