Получить текущую продолжительность YouTube Live Event

Есть ли способ получить текущее время записанного потока при прямой трансляции на YouTube? Я хочу иметь возможность отправлять запрос API в определенные моменты прямой трансляции, чтобы получить текущую минуту/секунду потока. Конечным результатом, которого я пытаюсь достичь, является возможность регистрации списка основных моментов. По сути, пользователь нажимает кнопку, и он получает текущее время потока в этот момент, затем пользователь может добавить примечание о том, что произошло в это время. Однако, прочитав все документы, я не могу найти способ получить текущее время записанного потока.


person Brandon Rohde    schedule 14.03.2015    source источник
comment
Эй, @Брэндон Роде, мой ответ помог тебе? Дайте мне знать, если вам нужна дополнительная помощь.   -  person JAL    schedule 23.03.2015
comment
Извините за задержку ответа @JAL! Я пересмотрел это сегодня, и это определенно помогло. Это шаг в правильном направлении, однако он по-прежнему очень непоследовательный и ненадежный с прямыми трансляциями. Кажется, чем дольше длится поток, тем хуже.   -  person Brandon Rohde    schedule 13.05.2015
comment
Я согласен. Live Streaming API все еще очень нестабилен, даже после выпуска более года. Кроме того, API iFrame может быть прекращено в любое время, поэтому в идеале YouTube должен предоставить лучший способ получить продолжительность с помощью своего проигрывателя HTML5.   -  person JAL    schedule 13.05.2015


Ответы (2)


Похоже, вы можете сделать это с помощью метода getDuration() iFrame API.

https://developers.google.com/youtube/iframe_api_reference#getDuration

Ознакомьтесь со специальным примечанием для прямых трансляций:

Если текущее воспроизводимое видео является событием в прямом эфире, функция getDuration() вернет время, прошедшее с момента начала потокового видео в реальном времени. В частности, это количество времени, в течение которого видео транслировалось без сброса или прерывания. Кроме того, эта продолжительность обычно больше, чем фактическое время события, поскольку потоковая передача может начаться до времени начала события.

Вы не указали язык, поэтому я опубликую примеры кода на двух разных языках. Оба используют iFrame API.

JavaScript:

window.onYouTubePlayerReady = function(playerId) {
    window.ytplayer = document.getElementById("ytPlayer");
    console.log(window.ytplayer.getDuration());
}

Objective-C (с использованием класса YouTube youtube-ios-player-helper)

@property (weak, nonatomic) IBOutlet YTPlayerView *playerView;

// ...

- (void)viewDidLoad {
    [super viewDidLoad];
    [[self.playerView loadWithVideoId:@"iGTIK_8ydoI"] // live at the time answer was posted
}

// ...

- (void)getDurationOfPlayingVideo {

    NSLog(@"duration: %d", [self.playerView duration]);
}

Так же, как оговорка от моего личного тестирования: Live Streaming API необычайно темпераментен и нестабилен, и я обнаружил, что некоторые события Live возвращают продолжительность 0.

person JAL    schedule 18.03.2015

это устарело, но вы можете получить liveStreamingDetails.actualStartTime через API youtube.
Имея в руках фактическое время начала, вы можете рассчитать, сколько времени прошло.

"https://www.googleapis.com/youtube/v3/videos"
        "?part=liveStreamingDetails"
        "&id=$id&key=$_key"
person Jonathan    schedule 16.03.2019