如何在本机Android应用程序中播放rtmp视频流?

时间:2012-11-08 18:15:57

标签: java android

我正处于一个项目中,我必须从链接播放电视频道的视频流。但问题是我必须在不在webview中的原生应用中播放视频。我所做的只是实现了一个名为VITAMIO的API,它有助于播放http,mms等协议,但无法播放RTMP视频。我也研究过,发现基本的android videoview也无法播放RTMP,所以我只是想知道有没有可用的API,或者有没有办法在支持RTSP的原生android应用程序中播放视频, RTMP,MMS,HTTP等?

2 个答案:

答案 0 :(得分:1)

你可以使用vitamio,这是插件原生app回放流rmpt,http,...非常好。它对我来说很好。我想你通过VLC检查链接频道。

答案 1 :(得分:1)

RTMP仅限闪存。 VITAMIO播放器可能会在某些设备上运行,而在其他设备上则无法运行。我不确定您是使用插件版本还是其播放器的许可版本。我与它的互动很小,因为我没有留下深刻的印象(当时......我会回去,今年晚些时候再试一次)

你能做什么:

  1. 创建/使用您自己的Flash播放器
  2. 创建一个包含webview的活动
  3. 在android上添加对Flash插件的检测。
  4. 让webview加载你的flash swf文件
  5. 这里有一些代码来检测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);
        }