1

あなたたちはYoutubeを正しく見ました。ビデオを見ている間、関連するビデオのプレビューとリンクも表示されます。では、ビデオ自体からどのように取得できるのでしょうか..それは可能ですか..データベースからURLを取得して表示することができます..リンクをクリックすると、jqueryプレーヤーで再生されます..だからその前に、そのプレビューまたはそのプレイリストをユーザーが利用できるようにすることができます。

見つけたリンクでコードを更新しました..しかし、それでもビデオから画像を取得できません..コードに何か問題がありますか..間違っている場合は修正してください..

以下は私のフロントエンドコードです:

<form id="form1" runat="server">
    <div id="examples" runat="server" style="height:100%;width:100%">
        <div id="vidhead">Latest Videos</div>

    </div>

    </form>

以下に示すように、ページの読み込み時にバックエンドからすべてのビデオ リンクを追加しています。

   try
    {
        con.Open();
        com = new SqlCommand("Select videourl, videoname from video order by [vid] desc",con);
        DbDataReader dr = com.ExecuteReader();
        DataTable dt = new DataTable();

        if (dr.HasRows)
        {

            int i = 0;
            dt.Load(dr);
            int rows = dt.Rows.Count;


            for (i = 0; i < rows; i++)
            {
                HtmlGenericControl d = new HtmlGenericControl("div");
                HtmlGenericControl s = new HtmlGenericControl("span");
                string[] link = new string[rows];
                string[] name = new string[rows];                    

                d.Attributes.Add("class", "plst");
                s.Attributes.Add("class", "text");
                link[i] = dt.Rows[i]["videourl"].ToString();
                name[i] = dt.Rows[i]["videoname"].ToString();
                string videothumb = link[i];
                string svthto="**Path to save Image**";
                string imgpath=GetVideoThumbnail(videothumb, svthto, 30);

                sb.Append("<a id=" + "\"a" + i + "\"" + " href=" + "\"" + link[i] + "\"" + " class=" + "\"links\"" + ">" + name[i] + "</a>");
                s.InnerHtml = sb.ToString();
                d.Controls.Add(s);
                examples.Controls.Add(d);
                sb.Clear();


            }
        }


    }
    catch(Exception ex)
    {
        ex.Message.ToString();
    }

public string GetVideoThumbnail(string path, string saveThumbnailTo, int seconds)
{
    string parameters = string.Format("-ss {0} -i {1} -f image2 -vframes 1 -y {2}", seconds, path, saveThumbnailTo);
    string pathToConvertor = "C:\\Program Files\\ffmpeg\\ffmpeg.exe";
    var processInfo = new ProcessStartInfo();
    processInfo.FileName = pathToConvertor;
    processInfo.Arguments = parameters;
    processInfo.CreateNoWindow = true;
    processInfo.UseShellExecute = false;

    File.Delete(saveThumbnailTo);

    using (var process = new Process())
    {
        process.StartInfo = processInfo;
        process.Start();
        process.WaitForExit();
    }

    if (File.Exists(saveThumbnailTo))
        return saveThumbnailTo;
    else
        return "File not Found";
}

そして、これが私が今まで得ているもののイメージです: サンプル

注意してください: 私はあなたのチューブのビデオに集中していません. サーバー側のフォルダーに保存するビデオについて質問しています。したがって、これを行うためのjqueryテクニックまたは何らかのテクニックがある場合は、私に知らせてください.:)

4

3 に答える 3

4

はい、あなたがやろうとしていることをすることは可能です。まず、URL から動画の ID を解析する必要があります。たとえば、このビデオ (stackoveflow を検索したときに最初に表示された YouTube ビデオ、参考までに) の URL: http://www.youtube.com/watch?v=zsYjsgm4Psgを取り上げます。その動画 ID は ですzsYjsgm4Psgこの投稿から@Asaphを引用し、

各 YouTube ビデオには 4 つの生成された画像があります。それらは次のようにフォーマットされています。

    http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
    http://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
    http://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
    http://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg

リンクされた投稿の @Asaph は、ビデオで使用できるさまざまな画像に関する詳細情報を提供します。ここでは、1.jpg がビデオのサムネイルの 1 つであることを知っていれば十分です。上記の動画 ID を使用して、サムネイルの URL を作成できます。

ここに画像の説明を入力

明らかに、クライアント側で画像が必要になり、その画像要素のソースを、上記のように生成したサムネイル URL に設定する必要があります。

于 2013-07-23T03:25:15.113 に答える
1

最近、html5 と JavaScript の魔法を使用してこれを引き出すことができるかどうかはわかりませんが、サーバー側でビデオ操作を実現するために私が伝統的に知っている方法は、人気のあるコマンド ライン ビデオ変換ユーティリティ コール ffmpeg を使用することです。

http://www.ffmpeg.org/からダウンロードできます。

クイック検索で、次のコード スニペットを含むこのフォーラムの投稿を見つけました。

string videothumb = uniquefilename + fileExt;
Process p;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "D:\\web\\upload\\ffmpeg.exe";
info.WindowStyle = ProcessWindowStyle.Hidden;
info.Arguments = " -i " + "D:\\web\\upload\\files\\" + videothumb + " -vframes 25 -f image2 -vcodec mjpeg " + "D:\\web\\upload\\thumbnails\\" + uniquefilename + "%d.jpg";
p = Process.Start(info);
while (!p.HasExited) { Thread.Sleep(10); }

これは私が今まで見た中で最高のコードのようには思えませんが、始めるにはいいでしょう。

リンクされたスレッドをさらに下ると、生成されるサムネイルを制御する方法も解決されます。

于 2013-07-23T08:12:34.953 に答える