zoukankan      html  css  js  c++  java
  • 视频网站分享flv视频截图

    上一篇:通过flv的url得到视频截图
       

    但是不能通过一些视频网站连接直接得到图片,而只能通过flv的url得到图片,很鸡肋的一个东西。偶尔发现有很多网站提供在线flv解析.如我要用的这个:http://www.flvcd.com/ ,号称支持66个视频网站的flv地址获取,那就直接用它的了。通过它得到flv的实际地址之后再下载小部分,然后再截图操做。

    代码
     protected void Button1_Click(object sender, EventArgs e)
        {
            
    string flvUrl = string.Empty;
            
    string flvName = string.Empty;
            
    string urlStr = TextBox1.Text;
            WebClient web 
    = new WebClient();
            
    string reqStr = web.DownloadString("http://www.flvcd.com/parse.php?flag=&format=&kw=" + Server.UrlEncode(urlStr));
            
    string[] str = reqStr.Split(new string[] { "copyToClipboard('"}, StringSplitOptions.None);
            
    if (str.Length > 1)
            {
                
    for (int i = 1; i < str.Length; i++)
                {
                    
    int start = str[i].IndexOf("'");
                    
    string temp = str[i].Substring(0, start);
                    
    if (temp.StartsWith("http"))
                        flvUrl 
    = temp;
                    
    else
                        flvName 
    = temp;
                }
            }
            Literal1.Text 
    = "FlvUrl地址为:" + flvUrl + "<br/>flv名称:" + flvName;
            
    string tempFlvName=System.Guid.NewGuid().ToString()+".flv";
            SaveTempFlv(flvUrl, tempFlvName, 
    200);
            Image1.ImageUrl 
    = CatchImg(tempFlvName);
        }

     通过webclient下载带有flv地址的页面再提取它的地址。

    同时附上上篇代码:

    代码
    private void SaveTempFlv(string url, string fileName, int sizeKB)
        {
            HttpWebRequest wr 
    = (HttpWebRequest)HttpWebRequest.Create(url);
            wr.Method 
    = "get";
             HttpWebResponse rs
    =(HttpWebResponse)wr.GetResponse();
             BinaryReader br
    =new BinaryReader( rs.GetResponseStream());
             FileStream fs
    = File.Create(Server.MapPath(""+ "\\"+fileName);
             
    int byteread = 1;
             
    int tempsize = 0;
             
    byte[] bt = new byte[1024];
             
    while ((byteread = br.Read(bt, 01024))>0)
             {
                 tempsize
    +=byteread;
                 
    if (tempsize >= sizeKB*1024)
                     
    break;
                 fs.Write(bt, 
    0, byteread);
             }
            br.Close();
            fs.Close();
            fs.Dispose();
        }
        
    public string CatchImg(string vFileName)
        {
            
    string ffmpeg = Server.MapPath(""+ "\\" + "ffmpeg.exe";
            
    if (!System.IO.File.Exists(ffmpeg))
                
    return "";
            
    string flv_img = Path.ChangeExtension(vFileName, ".jpg");
            
    string flv_img_p = Server.MapPath(flv_img);
            vFileName 
    = Server.MapPath(vFileName);
            
    string FlvImgSize = "500x400";
         
    //   Response.Write(vFileName);
            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle 
    = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.Arguments 
    = "   -i   " + vFileName + "   -y   -f   image2   -ss   1   -s   " + FlvImgSize + "   " + flv_img_p;
            Response.Write(startInfo.Arguments);
            
    // -ss 后面的是搜索指定时间,1表示1s。200K应该都有1s吧~~
             System.Diagnostics.Process.Start(startInfo);
             
    return flv_img;
        }

     效果:测试优酷和土豆,两个站点都能下载到几秒的flv视频,但是没有截取到图片,cmd执行的时候发现ffmpeg不支持这种类型的视频格式。flv视频有哪几种格式呢,我想得换种转化工具才行。因为我下载到的几秒钟视频时可以正常播放的。

  • 相关阅读:
    经验谈 论前端架构的重要性
    论 Angular的混乱
    DTW 算法(转)
    软件提高发射功率原理
    (转)LSI SAS 1068E Raid CentOS 5.5 安装实例浪潮NF5220系列 分类: linux
    聚类算法总结
    信号相似性的描述
    python科学计算整理
    一个无线通信类投稿的期刊list
    2012年Elsevier旗下Computer Science期刊最新SCI影响因子排名
  • 原文地址:https://www.cnblogs.com/lulu/p/1730555.html
Copyright © 2011-2022 走看看