【问题标题】:how to embed video in laravel code如何在 laravel 代码中嵌入视频
【发布时间】:2013-06-02 05:04:59
【问题描述】:

我正在做一个项目,我将 youtube 视频链接存储在数据库中,然后我检索这些链接并使用刀片模板引擎尝试将它们嵌入到页面中。我使用循环将视频放在页面中。出于某种原因,我在浏览器中没有收到任何视频。它覆盖了提到的空间,但没有渲染任何东西。我正在使用 laravel 3。这里有几个代码 sn-ps,如果他们有帮助的话。


这是 index.blade.php

@layout('layouts.master')

@section('content')

@foreach ($videos as $video)
    <h4>{{ $video->title }}</h4>
    <br>
    <div class="media">
        <div class="media-body">
            <iframe width="560" height="315" src="{{ $video->link }}" frameborder="0" allowfullscreen>
            </iframe>
        </div>
    </div>
    <br>
@endforeach

@endsection

$videos 变量是从控制器传递过来的。

class Videos_Controller extends Base_Controller
{
public $restful = true;

public function get_index()
{
    $videos = DB::table('videos')->get();
    return View::make('videos.index')
        ->with('title', 'Videos')
        ->with('videos', $videos);
}
}

我得到的只是一个空白页。我不明白我做错了什么。我正在使用 twitter bootstrap 进行 css 原型设计。任何帮助将不胜感激。

master.blade.php 的“头部”如下所示:

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ $title }} </title>
    <meta name="viewport" content="width=device-width">
    {{ HTML::style('css/bootstrap.min.css') }}
    {{ HTML::style('css/bootstrap-responsive.min.css') }}
</head>

这是我检查元素时在 Firefox 中出现的内容。

<div class="media">

<div class="media-body">
    <iframe width="560" height="315" frameborder="0" allowfullscreen=""   src="http://www.youtube.com/watch?v=1iBm60uJXvs">
        #document
            <html>
                <head></head>
                <body></body>
            </html>
    </iframe>
</div>

</div>

【问题讨论】:

  • 你查看blank page的源代码了吗?它是否生成 iFrame?如果是,您是否检查过这些链接在浏览器中是否有效?
  • 它确实会生成 iframe,并且链接确实可以在浏览器中使用。
  • @Xk0nSid:我面临同样的问题。您是否设法找到解决方案。甚至我的页面也正确呈现,链接正确,但视频没有显示。
  • @Gagan 对不起。找不到解决方案。

标签: php mysql video embed laravel


【解决方案1】:

laravel-embed package 可以帮助您使用刀片组件嵌入 YouTube 视频(和其他视频):

<x-embed url="https://www.youtube.com/watch?v=oHg5SJYRHA0" />

您只需将视频的公共 URL 传递到 url 属性中,包将处理其余部分。

此外,该软件包支持的所有服务(不仅仅是 YouTube)都有验证规则,并且开箱即用。

【讨论】:

    【解决方案2】:

    您可以简单地使用 {{}} 而不是使用 {!! !!}

    例如:

    {!! $video-&gt;link !!}

    【讨论】:

      【解决方案3】:

      在视图中使用简单的刀片标签

      {!! $url !!} 这将呈现视频

      而不是

      {{ $url }} 这将写为字符串(例如在输入中)

      【讨论】:

        【解决方案4】:

        对于其他希望在 Laravel 中嵌入视频的人,请查看 KaneCohen/embed。它适用于 Youtube 或 Vimeo(尚未尝试其他来源),而且您不必搞乱任何逻辑。只需安装(documentation 中的安装指南)并:

        @foreach ($videos as $video)
            <h4>{{ $video->title }}</h4>
            <div class="media">
                <div class="media-body">
                    {!! Embed::make($video->link)->parseUrl()->getIframe() !!}
                </div>
            </div>
        @endforeach
        

        别忘了给你设置别名config/app.php

        【讨论】:

        • 帮助了,谢谢。有没有办法通过这个获取视频的缩略图?
        【解决方案5】:

        我有同样的问题,但控制台捕捉到这个错误:

        拒绝在框架中显示“URL”,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。

        我在这里寻找它,我找到了这篇文章

        Refused to display in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'

        这对我有用。

        你应该试试这个

        @layout('layouts.master')
        
        @section('content')
        
        @foreach ($videos as $video)
            <h4>{{ $video->title }}</h4>
            <br>
            <div class="media">
                <div class="media-body">
                    <iframe width="560" height="315" src={{ $video->link + "&output=embed" }} frameborder="0" allowfullscreen>
                    </iframe>
                </div>
            </div>
            <br>
        @endforeach
        
        @endsection
        

        【讨论】:

          【解决方案6】:

          幸运的是,我确实设法找到了解决问题的方法。希望它也能帮助你。使用 embed 语句中存在的 url。因此,例如,如果您转到 youtube 并单击 this 视频的嵌入链接,您会得到这个

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

          现在使用 src 标签中的 url。这也适用于其他视频托管服务,例如 VEVO。

          希望对你有帮助..

          【讨论】:

          • 只是再添加一件事:生成的 url 必须以 http:// 开头,然后您可以附加从 src 标签获取的 url
          【解决方案7】:

          您的“layouts.master”看起来如何? 您的浏览器中有任何 html 源代码吗? 看看:你的'index.blade.php'应该用UTF-8编码,没有'BOM'(在你的编辑器中)!!

          '@layout('layouts.master')' 必须是第一个(昨天在 L4 对我来说也是同样的问题)。

          【讨论】:

          • 这不是这个问题的答案.. 请把这个作为评论发表
          • "@layouts('layouts.master')" 是第一件事。我在问题中添加了 master.blade.php 的“”内容。
          猜你喜欢
          • 2013-04-08
          • 2020-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多