在Blackberry JDE中播放InputStream视频

时间:2009-09-08 12:36:51

标签: video blackberry stream video-streaming rim-4.6

我认为我在使用Blackberry 9000模拟器时错误地使用了InputStream:

我找到了一些示例代码,

http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/1089414/How_To_-_Play_video_within_a_BlackBerry_smartphone_application.html?nodeid=1383173&vernum=0

可让您在Blackberry App中播放视频。该代码声称它可以处理HTTP,但实际上这样做需要花费一些时间来实现:

http://pastie.org/609491

具体来说,我正在做:

 StreamConnection s = null;
            s = (StreamConnection)Connector.open("http://10.252.9.15/eggs.3gp");
            HttpConnection c = (HttpConnection)s;                        
           InputStream i = c.openInputStream();
            System.out.println("~~~~~I have a connection?~~~~~~" + c);
            System.out.println("~~~~~I have a URL?~~~~" + c.getURL());
            System.out.println("~~~~~I have a type?~~~~" + c.getType());
            System.out.println("~~~~~I have a status?~~~~~~" + c.getResponseCode());

            System.out.println("~~~~~I have a stream?~~~~~~" + i);
             player = Manager.createPlayer(i, c.getType());

我发现这是我从HTTPConnection获取InputStream而不会导致:“JUM错误104:未捕获的NullPointer异常”的唯一方法。 (也就是说,作为StreamConnection进行转换,然后作为HttpConnection进行,以防止它崩溃)。

但是,我还没有播放视频。以前,无法创建流(它会因空指针异常而崩溃)。现在,正在制作流,调试器声称它开始从它流式传输视频......没有任何反应。没有视频播放。

该应用程序不会冻结,或崩溃或任何东西。我可以自由地“暂停”和“播放”,并为两者获得适当的调试消息。但没有视频出现。

如果我正在播放黑莓本地存储的视频,一切都很好(它实际播放视频),所以我知道播放器本身工作正常,我只是想知道我是否有问题。流?

API表示播放器可以接收InputStream。它需要特定种类吗?如何查询我的输入流以了解它是否有效?它的存在比我以前更进一步。

-Jenny

编辑:我正在使用Blackberry Bold模拟器(9000)。我听说有些版本的手机不会通过HTTP流式传输视频,但Bold会这样做。我还没有看到这方面的例子。当我上网并指向黑莓可播放的视频时,它会尝试流式传输,然后要求我以物理方式下载该文件(然后下载后再播放)。

编辑:此外,我还有物理黑莓Bold,但它也无法流式传输(我已经去了m.youtube.com,只是为了获得服务器/内容未找到错误)。流式传输RTSP内容需要做些什么吗?

3 个答案:

答案 0 :(得分:2)

所以,经过很长一段时间,我确定Blackberry Bold 9000不会进行http流媒体播放。我最终不得不(或者更确切地说是我的同事)编写自定义方法进行渐进式下载以模拟它。哦,好吧。

答案 1 :(得分:1)

答案 2 :(得分:1)

你应该能够实际流式传输。首先,您必须确保将正确的连接参数附加到您的URL(即“; interface = wifi”以进行wifi连接)。其次,您必须确保您传输的文件不是太大。如果它太大,您将收到一条HTTP错误,指出“文件太大”。为了解决这个问题,您需要缓冲内容(查看DataSource API)。您应该将您要求的内容限制在1-2MB左右。在拉出“块”后,您需要继续请求顺序块(使用单独的http连接)继续填充缓冲区。我希望这有帮助