Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查youtube视频是否为静态图像_Javascript_Jquery_Youtube_Youtube Api - Fatal编程技术网

Javascript 检查youtube视频是否为静态图像

Javascript 检查youtube视频是否为静态图像,javascript,jquery,youtube,youtube-api,Javascript,Jquery,Youtube,Youtube Api,如何确定youtube视频是真实视频还是静态图像 由于可能无法使用youtube API,是否有一种解决方法可以使用javascript/jquery扫描窗口给定区域中的像素并确定它们是否已更改?没有,抱歉。YouTube API中不支持检索有关正在播放的音频或视频内容的信息。YouTube API不支持这一点,但HTML5视频应该可以这样做。 使用HTML5,你可以像复制图像一样复制单个帧。接下来,可以操纵单个像素 以下代码从单个帧(视频)获取像素数据: 没有官方方法确定视频是否为静态

如何确定youtube视频是真实视频还是静态图像


由于可能无法使用youtube API,是否有一种解决方法可以使用javascript/jquery扫描窗口给定区域中的像素并确定它们是否已更改?

没有,抱歉。YouTube API中不支持检索有关正在播放的音频或视频内容的信息。

YouTube API不支持这一点,但HTML5视频应该可以这样做。 使用HTML5,你可以像复制图像一样复制单个帧。接下来,可以操纵单个像素

以下代码从单个帧(视频)获取像素数据:


没有官方方法确定视频是否为静态图像,但您仍然可以使用一些技巧

您可以获得视频缩略图
http://i.ytimg.com/vi/VIDEO_ID/X.jpg
。例如,如果视频ID为500Pm4mQZQQ(静态图像视频),您将拥有以下缩略图:

http://i.ytimg.com/vi/500Pm4mQZQQ/1.jpg
http://i.ytimg.com/vi/500Pm4mQZQQ/2.jpg
http://i.ytimg.com/vi/500Pm4mQZQQ/3.jpg
现在,您可以使用图像相似性检测库来确定缩略图的相似性。例如,您可以使用以下js图像相似性JavaScript算法:

注意:此JS库仅适用于最新的WebKit。需要对Canvas和Array.forEach的支持


您还可以使用PHP。阅读更多关于算法的信息,并检查这个PHP类:

这个粗略的想法是基于,但要简单得多

只用缩略图 你可以得到视频缩略图。对于 例如,如果视频ID为500Pm4mQZQQ(静态图像视频),则 有以下缩略图:

http://i.ytimg.com/vi/500Pm4mQZQQ/1.jpg
http://i.ytimg.com/vi/500Pm4mQZQQ/2.jpg
http://i.ytimg.com/vi/500Pm4mQZQQ/3.jpg
如果这些图像非常相似,则视频是静态的(由于压缩噪声,它们不会完全相同)。为了以简单的方式比较三幅可用的静止图像,您不需要应用实际的图像比较算法。只需比较它们的文件大小

想法:比较JPEG大小 这些是JPEG图像。根据图像的压缩程度,它们的文件大小会有所不同。相似的图像将导致相似的文件大小

上述示例具有3534、3539和3539字节。检查一些随机的非静态视频,我得到了更大的差异:4179、4726和4779字节。非常相似的文件大小=静态视频

开始 使用Javascript获取图像的字节大小(不容易)是不可能的。但对于任何服务器端技术来说,它都应该是微不足道的。这是:

编辑:

PHP中的测试实现: 在这个(公认的小)样本中,确实可以区分正常(前三个)和静态(后三个)


一个大问题是由多个静态图像(幻灯片)制作的视频,这在上传音乐时很常见。

当然,这只适用于HTML5视频,到目前为止,这还不是一个标准。谢谢,我来看看!由于html5的缘故,我不确定这是否会起作用,但很高兴知道!谢谢@SalmanA你想把它作为回答吗?+1。我正要说同样的话,但你抢先说了。有一个很棒的!谢谢,我会检查一下,然后带着你的奖励回来!当我最初问这个问题时,hahaThis正是我想要的。谢谢,很高兴你喜欢。我真的很想知道这是否真的有效,所以我添加了一个快速实现。
$head = array_change_key_case(get_headers("http://example.com/file.ext", TRUE));
$filesize = $head['content-length'];
<?php
$urls = array(
    // Actual videos
    'https://www.youtube.com/watch?v=1iTg20x7w2s',
    'https://www.youtube.com/watch?v=uY6ooLaM3_U',
    'https://www.youtube.com/watch?v=E0vNU6pEQLU',
    // Static videos
    'https://www.youtube.com/watch?v=wWiC_I7R2iI',
    'https://www.youtube.com/watch?v=ytbpMht-7OA',
    'https://www.youtube.com/watch?v=x_38wF6bYCw'
);

foreach($urls as $url) {
    echo $url . ":\n";
    echo thumbSizeStandardDeviation($url) . "\n\n";
}

/**
 * This is the main function
 */
function thumbSizeStandardDeviation($url) {
    $videoId = extractVideoId($url);

    for($i = 1; $i <= 3; $i++) {
        $thumbnailUrl =
            "http://i.ytimg.com/vi/" . $videoId . "/" . $i . ".jpg";
        $fileSizes[] = getRemoteFileSize($thumbnailUrl);
    }

    return standardDeviation($fileSizes);
}

/**
 * https://stackoverflow.com/a/3393008/376138
 */
function extractVideoId($url) {
    parse_str( parse_url( $url, PHP_URL_QUERY ), $queryParams );
    return $queryParams['v'];
}

/**
 * https://stackoverflow.com/a/12249536/376138
 */
function getRemoteFileSize($url) {
    $headers = array_change_key_case(get_headers($url, TRUE));
    return $headers['content-length'];
}

/**
 * https://en.wikipedia.org/wiki/Standard_deviation#Basic_examples
 */
function standardDeviation($numbers) {
    $mean = array_sum($numbers) / count($numbers);
    $differenceSum = 0;
    foreach($numbers as $number) {
        $differenceSum += pow($number - $mean, 2);
    }
    return sqrt($differenceSum / count($numbers));
}
$ php youtube-is-static-video.php
https://www.youtube.com/watch?v=1iTg20x7w2s:
271.21496189472

https://www.youtube.com/watch?v=uY6ooLaM3_U:
28.335294049805

https://www.youtube.com/watch?v=E0vNU6pEQLU:
182.70620010157

https://www.youtube.com/watch?v=wWiC_I7R2iI:
4.1899350299922

https://www.youtube.com/watch?v=ytbpMht-7OA:
7.5424723326565

https://www.youtube.com/watch?v=x_38wF6bYCw:
5.1854497287013