Есть ли способ получить текущее время записанного потока при прямой трансляции на YouTube? Я хочу иметь возможность отправлять запрос API в определенные моменты прямой трансляции, чтобы получить текущую минуту/секунду потока. Конечным результатом, которого я пытаюсь достичь, является возможность регистрации списка основных моментов. По сути, пользователь нажимает кнопку, и он получает текущее время потока в этот момент, затем пользователь может добавить примечание о том, что произошло в это время. Однако, прочитав все документы, я не могу найти способ получить текущее время записанного потока.
Получить текущую продолжительность YouTube Live Event
Ответы (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.
это устарело, но вы можете получить liveStreamingDetails.actualStartTime
через API youtube.
Имея в руках фактическое время начала, вы можете рассчитать, сколько времени прошло.
"https://www.googleapis.com/youtube/v3/videos"
"?part=liveStreamingDetails"
"&id=$id&key=$_key"