HttpResponseオブジェクトからビデオコンテンツを再生したい。コンテンツはストリーミングサーバーからダウンロードしています。
私の要件は、サーバーへのHTTPPOSTリクエストを作成することです。リクエストには、認証のために、ビデオのURL、ユーザー名、およびユーザーのパスワードが含まれています。
HTTP POSTリクエストを作成し、ビデオを再生/ダウンロードする方法を知りたいです。
続行するためのヒント、手順/コードを提供してください。
ありがとう、
HttpResponseオブジェクトからビデオコンテンツを再生したい。コンテンツはストリーミングサーバーからダウンロードしています。
私の要件は、サーバーへのHTTPPOSTリクエストを作成することです。リクエストには、認証のために、ビデオのURL、ユーザー名、およびユーザーのパスワードが含まれています。
HTTP POSTリクエストを作成し、ビデオを再生/ダウンロードする方法を知りたいです。
続行するためのヒント、手順/コードを提供してください。
ありがとう、
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か月かかりました。すべてのクライアントのものであるため、サンプルコードを投稿することはできませんが、興味があれば、これについてさらに情報を提供することができます。
いずれにせよ、ビデオのサーバー/フォーマットを変更できない場合は、多くの作業に備える必要があります。
ビデオビューに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();
私はこれを試しました、そしてそれは私のために働きました: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();
}
}
}
次のリンクを調べてください
http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/
ストリーミングの場合は、ファイル全体をダウンロードして、ビデオプレーヤーに表示する必要があると思います。