4

HttpResponseオブジェクトからビデオコンテンツを再生したい。コンテンツはストリーミングサーバーからダウンロードしています。

私の要件は、サーバーへのHTTPPOSTリクエストを作成することです。リクエストには、認証のために、ビデオのURL、ユーザー名、およびユーザーのパスワードが含まれています。

HTTP POSTリクエストを作成し、ビデオを再生/ダウンロードする方法を知りたいです。

続行するためのヒント、手順/コードを提供してください。

ありがとう、

4

4 に答える 4

5

100%確信はありませんが、フォーマットがビデオのメタデータを保存する方法が原因で、ほとんどのビデオをストリーミングできないと思います。そのため、チューブはビデオファイルを任意の形式で表示するのではなく、変換する必要があります。このメタデータをカプセル化し、任意のビデオをストリーミングできるようにするプロトコルがあります(これがYouTubeモバイルの機能です)。RTSPを確認する必要があります:http://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol

videoViewでrtspリンクを使用すると、ビデオを完璧にストリーミングできます。重要なのは、問題はサーバーであり、クライアントに関連していないということです。

演習として、m.youtube.comからrtspリンクを取得し、setVideoPathを使用してvideoViewに渡すだけで、機能するはずです。

サーバーの実装を変更できない場合は、おそらくそれらのソリューションは次のようになります。

1)ビデオを自分でダウンロードしてデコードします。すべてのメタデータを処理し、ビデオが機能することを確認する必要があります。理論的には、Android用のffmpegをコンパイルしてそれを支援することはできますが、ネットワークオプションをオンにしてAndroidにコンパイルすることはできませんでした。それは大変な作業です。

2)RTSPまたは他のストリーミングプロトコルの独自の実装を作成します。スレッドでビデオをダウンロードすると、デバイスにローカルサーバーが作成され、そのビデオファイルがvideoViewインスタンスにストリーミングされます。私は実際にこれをアプリで動作させています。Androidは、クライアントのサーバーが使用する特定のプロトコルをサポートしていないため、それを機能させる必要がありました。これを行うのに丸1か月かかりました。すべてのクライアントのものであるため、サンプルコードを投稿することはできませんが、興味があれば、これについてさらに情報を提供することができます。

いずれにせよ、ビデオのサーバー/フォーマットを変更できない場合は、多くの作業に備える必要があります。

于 2011-06-29T03:01:31.647 に答える
4

ビデオビューにURLhttpまたはrtspを表示するには、以下のコードを確認してください。

ビデオビューを呼び出す前に..

public class VideoViewDemo extends Activity {

    /**
     * TODO: Set the path variable to a streaming video URL or a local media
     * file path.
     */
    private String path = "";
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.videoview);
        mVideoView = (VideoView) findViewById(R.id.surface_view);

        if (path == "") {
            // Tell the user to provide a media file URL/path.
            Toast.makeText(
                    VideoViewDemo.this,
                    "Please edit VideoViewDemo Activity, and set path"
                            + " variable to your media file URL/path",
                    Toast.LENGTH_LONG).show();

        } else {

            /*
             * Alternatively,for streaming media you can use
             * mVideoView.setVideoURI(Uri.parse(URLstring));
             */
            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();

        }
    }
}

要件が異なるため、最初にサーバーにhttppostリクエストを送信します...目的の入力ストリームを取得します。そのストリームをmp4としてローカルファイルシステムに書き込みます。次に、以下のコードを使用してコンテンツを再生できます

// this can be path on file system
 String path="/adf.mp4"  ; 
    public void playVideo() { 

        MediaController mediaController = new MediaController(this);
        mediaController.setMediaPlayer(videoView);
        videoView.setVideoPath(path);   
        videoView.setMediaController(mediaController);
        videoView.requestFocus();
        videoView.start();
        mediaController.show();
于 2011-06-27T14:06:24.250 に答える
2

私はこれを試しました、そしてそれは私のために働きました:D no rtsp no none、mp4ビデオのURLだけでそれは再生されました!

public class VideoActivity extends Activity {
    public static final String KEY = "video_id";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fotogaleria_video);
    Intent i = getIntent();
    if(i.hasExtra(KEY)){
        String url = "https://sites.google.com/site/tempmp4download/bnm.mp4";
        VideoView vv = (VideoView)findViewById(R.id.fotogaleria_video);
        // vv.setVideoPath(url);
        vv.setVideoURI(Uri.parse(url));
        vv.setMediaController(new MediaController(this));
        vv.requestFocus();
        vv.start();

        }

    }
}
于 2012-04-11T05:23:07.337 に答える
1

次のリンクを調べてください

http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/

http://w3mentor.com/learn/java/android-development/android-http-services/performa-a-http-post-request-with-the-httpclient-in-android/

ストリーミングの場合は、ファイル全体をダウンロードして、ビデオプレーヤーに表示する必要があると思います。

于 2011-06-21T10:33:09.273 に答える