对于我正在开发的应用程序,我需要知道某些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);
}
答案 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。