2

リンクからテレビチャンネルのビデオストリームを再生する必要があるプロジェクトにいます。しかし、問題は、Web ビューではなくネイティブ アプリでビデオを再生する必要があることです。私が行った限りではVITAMIO、http、mms などのプロトコルを再生するのに非常に役立つ API を実装しただけですが、RTMP ビデオの再生に失敗しました。また、基本的な Androidvideoviewでも RTMP の再生に失敗することがわかったので、利用可能な API があるかどうか、または RTSP、RTMP、MMS、HTTP をサポートするネイティブ Android アプリケーションでビデオを再生する方法があるかどうかを知りたいだけです。等?

4

2 に答える 2

1

あなたはvitamioを使うことができます、これはプラグインのネイティブアプリ再生ストリームrmpt、http、...非常にうまくいきます.それは私にとってはうまくいきます. VLCでリンクチャンネルをチェックしていると思います。

于 2012-11-08T18:20:15.997 に答える
1

RTMP はフラッシュのみです。VITAMIO プレーヤーは、一部のデバイスでは動作する可能性がありますが、他のデバイスではまったく動作しない可能性があります。プラグイン バージョンを使用しているか、プレーヤーのライセンス バージョンを使用しているかはわかりません。私は本当に感心していなかったので、それとのやり取りは少なかったです(その時...私は戻って今年後半にもう一度やり直します)

できること:

  1. 独自のフラッシュ プレーヤーを作成/使用する
  2. Webview を含むアクティビティを作成する
  3. Android でのフラッシュ プラグインの検出を追加します。
  4. webview に Flash SWF ファイルをロードさせる

フラッシュを検出し、それがある場合は 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);
    }
于 2012-11-08T18:26:24.197 に答える