Java 如何在本地android应用程序中播放rtmp视频流?

Java 如何在本地android应用程序中播放rtmp视频流?,java,android,Java,Android,我在一个项目中,我必须从链接播放电视频道的视频流。但问题是我必须在本地应用程序中播放视频,而不是在网络视图中。据我所知,我刚刚实现了一个名为VITAMIO的API,它对播放http、mms等协议有很大帮助,但无法播放RTMP视频。我还研究发现,基本的androidvideoview也无法播放RTMP,所以我只想知道是否有API可用,或者是否有任何方法可以在原生android应用程序中播放视频,该应用程序支持RTSP、RTMP、MMS、HTTP等?您可以使用vitamio,这是插件原生应用程序播放

我在一个项目中,我必须从链接播放电视频道的视频流。但问题是我必须在本地应用程序中播放视频,而不是在网络视图中。据我所知,我刚刚实现了一个名为
VITAMIO
的API,它对播放http、mms等协议有很大帮助,但无法播放RTMP视频。我还研究发现,基本的android
videoview
也无法播放RTMP,所以我只想知道是否有API可用,或者是否有任何方法可以在原生android应用程序中播放视频,该应用程序支持RTSP、RTMP、MMS、HTTP等?

您可以使用vitamio,这是插件原生应用程序播放流rmpt、HTTP,…很好,对我来说很好。我想你可以通过VLC检查链路通道。

RTMP仅为闪存。VITAMIO播放器很有可能在某些设备上工作,而在其他设备上则完全不工作。我不确定你使用的是他们播放器的插件版本还是授权版本。我与它的互动很小,因为我没有真正的印象(当时……我会在今年晚些时候回去再试)

您可以做什么:

  • 创建/使用您自己的flash播放器
  • 创建一个包含webview的活动
  • 在android上添加flash插件的检测
  • 让webview加载您的flash swf文件
  • 下面是一些检测flash并加载url(如果有)的代码:

        String url = "http://www.example.com/movie.swf";
    
        try {
            PackageManager pm = getPackageManager();
            ApplicationInfo flash_ai = pm.getApplicationInfo("com.adobe.flashplayer", 0);
            int flash_version = pm.getPackageInfo("com.adobe.flashplayer", 0).versionCode;
            if (flash_ai != null && flash_version != 0 && flash_version >= 103000000) {
                flashInstalled = true;
            }
        } catch (NameNotFoundException ex) {
            flashInstalled = false;
        }
        if (!flashInstalled) {
            displayNeedFlashDialog();
    
        } else {
            WebView wvBrowser = new WebView(this);
            wvBrowser.requestFocus();
            wvBrowser.setClickable(true);
            wvBrowser.clearCache(true);
            wvBrowser.setVerticalScrollBarEnabled(false);
            wvBrowser.setHorizontalScrollBarEnabled(false);
            wvBrowser.getSettings().setPluginsEnabled(true);
            wvBrowser.getSettings().setJavaScriptEnabled(true);
            wvBrowser.setWebChromeClient(new WebChromeClient() {
                @Override
                public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) {
                    result.confirm();
                    return true;
                }
    
                ;
            });
            setContentView(wvBrowser, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            wvBrowser.loadUrl(url);
        }
    

    我使用了vitamio,但它不支持rtmp,你能提供一个链接吗?但videoview不支持rtmp原型,我读错了。我把它误读为“rtsp”。很抱歉。那么你对RTMP有什么想法吗?setContentView(wvBrowser,lp);这里的LP是什么?您的代码看起来很有趣,可能可以工作,但由于没有这样描述,我无法实现它,您能详细说明一下吗?请