2012-06-06 216 views
3

我目前有一个应用程序,它可以记录视频并将其上传到我的服务器。在上传视频之后,应用程序会获得一个响应,该响应包含指向该文件的flv流的URL。Android:从url播放flv视频流

当我尝试在android默认视频播放器(视频)中打开流时什么也没有发生,但是当我使用不同的应用程序(BSPlayer)时,它完美地播放了视频。但是,无法强制从Intent.ACTION_VIEW开放一个应用程序。这里是接收来自服务器的响应功能的代码:

@Override 
protected void onResponseReceived(int requestType, int status, Object resp) { 
    switch (requestType) { 
    case CLIP_DETAILS: { 
     if (status == RESPONSE_OK) { 
      String token1 = ((ResponseObject_ClipDetails) resp).m_token1; 
      String token2 = ((ResponseObject_ClipDetails) resp).m_token2; 
      String url = getClipURL(token1, token2); 

      Intent i = new Intent(Intent.ACTION_VIEW); 
      i.setData(Uri.parse(url)); 
      i.setType("video/flv"); 
      startActivity(i); 
     } 

    } 
     break; 
    } 
} 

有没有办法在我的android应用程序中显示.flv视频?

+1

可以改变在服务器侧的代码,它编码视频分成格式的Android [载体](http://developer.android.com/guide/appendix/media -formats.html)。 – 2012-06-30 08:22:03

+0

我正在使用流式传输视频的服务。它只使用.flv – thepoosh

+0

然后基本上你必须处理第三方库。 – 2012-07-01 10:19:26

回答

0

其实,有一种方法可以强制打开特定的应用程序。

这个答案显示了如何做到这一点。 https://stackoverflow.com/a/10035789/375929

只需找出BSPlayer的软件包名称并使用它来过滤应用程序即可打开您的视频。当然,如果没有安装BSPlayer,您还需要处理这种情况。我建议使用queryIntentActivities() - 如果它返回一个空列表,告诉用户他们需要安装BSPlayer并启动相应的Play商店链接。

不要求用户安装第三方应用程序,你也可以通过WebView实现你自己的flv播放器,尽管你仍然需要用户使用flash播放器(但这有点不同,每个人都知道flash player是什么,因此它不应该是一个问题要问用户安装)

我发现了如何做到这一点的两篇教程: Problem to load flv video in webviewhttp://www.synesthesia.it/playing-flash-flv-videos-in-android-applications

+0

唯一的问题是我无法强制我的用户安装第三方应用程序 – thepoosh

+0

好的,还有一个窍门 - 使用WebView播放.flv,您必须在您的应用中实现播放器。我解答了答案,查看了一下。 –

5

您可以使用vitamio

媒体格式

许多音频和视频编解码器被打包成Vitamio建于Android平台默认的媒体格式旁边,他们中的一些在下面列出。

  • 的DivX/XVID
  • WMV
  • FLV
  • TS
  • RMVB
  • MKV
  • MOV
  • M4V
  • AVI
  • MP4
  • 3GP

Vitamio SDK为Android开发

您也可以下载jar文件与此项目中使用。 (Vitamio-SDK。7Z)

Android开发

这里是它使用vitamio.jar一个示范项目。 (Vitamio-Demo.7z)

Vitamio提供了与Android默认MediaPlayer框架类似的接口。如果您在项目中使用android.media.MediaPlayer,只需从上面获取vitamio.jar,然后将其添加到项目的库中,然后将android.media.MediaPlayer的导入替换为io.vov.vitamio.MediaPlayer。

除了Android MediaPlayer的默认界面,Vitamio提供了更多的API,请参考库中的javadoc。

+0

使用完整+1来回 – dhams

0

它是如此简单

使用此

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(PATH_OF_FILE), "video/flv"); 
startActivity(intent); 

可以将它帮助...

+1

这没有帮助。它所做的只是打开本地视频播放器,并且从您的问题中看不到 – thepoosh

+0

,这没有帮助。它所做的只是打开本机视频播放器而什么都不做。 – thepoosh

+0

它适用于您安装应用程序 https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad&hl=ru – NickUnuchek