Как узнать, можно ли встраивать видео на YouTube, прежде чем я попытаюсь загрузить его? - PullRequest
3 голосов
/ 25 марта 2012

У меня есть хром-плеер YouTube, в который я пытаюсь загрузить видео, но работают только некоторые видео - не все.Если я не ошибаюсь, то, что не загружается, происходит из-за нарушения авторских прав (например, какой-то эпизод мультфильма не загружается, а домашний фильм о ребенке, который делает сальто назад).То, что я пытаюсь сделать, это либо выяснить, могут ли эти видео загружаться, либо после того, как мы попытаемся загрузить их, либо до этого.

В качестве примера, вот два видео Натали Даун.Один загружает, другой нет.

// loads and plays the video
ytplayer.loadVideoById("GhDGdT33K0k");

// doesn't load/play the video
ytplayer.loadVideoById("-KYUPJIzCyM");

Из данных как рабочего видео , так и нерабочего видео я могу 'Кажется, не видно ничего, что указывало бы на то, что последний не является встраиваемым.[Я ищу <yt:accessControl> теги или отсутствующие yt:format='5' (ср. Как использовать API YouTube для проверки возможности встраивания видео? ), но длябезрезультатно.]

Из того, что я пробовал в консоли, loadVideoById всегда возвращает undefined, независимо от того, действительно ли видео загружается.Кажется, я не могу найти метод API, чтобы определить, было ли это сделано в видео.

Ответы [ 2 ]

3 голосов
/ 25 марта 2012

Оба видео, которые вы упомянули, кажутся загружаемыми и воспроизводимыми для меня.Например, используйте: игровую площадку google code и вставьте видео в теги параметров HTML.

Вот несколько советов.

0 голосов
/ 13 февраля 2018

В настоящее время вы можете подключить событие onError встроенного API и проверить коды ошибок 101 и 150 (они одинаковы), которые идентифицируют, что видео было заблокировано из встроенного воспроизведения. Кроме того, если вы сделаете это таким образом, вы будете действовать по-другому в случае возникновения других ошибок (неправильный запрос, проблемы с HTML 5 и т. Д.).

function onError(event){
    switch(event.data){
        case 2:
            console.log('request contains an invalid parameter value')
            break
        case 5:
            console.log('The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.')
            break
        case 100:
            console.log('The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.')
            break
        case 101:
        case 150:
            console.log('Uploader has blocked this content from embedded playback')
            break
        default:
            console.log('error code: '+event.data)

    }
}

Если вы хотите, чтобы результаты поиска возвращали только встраиваемые видео результаты, включите videoEmbeddable:"true" в ваш запрос

...