C#如何通过URL嵌入视频(如Facebook)

本文关键字:Facebook 视频 何通过 URL | 更新日期: 2023-09-27 18:29:22

我试图通过只提供URL来允许用户在我的网站上发布视频。现在,我只需解析URL并获取ID,然后将该ID插入到给定的"嵌入"代码中并将其放在页面上,就可以允许YouTube视频播放。

这限制了我只能观看YouTube视频。然而,我想做的是类似于facebook的事情,你可以直接输入YouTube的"共享"URL或页面的URL,或任何其他视频URL,然后将视频加载到他们的播放器中。

知道他们是怎么做到的吗?或者任何其他类似的方式来仅仅基于URL显示视频?请记住,youtube视频(无论如何可能是最受欢迎的)没有提供视频url,而是提供youtube页面上视频的url(这就是为什么只需要ID就可以嵌入代码的原因)。

希望这是有道理的,我希望有人能给我一些建议,告诉我去哪里看!

谢谢大家。

C#如何通过URL嵌入视频(如Facebook)

我建议添加对OpenGraph属性的支持,这在内容服务中很常见,这些服务可以使其他网站嵌入其内容。页面上的信息将包含在它们的<meta>标签中,这意味着你必须通过HtmlAgilityPack:之类的东西加载URL

var doc = new HtmlDocument();
doc.Load(webClient.OpenRead(url)); // not exactly production quality
var openGraph = new Dictionary<string, string>();
foreach (var meta in doc.DocumentNode.SelectNodes("//meta"))
{
    var property = meta["property"];
    var content = meta["content"];
    if (property != null && property.Value.StartsWith("og:"))
    {
        openGraph[property.Value]
            = content != null ? content.Value : String.Empty;
    }
}
// Supported by: YouTube, Vimeo, CollegeHumor, etc
if (openGraph.ContainsKey("og:video"))
{
    // 1. Get the MIME Type
    string mime;
    if (!openGraph.TryGetValue("og:video:type", out mime))
    {
        mime = "application/x-shockwave-flash"; // should error
    }
    // 2. Get width/height
    string _w, _h;
    if (!openGraph.TryGetValue("og:video:width", out _w)
     || !openGraph.TryGetValue("og:video:height", out _h))
    {
        _w = _h = "300"; // probably an error :)
    }
    int w = Int32.Parse(_w), h = Int32.Parse(_h);
    Console.WriteLine(
        "<embed src='"{0}'" type='"{1}'" width='"{2}'" height='"{3}'" />",
        openGraph["og:video"],
        mime,
        w,
        h);
}