YouTube ライブにブロードキャストするときに、記録されたストリームの現在の時刻を取得する方法はありますか? ライブ ストリームの特定の時点で API リクエストを送信して、ストリームの現在の分/秒を取得できるようにしたいと考えています。私が達成しようとしている最終結果は、ハイライトのリストを記録できるようにすることです。基本的に、ユーザーがボタンを押すと、その時点でのストリームの現在の時間が取得され、ユーザーはその時点で何が起こったかについてメモを追加できます。ただし、すべてのドキュメントを読んでも、記録されたストリームの現在の時刻を取得する方法が見つかりません。
2 に答える
iFrame API のgetDuration()
メソッドでこれを行うことができるようです。
https://developers.google.com/youtube/iframe_api_reference#getDuration
ライブ イベントの特記事項を確認してください。
現在再生中のビデオがライブ イベントの場合、getDuration() 関数は、ライブ ビデオ ストリームが開始されてからの経過時間を返します。具体的には、これはビデオがリセットまたは中断されることなくストリーミングされた時間です。また、ストリーミングはイベントの開始時間よりも前に開始される場合があるため、通常、この期間は実際のイベント時間よりも長くなります。
言語を指定しなかったので、コード例を 2 つの異なる言語で投稿します。どちらも 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 は非常に気まぐれで不安定であり、いくつかのライブ イベントが 0 の期間を返すことを発見しました。
これは古いですがliveStreamingDetails.actualStartTime
、youtube API を介して取得できます。
actualStartTime を手にすると、経過時間を計算できます。
"https://www.googleapis.com/youtube/v3/videos"
"?part=liveStreamingDetails"
"&id=$id&key=$_key"