0

對於我正在開發的應用程序,我需要知道某些YouTube視頻的持續時間。我爲YouTube API V3使用.NET庫。YouTube API在請求FileDetails時返回空值

請求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

我認爲你應該使用part=contentDetails而不是fileDetails。

從這個SO question,明確指出part=contentDetails包含持續時間。

下面是使用一部分= contentDetails

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

有關詳細信息檢查此documentation和這個相關SO question的示例請求。