在某些Android设备(版本4+)中播放视频时出现问题,但在其他设备上则不会播放

遵循Android开发人员的视频设置,http://developer.android.com/guide/appendix/media-formats.html我使用ffmpeg编码视频,如下所示:

ffmpeg -i gravityTrailer.mp4 -y -f mp4 -vcodec libx264 -profile:v baseline -acodec aac    -strict -2  -profile:a aac_low -b:v 500k -ar 44100 -b:a 128k -ac 2 -r 30 -s 480x360  output_hq.mp4

这对应于android开发者的表2中sd高质量(上面的链接)。

然后我把这个视频放在一个服务器上,并使用android.media.MediaPlayer类来从这个URL重现它

https://cloudapp.somedomain.com/bmftvideos/output_hq.mp4

问题是视频在Android版本4+上播放

你可以看到视频:LG G2,索尼xperia S

你无法看到视频:Samsung Galaxy S4,BQ(西班牙语)aquaris 4.5

我不知道为什么

这是ffmpeg输出:

ffmpeg version 1.2.6 Copyright (c) 2000-2014 the FFmpeg developers
  built on Mar  5 2014 08:21:01 with gcc 4.8.2 (GCC) 20131212 (Red Hat 4.8.2-7)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-frei0r --enable-gnutls --enable-libass --enable-libcelt --enable-libdc1394 --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14e5ba0] stream 0, timescale not set
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14e5ba0] max_analyze_duration 5000000 reached at 5013333 microseconds
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'gravityTrailer.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2013-12-01 03:59:56
    genre           : Trailer
    artist          : Warner Bros.
    title           : Gravity - 2K Trailer
    encoder         : HandBrake 0.9.9 2013051800
    date            : 2013
  Duration: 00:02:27.07, start: 0.000000, bitrate: 20296 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 2048x858, 20149 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Metadata:
      creation_time   : 2013-12-01 03:59:56
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 153 kb/s
    Metadata:
      creation_time   : 2013-12-01 03:59:56
    Stream #0:2: Video: mjpeg, yuvj420p, 102x150 [SAR 72:72 DAR 17:25], 90k tbr, 90k tbn, 90k tbc
[libx264 @ 0x1667680] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x1667680] profile Constrained Baseline, level 3.0
[libx264 @ 0x1667680] 264 - core 130 r2282 1db4621 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output_hq.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    date            : 2013
    genre           : Trailer
    artist          : Warner Bros.
    title           : Gravity - 2K Trailer
    encoder         : Lavf54.63.104
    Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 480x360, q=-1--1, 500 kb/s, 15360 tbn, 30 tbc
    Metadata:
      creation_time   : 2013-12-01 03:59:56
    Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      creation_time   : 2013-12-01 03:59:56
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (aac -> aac)
Press [q] to stop, [?] for help
frame= 4410 fps= 65 q=-1.0 Lsize=   11154kB time=00:02:27.07 bitrate= 621.3kbits/s dup=885 drop=0    
video:9062kB audio:1969kB subtitle:0 global headers:0kB muxing overhead 1.115392%
[libx264 @ 0x1667680] frame I:186   Avg QP:28.41  size:  4446
[libx264 @ 0x1667680] frame P:4224  Avg QP:29.20  size:  2001
[libx264 @ 0x1667680] mb I  I16..4: 75.5%  0.0% 24.5%
[libx264 @ 0x1667680] mb P  I16..4:  7.5%  0.0%  3.6%  P16..4: 23.1%  6.2%  1.8%  0.0%  0.0%    skip:57.7%
[libx264 @ 0x1667680] final ratefactor: 27.96
[libx264 @ 0x1667680] coded y,uvDC,uvAC intra: 24.0% 31.9% 8.6% inter: 7.4% 7.6% 0.6%
[libx264 @ 0x1667680] i16 v,h,dc,p: 58% 15% 13% 14%
[libx264 @ 0x1667680] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28%  9% 27%  7%  6%  8%  5%  7%  3%
[libx264 @ 0x1667680] i8c dc,h,v,p: 80%  7% 12%  2%
[libx264 @ 0x1667680] ref P L0: 84.7%  9.4%  5.9%
[libx264 @ 0x1667680] kb/s:504.98


三个建议,他们都没有直接提供解决方案,但可能导致你。

  • 只尝试视频,即删除音频,看看它是否是音频编解码器问题
  • 只尝试音频,放下视频以确认它是一个视频问题
  • 如果两次都不起作用

  • 切换到最新的ffmpeg,可能你的mp4不是由他的设备处理的
  • 如果只有音频或视频只播放,则必须是那里的设置。 您的aac现在是我的主要嫌疑人。 尝试MP3,只是踢,看看会发生什么。 无论哪种方式,因为我没有流或设备,我只能说我会试验这种方式来找出问题所在。

    链接地址: http://www.djcxy.com/p/84041.html

    上一篇: Problems video playing in some android devices (version 4+) but not in others

    下一篇: Doesn't gets frame from video in android 3.2.1 using MediaMetadataRetriever