1

C# でデスクトップ用のビデオ ダウンロード アプリケーションを作成しようとしています。
問題は、次のコードが正常に機能することです。

WebClient webOne = new WebClient();
string temp1 = " http://www.c-sharpcorner.com/UploadFile/shivprasadk/visual-studio-and-net-tips-and-tricks-15/Media/Tip15.wmv";
webOne.DownloadFile(new Uri(temp1), "video.wmv");

しかし、次のコードはそうではありません:

temp1="http://www.youtube.com/watch?v=Y_..."

(この場合、200 ~ 400 キロバイトのジャンク ファイルがダウンロードされます)

2 つの URL の違いは明らかです。最初の URL にはファイルの正確な名前が含まれていますが、他の URL には何らかの方法で暗号化されているようです...

問題に対する適切で満足のいく解決策を見つけることができなかったので、ここで少し助けていただければ幸いです。ありがとうございます。

注:
ここの質問の 1 つからリンクhttp://youtubefisher.codeplex.com/を取得したので、そこにアクセスし、ソース コードを取得して読みました。それは素晴らしい仕事ですが、私が理解していないように見えるのは、その人がYouTubeビデオをダウンロードするために作成しなければならなかった構造とクラスをどのようにして知ったのか、そしてなぜ彼はすべてのトラブルを経験しなければならなかったのかということです.私の方法は機能していますか?

誰か案内してください。再度、感謝します。

4

2 に答える 2

2

YouTube からビデオをダウンロードするには、実際のビデオの場所を見つける必要があります。ビデオを見るために使用するページではありません。URL は、ソースの場所からビデオをロードして表示する HTML ページ (このhttp://www.youtube.com/watch?v=...ページによく似ています) です。通常、html を解析し、html からビデオの場所を抽出する必要があります。

あなたの場合、既にこれを行うコードを見つけました - そして幸運なことに、YouTube からビデオをダウンロードすることはまったく簡単ではないからです。質問で提供したリンクを見ると、狂気の背後にある魔法は次の場所にありますYoutubeService.cs / GetDownloadUrl()

http://youtubefisher.codeplex.com/SourceControl/changeset/view/68461#1113202

そのメソッドは、YouTube の視聴 URL によって返された HTML ページを解析し、実際のビデオ コンテンツを見つけます。追加の複雑さは、YouTube ビデオもさまざまな異なる形式になる可能性があることです。

ダウンロード後にビデオの種類を変換する必要がある場合は、FFMPEG をお勧めします

編集: あなたのコメントに応えて - あなたは YoutubeFisher のソース コードをまったく見ていませんでしたね..私が言及したファイルを分析することをお勧めします ( YoutubeService.cs). 自分で簡単に調べた後yt.playerConfig、html ページ内の変数を解析する必要があります。

あなたを助けるためにそのソースを使用してください。

編集: 2 番目のコメントへの応答: 「実際に私は、任意のビデオ サイトからビデオをダウンロードできるアプリケーションを開発しようとしています。」あなたはそれが簡単だと言います-fyi、そうではありません。すべてのビデオ Web サイトは異なるため、すぐに使用できるすべてのものに対応するものを作成することはできません。もし私がそれをしなければならないとしたら、私はどのようにするか: 主要なビデオ共有 Web サイト (Metacafe、Youtube、その他) のカスタム パーサーを作成して、それらのパーサーが確実に機能するようにします。その後、よろしければ「フォールオーバー」を書きます。基本的に、不明な Web サイトからビデオをリクエストしている場合、html を調べて既知のビデオ拡張子 (flv、wmv、mp4 など) を探し、そこから URL を抽出します。

後者の場合は正規表現を使用して URL を抽出するか、indexof、substring、lastindexof などの組み合わせを使用できます。

于 2012-07-19T01:23:17.473 に答える
1

このページ @ CodeProject を見つけました。サードパーティのライブラリを使用せずに非常に効率的な Youtube ダウンローダーを作成する方法を示しています。Youtube は Web 構造に変更を加えることがあるため、コードをわずかに変更する必要がある場合があることに注意してください。これにより、アプリが Youtube と対話する方法が妨げられる可能性があります。リンクは次のとおりです。ここでは、C# プロジェクト ファイルをダウンロードして、ファイルを直接表示することもできます。

CodeProject - C# .NET を使用した Youtube ダウンローダー

于 2013-05-27T05:37:46.380 に答える