2009-04-04 16 views
2

私のウェブサイトにはYouTubeのようなシナリオを実装しています。ビデオをアップロードして、すべての人が見ることができるようにします。私の質問は、他の人が遠隔で再生できるようになる前に、アップロード後にビデオをエンコードする必要があると思いますが、エンコード処理は非常に遅いです(Microsoft Expression Encoderで試してみて、mplayerでも20分のビデオをエンコードするのに約10分かかります)。驚いたことに、非常に大きなビデオをYoutubeにアップロードしても、他の人がすぐに選択して再生できるように見えますが、エンコード処理にはほとんど時間がかかりません。ファイルアップロードの問題

誰にもご意見はありますか? Youtubeはどのようにしてプロセスをすばやくエンコードしましたか?または、Youtubeはエンコード処理を完全にスキップしますが、エンコード処理をスキップすると、Youtubeはアップロードされたすべての動画を再生できるようにすることができます(動画はビットレート、画像サイズなどのパラメータに従います)。事前に

おかげで、 ジョージ

+0

このエンコーダはどこで実行していますか?あなたの小さなデスクトップや適切なサーバーに? –

+0

@ S.Lott、私はサーバー上で実行します。それは2つのCPU、Windows Server 2003とx64マシン、4GのRAMを持っています。私がエンコードしたビデオは約80Mの入力です。ビデオをエンコードするには約40〜50分かかります(ビデオの全長は約90分です)。どのようなアイデアは、パフォーマンスを向上させるには? – George2

答えて

3

は、YouTubeは、Googleによって所有されていることを忘れてはいけない、そう利用可能450,000サーバを持つことは役立つかもしれません!

(少し冗談、答え、私は告白する。そして、明らかにYouTubeはそれらのすべてにアクセスすることはできません。しかし、ポイントは、彼らがこの問題で投げるために、リソースの驚異的な量を持っているだろうことに変わりはない)

+0

@Brian、エンコードビデオには時間がかかるはずです。私はyoutubeが何百というものに私の20Mビデオを分割し、数百のマシンに配布し、個々のマシンでエンコードし、全体を組み合わせるとは思わない? – George2

+0

(続き)多分Youtubeは全くエンコードしませんか?そのような情報は見つけられませんでした。任意のアイデアやコメント? – George2

+0

私はYouTubeがそのようなリソースをどのように利用するのかわからないが、Googleは仕事の細分化と並列化の専門家であるため、いくつかの並列化が行われなければ驚くだろう。しかし、完璧な推測があります –

1

他に何かをする前に、より良いエンコーダを入手してください。多くのエンコーダが利用可能です。いくつかはオープンソースであり、いくつかは独自のものです。 Appleには素早く高価な非常に素敵なエンコーダがいくつかあります。

オープンソースのエンコーダ技術の最新技術については、http://www.ffmpegx.com/をご覧ください。彼らは多様な技術を統合しています。

+0

@ S.Lott、私はffmpegxで試してきました、私はmplayerが内部的にそれを使用していると思います。私のコンピュータでは、20分のエンコードで10分かかります。だから、私はGoogleが似たようなものを使っていないと思う。あなたはYoutubeがビデオをエンコードするのか、まったくエンコードしないのか(アップロードされたものを再生するだけですか?) – George2

+0

x264を強くお勧めします。適切な設定で、リアルタイムよりも速くMPEG4ビデオをエンコードすることができます。 –

1

また、ハードウェアエンコーダはおそらくyoutubeで使用されています。

そして、エンコードが速い場合にのみ再生することが可能です。

+0

@arsane、1.高速なH/Wエンコーダへの参照はありますか? 2.「エンコードが速いだけでエンコードしている間に再生できるのですか?」 - 経験はありませんが、エンコードの過程でビデオを再生する方法を示す参考資料を表示できますか? – George2

+0

(続き)私はエンコードするべき時期とエンコードしない時期に関するいくつかのガイドラインも学びたいと思っています。実際には、私はエンコードの利点を見ません - エンコードせずに、アップロードされたビデオはまだ再生することができます。 :-) – George2

+0

H/Wエンコーダの場合は、そのGoogleを持つことができます。しかし、どのH/Wエンコーダが最高ののか分かりません。 のように: http://www.streetwise.com.au/product_info.php?products_id=7061 は、youtube vedioにエンコードできます。 2番目の再生/エンコード方法では、エンコードのエキスパートではありませんが、可能であると思います。 –

1

Youtubeはどのようにしてプロセスをすばやくエンコードしましたか?

私は、(1)入力ビデオを短いセグメントに分割して複数のエンコーダに送信し、(2)ストリームをエンコードするのではなく、同時にエンコードすることを期待します。開始するためにファイル全体をアップロードするまで待ってください。

やYouTube完全にエンコード処理をスキップ

いいえ、すべてが再生のためのFLVに変換する必要があります。

+0

@bobince、1.アップロード時に同時にエンコーディングを実装する方法に関する参照コードやドキュメントはありますか?私はこのクールなアイデアについてもっと知りたいと思っています。 – George2

+0

(続行)2.ビデオを小さな部分に分割し、エンコードして再組み立てする方法に関するドキュメントやサンプルはありますか?分割/再組み立てのために内部ビデオフォーマットを解析して理解しなければならないと思うので、私は分割方法と組み立て方法について非常に混乱していますか? – George2

+0

リクエストボディの解析は、使用している上位フレームワーク/言語のフォームパーサーに委ねるのではなく、自分で行う必要があります。次に、ffmpegのlibavformatのようなものを使用してストリームを逆多重化し、フォーマットで許される独立したパケットに分割します。 – bobince

関連する問題