在请求FileDetails时,YouTube API返回null

时间:2016-07-05 08:32:14

标签: model-view-controller youtube-api youtube-data-api

对于我正在开发的应用程序,我需要知道某些YouTube视频的持续时间。我正在使用.NET库的YouTube库。

请求FileDetails的durationMs属性适用于某些视频,但返回' null'其他视频(全部已完全处理)。这些视频都是不公开的,我们应该保持原样,所以我不愿透露导致问题的视频ID。

这个问题可能是什么原因?我没有从API中获得任何错误,我确实获得了容器(MOV),但是持续时间等属性都是空的。

我已包含相关的代码段。

var videosListRequest = youtube.Videos.List("processingDetails,FileDetails");
videosListRequest.Id = file.FileName;

videosListRequest.OauthToken = Authresult.Result.Credential.Token.AccessToken;
VideoListResponse vlr = videosListRequest.Execute();

if (vlr.Items.Count > 0 && vlr.Items[0].ProcessingDetails.ProcessingStatus == "succeeded")
{
    file.IsVideoProcessed = true;
    int durationInS = (int)(vlr.Items[0].FileDetails.DurationMs / 1000.0);
    UpdateVideoStatus(file.Id, ClientId.Value, MediaStatus.READY, durationInS);
}

1 个答案:

答案 0 :(得分:0)

我认为你应该使用part=contentDetails而不是fileDetails。

SO question开始,明确指出part=contentDetails包含持续时间。

以下是使用part = contentDetails

的示例请求
https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails&key={YOUR_API_KEY}

有关详细信息,请查看此documentation以及此相关的SO question