4

他のユーザーがサーバーにアップロードした動画をユーザーが視聴できる機能を実装することができます。html 5はこのタスクに適していますか?しかし、フラッシュ?解決策を読むための読み物はありますか、車輪の再発明をしたくありません。アプリケーションは専用サーバーでホストされます。

ありがとう。

4

3 に答える 3

3

もちろん可能ですが、データはありませんか?

ただし、実装は非常に困難です。

また、私はPythonにあまり興味がなく、あなたの要件に合ったライブラリやサービスを知りませんが、ビデオストリーミングの基本については説明できます。

ストリームではなくアップロードされたビデオファイルについて話していると思います。なぜなら、そのためには、明らかに何千ものソリューションが存在するからです...

最も単純なケースでは、アップロードされているビデオはすでにクライアントに提供される準備ができており、いわゆる「ファストスタートアトム」があります。それらはコンテナフォーマット固有であり、時にはそれらの束があります。最も一般的なのはmoov-atomです。これには多くのデータが含まれており、非常に複雑ですが、私たちのユースケースでは、簡単に言えば、クライアントが最初から利用可能なデータを使用してビデオの再生をすぐに開始できるようにするデータを保持しています。

プログレッシブダウンロードビデオ(youtube ...)がある場合、つまりWebサーバーからファイルが提供される場合に必要です。明らかに完全なファイルをダウンロードしておらず、プレーヤーはすでに再生を開始できます。

fastastartアトムが存在しない場合、それは不可能です。場合によってはそうなりますが、たとえば、ファイルの長さがわからないため、プレーヤーはプログレスバーを表示できません。

それをカバーしてファイルをアップロードすることができます。データをバッファまたはファイルに直接書き込むアップロードソリューションが必要になります。(ファイルは簡単になります...)。

これはほとんどの場合に当てはまります。たとえば、PHPはtmp_dirにファイルを作成します。アップロード中にビデオを検索する場合は、これを指定することもできます。

これで、そのファイルを1バイトずつ読み取り始め、そのデータを別のクライアントへの接続に出力できます。すでに受け取って書かれていることを先に進めないように注意してください。現在受信しているバイト位置とファイルの場所を保持するメタデータセットをメモリに設定して、アップロードを開始します。

アップロードの開始後にファイルを要求する人は誰でも、ファイル全体を受け取ることができます。アップロードがまだ完了していない場合は、アプリケーションからファイルを取得します。

データ配信を調整するか、データが不足したときに一時停止する必要があります。これは、クライアントにはほとんど「低速接続」のように見えます。ただし、接続が閉じないように、データを時々エコーする必要があります。しかし、アップロードが停止しない場合、そしてなぜそれを表示するのですか?、それは問題ではないはずです。

これで、さまざまな入力形式を目的の出力形式にオンザフライでトランスコードするようなものが必要な場合は、興味深いものになります。

AFAIK ffmpegには、データステラムを直接処理できる優れたAPIがあります。

また、ハンドブレーキは非常に優れたツールですが、外部の実行可能ファイルを使用して長い道のりを進む必要があります。

私はあなたの要件を本当に認識していませんが、たとえば赤い5ストリーミングサーバーでクライアントがすでに調整されている場合は、データをストリームにフィードすることも正常に機能するはずです。

于 2012-06-20T20:06:05.703 に答える
1

はい、Qikをご覧ください。http://qik.com/

「インスタントビデオ共有...ビデオはライブ(録画中)または後でいつでも表示できます。」

Qikは、次のような開発者APIを提供します。

  • qik.stream.subscribe_public_recent-ビデオを購読する(ライブおよび録画)

  • qik.user.following-ユーザーがフォローしているユーザーのリストを提供します

  • qik.stream.public_info-特定のビデオの公開情報を取得します

于 2012-06-20T07:19:16.553 に答える
1

これを行うのは間違いありませんが、簡単なことではありません。いいえ、私はあなたがあなたに代わってほとんど努力を必要としない「箱から出してすぐに使える」解決策を見つけるとは思わない。

あなたはあなたがさせたいと言います:

users watch videos as they are uploaded to server by others

まあ、これは2つの異なる方法で解釈できます。

  1. 他のユーザーがアップロードを終えたばかりの新しい動画を見る前に、ユーザーがページを更新する必要がないということですか?
  2. または、あるユーザーが部分的にアップロードされたビデオを視聴できるようにしたいということですか(別のユーザーはまだアップロード中ですが、現在サーバーにはビデオの部分的なアップロードしか含まれていません)。

#1を実装することは、まったく難しいことではありません。新しくアップロードされたビデオをチェックするために必要なのはAJAXスクリプトだけで、それらのビデオは選択した方法でユーザーに提供できます。HTML5とFlashは、ここでは実際には考慮されていません。

一方、2番目のシナリオでは、かなりの労力が必要になります。HTML5は、この種の状況を処理するのに十分成熟していない可能性があると思います。車輪の再発明を考えておらず、この機能に専念する時間があまりない場合は、運が悪いと思います。ffmpegを使用して部分的なビデオファイルを解析し、Flashプレーヤーにフィードできる場合もありますが、これは大きな作業だと思います。

于 2012-06-20T22:31:47.183 に答える