Problems video playing in some android devices (version 4+) but not in others

following the settings for video in android developers, http://developer.android.com/guide/appendix/media-formats.html I encoded a video using ffmpeg like this:

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

which corresponds on sd highquality in table 2 from android developers (link above).

Then i put this video in a server and use the class android.media.MediaPlayer to reproduce it from that URL like this

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

The problem is that the video is played on android version 4+

you can see the video on: LG G2, Sony xperia S

you cannot see the video on: Samsung galaxy S4, BQ (spanish) aquaris 4.5

And I don not know why

this is the ffmpeg output:

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


Three suggestions, none of them directly providing a solution but can possibly lead you to it.

  • Try video only, that is drop the audio to see if it is a audio codec problem
  • Try audio only, drop the video to confirm it is a video problem
  • If both times it does not work then

  • switch over to latest ffmpeg, probably your mp4 is not handled by he device
  • If audio only or video only play, it must be the settings over there. Your aac is my primary suspect right now. Try mp3, just for kicks and see what happens. Either way since I don't have the stream or the device, all i can say is that I would have experimented this way to figure out where the issue is.

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

    上一篇: HTML5视频无法在移动设备上显示?

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