問題タブ [progressive-download]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - プログレッシブビデオストリームはどのように機能しますか (MP4、flv など)
プログレッシブビデオストリームバッファリングがどのように機能するのだろうか。現在、プログレッシブ ストリーミング ビデオ ファイルを再生できる Android 用のメディア プレーヤーを作成しようとしています。そのために私はvitamioライブラリを使用しています。その非常に強力な Android メディア ライブラリです。また、プログレッシブストーミングといくつかのビデオフォーマットもサポートしています. vitamio の唯一の問題は、再生を一時停止するとバッファリングが継続されないことです。そのため、低速のネットワークではビデオを視聴できません。
したがって、これを解決するための現在の回避策は、ストリーミングしたいビデオファイルへの httpinputstream を開くことです。次に、ビデオファイルのサイズを読み取ります。80MBとしましょう。次に、hdd にこのサイズ (80MB) の空のダミーファイルを作成します。このファイルは現在ゼロで埋められています。次に、httpinputstream からのデータの読み取りを開始し、からのダミーファイルを上書きします。10MB をダウンロードした場合、このファイルをビデオプレーヤーに入れて再生を開始します。この時点で、私の hdd のビデオファイルはまだ 80MB の大きさですが、読み取り可能で有効なビデオデータは 10MB です。再生中、完了するまでダミーファイルのダウンロードといっぱいを続けます。
これは非常にうまくいく場合もあれば、そうでない場合もあります。再生位置は 5% で、ダウンロードはまだ 15% ですが、いくつかのエラー (フレームが見つからないなど) で再生が停止します。あまり信頼性が高くなく、これがプログレッシブ ストリーミングの一般的な方法であるとは思えません。私の質問は次のとおりです。これは技術的にどのように機能しますか? プログレッシブ ストリーミングの方法と一般的な方法の違いは何ですか?
ありがとうございました
android - Android でアプリ内 MP4 プレーヤーを入手する最も簡単な方法
動画を Android アプリケーションに埋め込む必要があり、会社のデモを作成するためにすぐに埋め込みたいと考えています。独自の SDK は許可されていないため、次のオプションがあるようです。
どのアプローチが最善かについての推奨事項はありますか? 要件は、MP4 (通常は h.264 ビデオと aac オーディオ) を再生し、進行状況スライダーを表示し、堅牢なシークと開始/停止のパフォーマンスを備え、ネットワーク経由で大きなファイルのプログレッシブ ダウンロードを行うことです。
Android 4.x 以降に制限しても問題ありません (したがって、OpenMAX は問題ありません)。
audio - オーディオファイルのプログレッシブダウンロード
標準の Android を介してリモート http ソースからプログレッシブにダウンロードされたオーディオを再生するアプリを作成したいのですmediaplayer
が、オーディオ ファイルのコピーを SD カードにも保存したいと考えています。これは困難な問題であることが証明されています。
1) メディア プレーヤーに a を渡し、uri
再生中に「ループから切り離され」ます。mediaplayer
リモートと直接通信するため、再生中のバイトにアクセスできないためです。
2) ダウンロードしたビットをディスクに書き込むための Android のオプションも、ダウンロードしたデータにアクセスするためのコールバックもないようです。
3) ウェブサーバーをアプリに埋め込んで (「参考文献」を参照nanohttpd
)、localhost
URI を に渡すことは可能ですがmediaplayer
、これは非常に面倒なことのように思えます。
もっと簡単な方法がありませんか?これで問題は解決したはず!?
編集:おそらくもっと簡単な質問: メモリに音楽を含むバッファがある場合、それを再生できますか? それをディスクに書き込んだり、Web サーバーを使用してmediaplayer
再生したりする必要があるのはばかげているようです。
javascript - Phonegap 3.0 でメディア ファイルをオフラインにする
Phonegap メディア APIを使用すると、Web サーバーでホストされている外部ファイルを再生できます。
そのファイルを再生したら、ローカルに保存して、次に聞くときに URL ではなくローカル パスから取得できるようにすることはできないのでしょうか。これが「オフライン」と言う意味です。
ただし、メディア API には save() メソッドはありません。ファイル APIを使用して取得できるように、ファイルはキャッシュに保存されていますか (パスがわかっている場合)。
解決策の 1 つは、ファイルをダウンロードしてから再生することだと思いますが、ダウンロードが完了するまでユーザーを待たせたくありません。メディア ファイルを asa p として再生したい。たとえば、プログレッシブ ダウンロードを使用して、ファイルが完全にダウンロードされる前に再生を開始することはできますか?
ios - iOS のダウンロード中にビデオをストリーミング
iOS 7 を使用しており、アプリにダウンロードする必要がある .mp4 ビデオがあります。ビデオはサイズが大きい (~ 1 GB) ため、アプリの一部として含まれていません。ダウンロードが開始されるとすぐに、ユーザーがビデオの視聴を開始できるようにしたいと考えています。また、ユーザーが後で再度ダウンロードする必要がないように、ビデオを iOS デバイスにキャッシュできるようにしたいと考えています。ビデオを再生する通常の方法 (プログレッシブ ダウンロードとライブ ストリーミング) の両方で、ビデオをキャッシュできないようです。そのため、ビデオ ファイルをチャンクアップしてバイトをクライアントにストリーミングする独自の Web サービスを作成しました。NSURLConnection を使用してストリーミング HTTP 呼び出しを開始します。
データ チャンクを受信したら、ファイルのローカル コピーの末尾に追加します。
デバイスを実行すると、ファイルが正常にダウンロードされ、MPMoviePlayerViewController を使用して再生できます。
ただし、ファイルが完全にダウンロードされる前にプレーヤーを起動すると、ビデオは問題なく再生されます。上部のスクラバー バーに正しいビデオの長さが表示されます。しかし、ユーザーがビデオの開始前にダウンロードを完了したビデオの位置に到達すると、ビデオがハングします。MPMoviePlayerViewController を閉じて再度開くと、MPMoviePlayerViewController を再度起動したときの場所に到達するまでビデオが再生されます。ビデオ全体がダウンロードされるまで待つと、ビデオは問題なく再生されます。
これが発生したときにイベントが発生したり、エラー メッセージがコンソールに出力されたりしません (ビデオの開始後に MPMoviePlayerPlaybackStateDidChangeNotification と MPMoviePlayerPlaybackDidFinishNotification が送信されることはありません)。スクラバーが使用しているもの以外に、ビデオの長さをコントローラーに伝えているものが他にあるようです...
この問題の原因を知っている人はいますか? 私は MPMoviePlayerViewController を使用することに縛られていないので、この状況で別のビデオ再生方法が機能する場合は、それで十分です。
関連する未解決の質問:
AVURLAssets を使用した AVPlayer およびプログレッシブ ビデオ ダウンロード
更新 1 ビデオの再生が開始されたときのファイル サイズが原因で、実際にビデオが停止することがわかりました。この問題は、ダウンロードを開始する前にゼロ化されたファイルを作成し、途中で上書きすることで回避できます。私はビデオ ストリーミング サーバーを制御できるので、カスタム ヘッダーを追加して、ストリーミングされるファイルのサイズがわかるようにしました (ストリーミング ファイルのデフォルトのファイル サイズ ヘッダーは -1 です)。次のように、didReceiveResponse メソッドでファイルを作成しています。
これはうまく機能しますが、トランケートによってディスク上に ~1GB のファイルが作成される間、アプリが約 10 秒間ハングすることを除きます (シミュレーターでは瞬時に発生し、実際のデバイスでのみこの問題が発生します)。これは私が今行き詰まっている場所です-ファイルをより効率的に割り当てる方法、または実際に割り当てる必要なしにビデオプレーヤーにファイルのサイズを認識させる別の方法を知っている人はいますか? 一部のファイルシステムは「ファイルサイズ」と「ディスク上のサイズ」を2つの異なるプロパティとしてサポートしていることを知っています... iOSにそのようなものがあるかどうかわかりませんか?
php - 段階的にphpファイルを介してmp4をストリーミングする
ビデオ プレーヤーのより安全なストリーミング方法に取り組んでいます。各ファイルには特別なトークン認証が必要であり、各トークンを 1 回しかロードできないため、PHP コンテナーを介して MP4 を実行しています。これは HTML5 ビデオ タグ内で完全に機能し、ユーザーがソースを簡単にダウンロードできないようにします。
ここからいくつかのコードを適応させています
ビデオをシークできるようにしたいので、問題が発生します。<video>
ロードされていないビデオの領域にスキップすると、タグ (およびクロム)がクラッシュします。
HTML5 プレーヤーは数秒でシークし、PHP はバイト単位でロードするため、これは実行できないと思います。それが私がここで尋ねている理由です。
プログレッシブ ストリーミングを許可するにはどうすればよいですか?
同じ目的に使用できる、より適切なコンテナー形式はありますか?
android - Android HTTP プログレッシブ ストリーミング onBufferingUpdate が数秒後に呼び出されなくなる
HTTPプログレッシブダウンロード(WiFi経由、Apacheを使用)を介してMP3をストリーミングできるAndroid音楽プレーヤーアプリを開発しました。MediaPlayer
これは、MP3 をストリーミングするように をセットアップする方法です。
サーバーへの接続が失われるまで、すべてが正常に機能します。登録済み のログ出力onBufferingUpdateListener
から、サーバーへの接続が失われると (たとえば、電話で WiFi をオフにする)、MediaPlayer
がバッファ内の残りの曲をいっぱいにしようとしているようです。ただし、この再試行は数秒後に停止します。
つまり、サーバーへの接続が失われてから数秒以内に再開されない場合、 はバッファリングを再開しMediaPlayer
ません。(つまりonBufferingUpdate()
、数秒の再試行後に呼び出されなくなります)。また、onInfoListener
またはにエラー/情報メッセージが表示されませんonErrorListener
。
問題はMediaPlayer
、連続する接続間の時間間隔に関係なく、サーバーへの接続が再び利用可能になったときに、曲の残りのバッファリングを強制的に再開するにはどうすればよいですか(できれば再生を中断せずに) です。
HTTP プログレッシブ ダウンロードを介して MP3 をストリーミングするには、どのような代替手段が必要ですか?