我目前有一个应用程序可以录制视频并将其上传到我的服务器。 上传视频后,应用会收到一个响应,其中包含指向文件的 FLV 流的 URL。
当我尝试在 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;
}
}
有没有办法在我的安卓应用中显示.flv视频?
你可以使用vitamio。
媒体格式
除了Android平台内置的默认媒体格式外,许多音频和视频编解码器都打包到Vitamio中,下面列出了其中一些。
- 迪夫/十六
- .wmv
- .flv
- TS
- RMVB
- MKV
- .mov
- .m4v
- .avi
- .mp4
- .3gp
面向安卓开发者的Vitamio SDK
您可以在此处下载 jar 文件以用于您的项目。(Vitamio-SDK.7z)
对于安卓开发者
这是一个使用vitamio.jar的演示项目。(维塔米奥演示.7z)
Vitamio提供了与Android默认MediaPlayer框架类似的接口。如果您在项目中使用 android.media.MediaPlayer,只需从上面获取 vitamio.jar,然后将其添加到项目的库中,并将 android.media.MediaPlayer 的导入替换为 io.vov.vitamio.MediaPlayer。
除了Android MediaPlayer的默认接口外,Vitamio还提供了更多API,请参考库中的javadoc。
实际上,有一种方法可以强制打开特定的应用程序。
这个答案显示了如何做到这一点。https://stackoverflow.com/a/10035789/375929
只需找出BSPlayer的软件包名称并使用它来过滤应用程序以打开您的视频。当然,您还需要处理没有安装BSPlayer的情况。我建议使用queryIntentActivities() - 如果它返回一个空列表,告诉用户他们需要安装BSPlayer并启动相应的Play商店链接。
除了要求用户安装第三方应用程序之外,您还可以通过WebView实现自己的flv播放器,尽管您仍然需要用户拥有Flash Player(但这有些不同,每个人都知道Flash Player是什么,所以要求用户安装它应该不是问题)
我找到了两个关于如何做到这一点的教程:在 Web 视图中加载 flv 视频的问题和 http://www.synesthesia.it/playing-flash-flv-videos-in-android-applications