【问题标题】:Grab video URL from external URL [closed]从外部 URL 获取视频 URL [关闭]
【发布时间】:2017-05-22 21:41:37
【问题描述】:

我正在尝试从外部 URL 访问视频元素的 URL。

这是我尝试访问的 URL 示例: https://www.musical.ly/v/MzA4NTExODI2MDI0MjMzNDgxOTEyMzI.html

file_get_contents 和 curl 返回一个没有视频的 html 代码,我做错了什么?

任何 PHP/jQuery 解决方案都会很棒!

【问题讨论】:

  • 我猜你想要来自上述 URL 的视频?这不适用于file_get_contentscurl,因为视频在 HTML 中不存在,而是在页面加载时通过 javascript(确切地说是 jpplayer)加载。
  • 这是您需要解析的 HTML 行:<video id="jp_video_0" preload="auto" src="http://res01.musical.ly/reg02/2017/01/08/20/182602423348191232.mp4" style="width: 0px; height: 0px;"></video>。这包含指向 mp4 文件的链接。
  • 您可以使用正则表达式或直接解析 HTML 结构来获取 URL。您可以使用该链接做任何您想做的事情:将其嵌入您的页面或下载它。
  • 但正如@MagnusEriksson 所写,视频是在页面加载后通过javascript 加载的。有解决办法吗?
  • @LucaAngioloni - 默认文档中不存在该 HTML。它是使用 jpplayer 库(使用 js)页面加载后生成的,因此在获取源代码时他没有得到。

标签: php jquery curl video cross-domain


【解决方案1】:

看起来MzA4NTExODI2MDI0MjMzNDgxOTEyMzI-url 的部分是视频密钥。

他们正在调用:https://www.musical.ly/rest/v2/musicals/shareInfo?key=MzA4NT‌​ExODI2MDI0MjMzNDgxOT‌​EyMzI 以获取 json 格式的视频信息。

您也可以这样做,只使用 json 响应中的 videoUri

示例

只是为了好玩,我创建了一个如何从初始 URL 获取它的示例。这当然需要一些验证等,但这是一个工作示例:

<?php
$url      = 'https://www.musical.ly/v/MzA4NTExODI2MDI0MjMzNDgxOTEyMzI.html';

// Extract the url path and explode the segments
$segments = explode('/', parse_url($url, PHP_URL_PATH));

if (isset($segments[2])) {
    // We have the key segment so let's build the URL to fetch the info
    $infoUrl = 'https://www.musical.ly/rest/v2/musicals/shareInfo?key=' . rtrim($segments[2], '.html');
    $info    = file_get_contents($infoUrl);
    $info    = $info ? json_decode($info, true) : null;
}

if (isset($info['result'], $info['result']['videoUri'])) {
    // We have all we need, let's get the video uri
    echo $info['result']['videoUri'];
} else {
    die('No video URI found');
}

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2012-10-28
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多