Brandon Rohde
Brandon Rohde

Reputation: 318

Get current duration of YouTube Live Event

Is there a way to get the current time of a the recorded stream when broadcasting to YouTube live? I want to be able to send an API request at certain points throughout a live stream to get the current minute/second of the stream. The end result I am trying to achieve is to be able to log a list of highlights. Essentially, a user presses a button and it gets the current time of the stream at that moment, then the user can add a note for what happened at that time. From reading all the docs though, I cannot find a way to get the current time of the recorded stream.

Upvotes: 2

Views: 4070

Answers (2)

Jonathan
Jonathan

Reputation: 4918

this is old but you can get the liveStreamingDetails.actualStartTime through the youtube API.
With the actualStartTime in hands, you can calculate how much time elapsed.

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

Upvotes: 1

JAL
JAL

Reputation: 42449

Looks like you can do this with the iFrame API's getDuration() method.

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

Check out the special note for live events:

If the currently playing video is a live event, the getDuration() function will return the elapsed time since the live video stream began. Specifically, this is the amount of time that the video has streamed without being reset or interrupted. In addition, this duration is commonly longer than the actual event time since streaming may begin before the event's start time.

You didn't specify a language, so I'll post code examples in two different languages. Both utilize the iFrame API.

JavaScript:

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

Objective-C (using YouTube's youtube-ios-player-helper class)

@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]);
}

Just as a disclaimer from my personal testing: the Live Streaming API is extraordinary temperamental and unstable, and I've found that some Live Events return a duration of 0.

Upvotes: 3

Related Questions