我到处寻找解决这个问题的方法(包括so),但是仍然没有找到解决方法。
我需要在我的应用程序中有一个简单的视频播放。它比一个简单的视频窗口简单得多。简单来说,我的屏幕上有两个布局,一个包含一些其他东西,另一个是有视频窗口。还有一个按钮可以在两者之间切换。这一切工作得很好,在我发现可视视图不能出现在可见性“消失”的视图上之后,因此我将在需要时在容器布局中添加/删除它。
不过,我有实际的视频播放问题。当我试图激活它时,我得到了一个可怕的错误Sorry, this video cannot be played.
这里的一个问题就是讨论视频格式(Android -- Can't play any videos (mp4/mov/3gp/etc.)?)-但是我已经有了看起来正确的格式,320px的宽度和其他所有东西。其中一个答案提到了here“绝对有效”的视频。我试了几次-但我有另一个常见的怪兽:Sorry, this video is not valid for streaming to this device.
请注意,我是在一个实际的设备上测试,因为视频播放在模拟器中不起作用。另外请注意,该解决方案必须在android 1.6及更高版本上运行(客户的要求)。我正在测试的设备是lg gt540 optimus和android 2.1(目前我没有任何其他设备可用)。
据我所知,如果我不在视频上使用qt-faststart
,我会得到错误Sorry, this video is not valid for streaming to this device.
如果我使用qt-faststart
,那么我会得到Sorry, this video cannot be played.
这是我的回放代码:
VideoViewer videoPlayer = new VideoViewer(this);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoPlayer);
videoPlayer.setMediaController(mediaController);
videoPlayer.setVideoURI(Uri.parse(object.getVideoURL()));
LinearLayout container = (LinearLayout)ObjectInfo.this.findViewById(R.id.VideoContainer);
container.setVisibility(VISIBLE);
container.addView(videoPlayer, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
videoPlayer.requestFocus();
videoPlayer.start();
现在,我要播放的视频将从http逐步下载:
object.getVideoURL()
返回http://www.ooklnet.com/files/381/381489/video.mp4有谁能帮我解决这个问题吗?在整个应用程序准备好之前,这是我最不需要完成的事情。
非常感谢!
编辑:我试过使用mediaplayer,但结果比使用videoview更糟,所以返回videoview。现在,在模拟器中,我得到一个黑屏,上面有控件悬停,视频的声音播放得很好,而且随着播放的继续,进度也在调整。但是在我的实际设备上,我仍然有
Sorry, this video cannot be played.
错误 最佳答案
结果发现问题出在视频的格式上(特别是我用ffmpeg
创建mp4视频的参数)。我确保视频baseline
h.264-一切正常。有关详细信息,请参见this question。