【问题标题】:how to include video in jekyll markdown blog如何在 jekyll markdown 博客中包含视频
【发布时间】:2012-05-18 18:44:49
【问题描述】:

我刚开始使用 jekyll 写博客。我用markdown写我的帖子。现在,我想在我的帖子中包含一个 youtube 视频。我该怎么做?

另外,我不太喜欢 jekyll 默认提供的 pygments 高亮。无论如何我可以将其更改为其他样式吗?如果是的话,你能指点我一些不错的样式/插件吗?

【问题讨论】:

  • 如果您有两个这样的问题,最好将每个问题都单独发帖给 Stack Overflow 社区。它还将帮助您获得更好的答案,因为每个答案都将直接针对特定问题。

标签: ruby video markdown highlight jekyll


【解决方案1】:

您应该能够将用于嵌入的 HTML 直接放入您的降价中。在视频下方,有一个“分享”按钮,点击它,然后是“嵌入”按钮,它应该给你一些看起来有点像:

<iframe width="420" height="315" src="http://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>

只需将其复制并粘贴到您的帖子中,Markdown 预处理器不会触及它。


对于 Pygments,this repository 中有一大堆用于各种颜色主题的 CSS 样式表,您可以尝试使用它们。 (请注意,您必须将 .codehilite 替换为 .highlight 才能使用 Jekyll。)

【讨论】:

  • 嵌入式 iframe 开箱即用,应该适用于大多数插件。但是,我发现了一个(来自recursive-design.com/projects/jekyll-plugins 的类别页面生成器)存在问题。在这种情况下,解决方法是在打开和关闭 iframe 标记之间放置一个空格。如果有人在嵌入方面遇到问题,那值得一试。
  • @AlanW.Smith 谢谢 Alan,你解决了一个错误,导致我用一个空格字符挠了几个小时的头:)
  • 我不断收到malformed XML: missing tag start 错误。似乎来自 allowfullscreen 属性。我尝试添加 allowfullscreen="true" 并编译但没有正确关闭 iframe 标记并吞下文档的其余部分。
  • @dbaupp 我最终做了:&lt;iframe width="420" height="315" src="//www.youtube.com/embed/w0K1wwSJZoc" frameborder="0" allowfullscreen="allowfullscreen"&gt;&amp;nbsp;&lt;/iframe&gt;(注意 iframe 标签之间的字符,添加它可以正确呈现关闭 iframe 标签)
  • 我的 iframe 最初也没有工作,我注意到我没有引用属性的值。一旦我添加了双引号,它就起作用了。仅供参考。
【解决方案2】:

我做了类似的事情,但就我而言,简单的复制和粘贴不起作用。错误信息如下:

REXML 无法解析此 XML/HTML:

为避免此错误,我从复制的源中删除了allowfullscreen,如下所示:

<iframe width="480" height="360" src="http://www.youtube.com/embed/WO82PoAczTc" frameborder="0"> </iframe>

在结束 &lt;/iframe&gt; 之前添加一个空格很重要。

然后,我成功地将视频嵌入到我的网站中。

【讨论】:

  • 我在 github 页面上有 3 个视频的页面上遇到了同样的问题。删除allowfullscreen 帮助以显示第一个视频,但它隐藏了之后的所有内容(其他视频、文本、页脚......)。在结束 &lt;/iframe&gt; 之前添加一个空格完成了这项工作。
  • 我在 github 页面上遇到了这个问题。通过将 allowfullscreen 更改为 allowfullscreen="allowfullscreen" 来制作 XHTML 对我有用。
  • allowfullscreen="1" 为我工作。似乎解析器只是不喜欢没有值的属性。
  • @magdmartin:感谢有关空格的提示。这解决了我在 Jekyll 帖子中嵌入 Prezi 演示文稿的问题!
【解决方案3】:

在我的情况下,问题已通过 jQuery 解决:

jQuery

$('.x-frame.video').each(function() {
  $(this).after("<iframe class=\"video\" src=\"" + ($(this).attr('data-video')) + "\" frameborder=\"0\"></iframe>");
});

用法

<div class="x-frame video" data-video="http://player.vimeo.com/video/52302939"> </div>

注意&lt;div&gt; &lt;/div&gt;之间需要空格

【讨论】:

    【解决方案4】:

    可以在 Jekyll 中使用一个简单的插件生成插入 youtube 视频的 html 代码 如https://gist.github.com/1805814 中所述。

    语法变得如此简单:

    {% youtube oHg5SJYRHA0 %}
    

    【讨论】:

    • 这是一个很好的提示,尽管该插件也存在问题中发布的问题。我已经分叉了插件并应用了这个问题的答案中建议的更改:gist.github.com/serra/5574343
    • @Marijn 是否可以将其从要点转移到完整的回购?那时会很方便。谢谢
    • 我从 github 收到一个错误“_posts/2015-08-06-my-new-blo-on-jekyll.markdown/#excerpt 中的标签 youtube 不是公认的 Liquid 标签”
    • 这很方便,Hexo 使用相同的逻辑嵌入 Youtube 视频。
    【解决方案5】:

    WordPres 的一个更好的功能是您可以将 Youtube URL 粘贴到内容中(在新行上),然后 WordPress 会将其转换为嵌入代码。

    以下代码对 Jekyll 执行相同的操作。只需将此代码放在您的页脚中(或使用 Jekyll 包含),所有带有 Youtube URL 的段落都会被 Vanilla JS 自动转换为响应式 Youtube 嵌入。

    <style>
    .videoWrapper {position: relative; padding-bottom: 56.333%; height: 0;}
    .videoWrapper iframe {position: absolute; top: 0; left: 0; width: 100%; height: 100%;}    
    </style>
    
    <script>
    function getId(url) {
        var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
        var match = url.match(regExp);
        if (match && match[2].length == 11) {
            return match[2];
        } else {
            return 'error';
        }
    }
    function yt_url2embed() {
        var p = document.getElementsByTagName('p');
        for(var i = 0; i < p.length; i++) {
            var pattern = /^((http|https|ftp):\/\/)/;
            if(pattern.test(p[i].innerHTML)) {
                var myId = getId(p[i].innerHTML);
                p[i].innerHTML = '<div class="videoWrapper"><iframe width="720" height="420" src="https://www.youtube.com/embed/' + myId + '?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe></div>';
            }
        }
    }
    yt_url2embed();
    </script>
    

    虽然只是将 HTML 代码添加到您的 Markdown 是一个非常好的(甚至可能更好)且有效的解决方案,但此解决方案可能对用户更友好。

    (Source)

    【讨论】:

      【解决方案6】:

      您发现自己多久搜索一次“如何在 Markdown 中嵌入视频?

      虽然无法在 Markdown 中嵌入视频,但最好和最简单的方法是从视频中提取帧。为了更容易将视频添加到您的降价文件中,我认为下面的 jekyll 插件会对您有所帮助,它会自动解析图像块内的视频链接。

      jekyll-spaceship - ? Jekyll 插件,为 table、mathjax、plantuml、emoji、youtube、vimeo、dailymotion 等提供强大的支持。

      https://github.com/jeffreytse/jekyll-spaceship

      目前,提供这些视频链接解析:

      • YouTube
      • Vimeo
      • 每日动态
      • ...

      有两种方法可以在 Jekyll 博客页面中嵌入视频:

      内联样式:

      ![]({video-link})
      

      参考风格:

      ![][{reference}]
      
      [{reference}]: {video-link}
      

      然后,您成功地将视频嵌入到您的网站中。

      ???

      【讨论】:

        【解决方案7】:

        现在:

        <iframe width="840" height="473" src="https://www.youtube.com/embed/IQf-vtIC-Uc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
        

        或者

        在浏览器中右键单击视频并复制粘贴嵌入代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-17
          • 1970-01-01
          • 1970-01-01
          • 2016-12-21
          • 2012-04-18
          • 2017-06-17
          • 1970-01-01
          相关资源
          最近更新 更多