抱歉,此视频无法播放 - 将mp4流传输到安卓设备

8

我已经在各处寻找解决方案,包括Stack Overflow,但仍未找到解决方法。

我需要在我的应用程序中进行简单的视频播放。这比简单的窗口和视频要复杂一些。简单来说,我在屏幕上有两个布局,一个包含其他一些内容,另一个是用于视频窗口。还有一个按钮可以在两者之间切换。所有这些都很好用,只是在我发现videoview不能存在于视图可见性为'gone'的情况下之后 - 因此当需要时,我将其添加/从容器布局中删除。

然而,我遇到了实际视频播放的问题。当我尝试激活它时,我会得到可怕的错误对不起,无法播放此视频。 这里的一个问题讨论了视频格式(Android -- Can't play any videos (mp4/mov/3gp/etc.)?)- 但是我已经拥有了似乎是正确的格式,具有320px的宽度和其他一切。那个线程上的一个答案提到这里的视频“绝对有效”。我试了一些来自那里的视频 - 但我得到了另一个常见问题:对不起,此视频无法流式传输到此设备。

请注意,我正在实际设备上测试,因为模拟器中的视频播放不起作用。还要注意,解决方案必须在Android 1.6及以上版本上工作(客户的要求)。我正在测试的设备是带有Android 2.1的LG GT540 Optimus(目前我没有其他可用设备)。

从我找出来的情况来看,如果我不在视频上使用qt-faststart,则会出现错误对不起,此视频无法流式传输到此设备。 如果我使用qt-faststart,那么我会得到对不起,无法播放此视频。

这是我的播放代码:

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。现在,在模拟器中,我看到一个黑屏,上面悬浮着控件,视频的声音正常播放,并且随着播放进度调整。然而,在我的实际设备上,我仍然收到“抱歉,无法播放此视频”的错误提示。

你如何设置服务器的URL以播放视频?我需要像你一样设置我的URL来播放我的视频,但它不起作用:( 如果我在浏览器或Android应用程序中使用你的视频,它可以完美地工作。但是如果我尝试使用我的URL(http://XXX.XXX.XXX.XXX/srv/ProductVideos/lazar108@hotmail.com/s/s_7s.MP4),它就无法工作。 - Lazar Kukolj
2个回答

7

事实证明问题出在视频格式上(具体来说,是我使用ffmpeg创建MP4视频时使用的参数)。我确保视频采用基本线H.264格式,然后一切正常。有关更多详细信息,请参见此问题


@Aleks G,感谢您的早期回复。在我的情况下,重定向仅由v2.3.x处理,如果我将重定向的URL传递给任何其他版本的媒体播放器,则会播放该URL,但不会播放非重定向的URL。关于-profile baseline,我绝对不知道如何调整直播流视频的格式。您能否粘贴一段代码片段以将直播流视频基线到Android支持的格式? - Usama Sarwar
@UsamaSarwar 您无法轻松地实时完成此操作。在我的情况下,我正在控制上传到服务器的视频 - 因此我会在那里重新编码它们 - 并以正确的格式流式传输它们。 - Aleks G
Aleks,请问您能否为我目前面临的问题提供一个解决方案?我可以在>2.2的安卓版本中播放视频,但在安卓2.1和2.2中无法播放,显示消息:“无法播放视频=>抱歉,该视频不能流式传输到此设备”。请注意,我正在尝试播放视频:http://technotalkative.com/user_uploads/mp4_live.mp4,请检查并建议一个解决方案。 - Paresh Mayani
@PareshMayani 我建议你通过 qt-faststart 运行视频,这通常可以帮助我解决这个错误信息。 - Aleks G
@PareshMayani 你是在模拟器上测试还是实际设备上测试?模拟器存在许多已知问题,其中视频无法播放,但在物理设备上可以正常播放。我手头没有2.1物理设备进行测试(昨天刚将我的旧2.1手机重新刷成了2.3)。如果不是这种情况,请检查您如何编码该视频。请查看此答案链接的问题/答案。 - Aleks G
显示剩余7条评论

1

这个例子使用了MediaPlayer,而我尝试使用VideoView。我想我会尝试使用MediaPlayer,然后看看会发生什么。 - Aleks G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接