2011-12-22 67 views
5

Tôi đang cố gắng để chơi video mp4 luồng từ một máy chủ sử dụng có nguồn gốc VideoView, thật đáng buồn tôi tiếp tục nhận được một lỗi "Không thể phát video".Android: không thể chơi mp4 video

Điều kỳ lạ là cùng một video phát tốt trên Froyo nhưng sẽ không phát trên HoneyComb. Tôi đã thử cùng một video với Trình phát video MX (trên HC) và nó phát rất tốt.

Một vấn đề lớn khác là tôi không thể mã hóa lại video, vì vậy tôi phải sử dụng các video như cũ.

  • Điều gì gây ra lỗi?
  • Tôi làm cách nào để phát video?
  • Tôi có nên tìm cách đưa thư viện codec vào ứng dụng của mình không?

Dưới đây là chi tiết từ 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 

Và thông số kỹ thuật của video mà không thể chơi được:

 

    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

Tôi đã nghĩ đến việc thêm thư viện ffmpeg vào ứng dụng của mình, nhưng tôi biết rất ít về NDK của Android. Bất cứ ai có gợi ý hoặc liên kết để cung cấp? – sebataz

Trả lời

0

Một số thiết bị Froyo (ví dụ, Samsung Galaxy Tab) sử dụng OpenCore mediaframework trong khi những người khác sử dụng Stagefright. Từ gingerbread tất cả các thiết bị để kiến ​​thức của tôi sử dụng Stagefright. Vì vậy, điều này có thể có thể giải thích kinh nghiệm của bạn.

Khi phát qua HTTP hoặc RSTP, có những hạn chế bổ sung đối với vùng chứa video.

từ các tài liệu phát triển:

Đối với 3GPP và MPEG-4 container, nguyên tử moov phải đặt trước bất kỳ mdat nguyên tử, nhưng phải thành công các nguyên tử ftyp.

1

Sự cố có thể xảy ra với mã hóa video. Android FROYO và Gingerbread không hỗ trợ các định dạng H264 khác với "Đường cơ sở" H264. Vì vậy, nếu video của bạn là Mp4 & mã hóa H264 đảm bảo mã "đường cơ sở AVC" được mã hóa. Sử dụng một số công cụ như "Thông tin phương tiện" trong windows/Linux và kiểm tra mã hóa video của bạn.

Các vấn đề liên quan