我很难让我的Android应用程序播放SD卡上的视频.无论大小,比特率,视频格式或我能想到的任何其他设置都无关紧要,模拟器和我的G1都不会播放我尝试编码的任何内容.我也尝试了一些来自网络的视频(各种视频格式,比特率,有和没有音频轨道等),但这些都没有.
我不断得到的是一个对话框,上面写着:
"无法播放视频"
"抱歉,这部影片无法播放."
在LogCat中报告了错误,但我不理解它们,我试图在互联网上搜索没有任何运气的进一步解释.见下文:
03-30 05:34:26.807: ERROR/QCOmxcore(51): OMXCORE API : Free Handle 390d4
03-30 05:34:26.817: ERROR/QCOmxcore(51): Unloading the dynamic library for OMX.qcom.video.decoder.avc
03-30 05:34:26.817: ERROR/PlayerDriver(51): Command PLAYER_PREPARE completed with an error or info PVMFErrNoResources
03-30 05:34:26.857: ERROR/MediaPlayer(14744): error (1, -15)03-30 05:34:26.867: ERROR/MediaPlayer(14744): Error (1,-15)
Run Code Online (Sandbox Code Playgroud)
有时我也得到这个:
03-30 05:49:49.267: ERROR/PlayerDriver(51): Command PLAYER_INIT completed with an error or info PVMFErrResource
03-30 05:49:49.267: ERROR/MediaPlayer(19049): error (1, -17)
03-30 05:49:49.347: ERROR/MediaPlayer(19049): Error (1,-17)
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码(在我的onCreate()方法中):
this.setContentView(R.layout.main);
//just a simple VideoView loading files from the SD …Run Code Online (Sandbox Code Playgroud) 我在另一个问题(http://stackoverflow.com/questions/8012494/sorry-this-video-cannot-be-played-streaming-mp4-to-android/8012874#8012874)中询问了如何使用VideoView在Android中进行视频播放.显然,问题在于我的视频编码方式,因为另一个视频(网络上的512kb mp4)使用我的代码正确播放.由于我的最终用户将视频上传到网站,我对视频本身没有任何控制权,但我确实可以控制重新编码这些视频.我使用ffmpeg它们重新编码,使它们达到标准MP4(H.264 + AAC)格式并将它们缩放到相同的大小(320x240).
以下是无法播放的视频的ffmpeg信息:
sh-3.2$ ffmpeg -i video.bad.mp4
FFmpeg version SVN-r25679-snapshot, Copyright (c) 2000-2010 the FFmpeg developers
built on Nov 5 2010 09:34:37 with gcc 4.3.2
configuration: --prefix=/usr --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-libgsm --enable-x11grab --enable-libx264 --enable-libtheora --extra-cflags=-Wall --enable-swscale --enable-libdc1394 --enable-nonfree --disable-mmx --disable-stripping --enable-avfilter --disable-altivec --disable-armv5te --disable-armv6 --disable-vis --enable-nonfree --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3
libavutil 50.32. 6 / 50.32. 6
libavcore 0.12. 0 / 0.12. 0
libavcodec 52.94. 3 / 52.94. 3
libavformat 52.84. 0 / …Run Code Online (Sandbox Code Playgroud) 我可以成功地从URL(服务器)流式传输一些视频,
但其他人(我的视频到我的服务器)不是.
您可以在我的代码中看到(工作/不工作) 我遇到了这个问题. "抱歉,此视频无效,无法流式传输到此设备"
以下代码:
String url = null;
// url = "rtsp://v5.cache5.c.youtube.com/CiILENy73wIaGQmC00ZlwwIDOxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"; // Working
// url = "http://daily3gp.com/vids/747.3gp"; // Working
url = "http://www.ooklnet.com/files/381/381489/video.mp4"; // Working
// url = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"; // Working
// url = "http://dl.dropbox.com/u/80419/santa.mp4"; // Working
// url = "http://trekvn.hostoi.com/encode_normal.mp4"; // Not Working
// url = "http://trekvn.hostoi.com/output_encode_mp4_box.mp4"; // Not Working
// url = "http://www.ourserversite.com:14556/ingCloud/users/400010001/mp4_320p/e8d8535852a98c949640c5d618ac23d320131022174507.mp4"; // Not Working
// url = "http://trekvn.hostoi.com/mpeg_2_ts.ts"; // Not Working
videoviewer.setVideoURI(Uri.parse(url));
videoviewer.requestFocus();
videoviewer.setKeepScreenOn(true);
videoviewer.setOnErrorListener(this);
videoviewer.setOnPreparedListener(this);
@Override
public void onPrepared(MediaPlayer …Run Code Online (Sandbox Code Playgroud) android video-streaming media-player http-streaming android-videoview