【问题标题】:Why are YouTube videos using 'youtube.com/v' not loading为什么使用“youtube.com/v”的 YouTube 视频无法加载
【发布时间】:2016-12-19 10:08:17
【问题描述】:

请查看this page

当在移动设备上查看页面时嵌入的视频会播放,但在计算机上查看时不会播放(在运行 Windows 8 和 10、Chrome、FF 和 Edge 的两台笔记本电脑上进行了测试)。

此问题仅存在于 YouTube 视频中,并且该问题始于 48 小时前(大约)

例如,查看这个 YouTube 网址(没有加载视频):

http://www.youtube.com/v/RCsJHHUkisw&rel=0&color1=0x054b81&color2=0xe2e2e2&hd=1&showinfo=0&enablejsapi=1&playerapiid=ytplayer&fs=1

【问题讨论】:

  • 欢迎加入堆栈请查看此页面stackoverflow.com/help/how-to-ask
  • 您希望我查看该页面上的哪些内容?
  • 有什么东西阻止你切换到 /embed 吗?使用 /v 会强制使用已弃用的 Flash 播放器。
  • 用于CMS的视频模块使用这种方法,所以我现在不得不坚持下去。

标签: youtube youtube-api youtube-data-api


【解决方案1】:

我已经通过重写 emvideo 模块解决了这个问题。

我目前使用的是模块版本 = "6.x-1.26"。

我没有花时间更改整个模块;
我只更改了我需要的部分:

所有更改均在此文件中进行: \sites\all\modules\emfield\contrib\emvideo\providers\youtube.inc

  1. function theme_emvideo_youtube_flash 第 444 行我更改了行

    $url = check_plain("http://www.youtube.com/v/$code&$related$autoplay_value$colors$border$high_quality$display_info$enablejsapi$fs");

    $url = check_plain("https://www.youtube.com/embed/$code");

我所做的是查看 youtube 嵌入代码并尝试使链接看起来相同。

  1. 下一步是在第 566 行函数中更改 FLASH 输出 theme_emvideo_youtube_default_external 并更改下一个内容:

<div id="$div_id"> <object type="application/x-shockwave-flash" height="$height" width="$width" data="$url" id="$id"> <param name="movie" value="$url" /> <param name="allowScriptAccess" value="sameDomain"/> <param name="quality" value="best"/> <param name="allowFullScreen" value="$fullscreen_value"/> <param name="bgcolor" value="#FFFFFF"/> <param name="scale" value="noScale"/> <param name="salign" value="TL"/> <param name="FlashVars" value="$flashvars" /> <param name="wmode" value="transparent" /> </object> </div>

&lt;div id="$url"&gt;&lt;iframe width="$width" height="$width" src="$url" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;

仅此而已……

希望对你有所帮助……

【讨论】:

    【解决方案2】:

    以下内容应该非常接近于替换当前在the page referenced in the question 上提供的内容(object 标记,ID 为 emvideo-youtube-flash-2):

    <iframe id="ytplayer" type="text/html" width="590" height="499"
    src="https://www.youtube.com/embed/Je2vE5RLJ6o?rel=1&showinfo=0&enablejsapi=1&fs=1&origin=http://www.islandcricket.lk/"
    frameborder="0" allowfullscreen>
    

    关于当前提供的实现的一些事情:

    • 使用 object 标记和 youtube.com/v/video id 形式的嵌入 URL(仅提供 Flash 播放器,不提供 HTML5)嵌入 YouTube 视频 has been deprecated for over a year
    • 播放器参数hdis deprecated。 iFrame 播放器(在上面的代码中使用)会根据各种参数自动选择最佳显示质量。如果你想控制这个,你可以use the Javascript API
    • relshowinfoenablejsapifs 参数应继续像以前的实现一样起作用 (parameter documentaion here)
    • 当前实现中设置为sameDomainallowScriptAcess参数替换为origin参数,应设置为切断网页的URL(documented here

    上面代码在 islandcricket.lk 上工作的屏幕截图,通过 webdev 工具测试:

    【讨论】:

    • 感谢您的详细回复,matthewayne!我不知道如何在我正在使用的模块中实现上述内容。我正在使用的模块中有一个文件(youtube.inc),我认为可以对其进行更改,以便正确呈现视频,但不知道如何在此处发布。
    • 在移动设备上查看这些链接时不存在此问题。
    • 您有正在使用的模块的 URL/网页吗?
    • 如果我没看错,这个模块好像9年没更新了。在他的回答中查看另一个模块或实现 DavSev 重写可能会很好。
    猜你喜欢
    • 2011-11-23
    • 2017-06-18
    • 1970-01-01
    • 2012-01-18
    • 2014-01-16
    • 1970-01-01
    • 2012-08-07
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多