我已经搜遍了这个(包括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及更高版本(客户端的要求)。我正在测试的设备是带有Android 2.1的LG GT540 Optimus(目前我还没有任何其他设备)。
根据我的想法,如果我没有在视频上使用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.
错误
答案 0 :(得分:6)
原来问题在于视频的格式(具体来说,我用ffmpeg
创建MP4视频的参数)。我确保视频是baseline
H.264 - 一切正常。有关详细信息,请参阅this question。
答案 1 :(得分:1)
也许您需要更改设置MediaPlayer的方式。我只是将您的示例视频的网址插入到apidemos示例中,它运行得很好。
希望有所帮助。