2011-12-22 20 views
5

Estoy intentando reproducir mp4 videos en streaming desde un servidor usando nativa VideoView, lamentablemente sigo obteniendo un error de "no se puede reproducir vídeo".Android: no puede reproducir video mp4

Lo extraño es que el mismo video se reproduce bien en Froyo pero no se reproduce en HoneyComb. Probé el mismo video con MX Video Player (en HC) y funciona muy bien.

Otro problema importante es que no puedo volver a codificar los videos, así que tengo que usar los videos tal como están.

  • ¿Qué está causando el error?
  • ¿Cómo puedo reproducir el video?
  • ¿Debo encontrar una forma de incluir una biblioteca de códec en mi aplicación?

A continuación se presentan los detalles de 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 

Y las especificaciones del vídeo que no se pueden reproducir:

 

    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     : [email protected] 
    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 

+0

Estaba pensando en agregar la biblioteca ffmpeg a mi aplicación, pero sé muy poco sobre Android NDK. Alguien tiene pistas o enlaces para proporcionar? – sebataz

Respuesta

0

Algunos dispositivos Froyo (por ejemplo, Samsung Galaxy Tab) utilizar el OpenCore Mediaframework mientras que otros usan Stagefright. Desde pan de jengibre todos los dispositivos que yo sepa utilizan Stagefright. Entonces esto podría explicar tu experiencia.

Al jugar a través de HTTP o RSTP existen restricciones adicionales para el contenedor de video.

de los docs desarrollador:

Para 3GPP y MPEG-4 contenedores, el átomo moov debe preceder a cualquier mdat átomos, sino que debe tener éxito el átomo ftyp.

1

El problema podría ser con la codificación de video. Android FROYO y Gingerbread no son compatibles con los formatos H264 que no sean "Baseline" H264. Entonces, si su video es Mp4 & H264 codificado, asegúrese de que su "línea de base AVC" esté codificada. Use algunas herramientas como "Información de medios" en Windows/Linux y verifique su codificación de video.

Cuestiones relacionadas