2

私は Android 用のなんでもダウンロードできるアプリを開発していますが、ほとんどの場合問題なく動作します。

URL の最後に長いハッシュ署名 (らしい) が付いているサイトを見つけました。しかし、Android 用の標準の動画アプリであり、私の Web ブラウザーはストリーミングで直接再生できます。

これをファイルにストリーミングする方法(プログレッシブダウンロード?)についての手がかりがありません。「?」の後の URL パラメータ 何かに使われています。Jessica が指摘したように、以下の URL はおそらく rtmp://.... を使用した RTMP ストリームに使用されます。

URL の例 (ホスト ドメインは編集されています):

 http://blush.im.54ca3830.919727.x.yesitisporn.com/videos/3gp/d/b/f/
      filthysite.com_dbf7f0a9c3913d4d0e09a36fe8ab3aba.mp4?e=1348368010&ri=1024&rs=85&h=c81c6707b13714ac65b651ba2939d94a

上記の URL には、mp4 ビデオ ファイルへのリンクがあります。この短い URL でダウンロードしようとしてもうまくいきません: http://blush.im.54ca3830.919727.x.yesitisporn.com/videos/3gp/d/b/f/ filthysite.com_dbf7f0a9c3913d4d0e09a36fe8ab3aba.mp4. 空のドキュメントを返します。

一般的な動画アプリやブラウザは、これらのタイプの HTTP リンクを再生用に適切に取得するため、バイトストリームを取得してファイルに書き込む標準的な方法が必要です。助けてくれてありがとう!

4

1 に答える 1

1

最初に提起された質問への回答: URL パラメーターを追加し、URL を疑問符でパラメーターから分割し、パラメーターをアンパサンドで区切ることは非常に一般的です。疑問符が存在する場合は、URL 内のエスケープされていない最初の疑問符までのすべての部分文字列を取得し、それ以外の場合は文字列全体を使用します。

新しいフィードバックに基づく: コメントで述べたように、パラメータなしのテストで確認されたように、URL を変更しようとして間違ったツリーを鳴らしていると思います。これらの特定のストリームを保存できない理由は、ファイル形式またはサーバー構成が機能するものとは異なるためだと思います。特に、私が最初に考えたのは、これらの URL はストリーミング サーバー (例: Icecast ) によって提供されているのではないかということです。)、通常のファイルベースの HTTP サーバーではありません。ストリーミング サーバーの利点には、さまざまな帯域幅のバージョンのストリームをオンザフライで提供できること、ファイルの任意の部分を即座にシークできることなどがありますが、ダウンロード アプリケーションを構築しようとする人々にとっての欠点は、それらのサーバーがそうでないことです。データを単一のファイルとして送信し、データをチャンクで送信します-技術的にクレイジーになりすぎないようにします。基本的に、チャンクには最初のフレームと、次の数フレームでビデオにあるものの差分の束が含まれる場合があります。オーディオ、繰り返します。これを行うと、表示されている遅延や画面の解像度に応じて送信する品質を調整したり、ウィンドウのサイズを変更した場合に送信するもののサイズを変更したりできます。この種のストリーミングは、特にライブ イベントに適しています。しかし、記録されたイベント、特にランダム シークに対しても利点がないわけではありません。データのキャプチャの問題を複雑にするために、一部のストリーミング サーバーは、実際には HTTP ではなく RTMP、RTSP、または MMS プロトコルを介してビデオ データを送信します。HTTP 疑似ストリーミングまたは直接の HTTP ダウンロードは、 RTMP 経由のストリーミングよりもはるかに簡単に保存できます。一部のストリーミング タイプでは、個々のパケットからファイルを再作成するか、リアルタイムで再生される画面上で再生されるものからトランスコードする必要があります。そのため、見ている特定のストリームを保存する最善の方法を見つけるために、さまざまなストリーミング プロトコルについて学習するのに時間がかかる場合があります。

于 2012-09-23T00:04:15.967 に答える