使用Google.YouTube.YouTubeRequest.Upload(视频v)api调用,然后我得到:
GDataRequestException,响应字符串“元数据部分太大”。
这个直接上传调用适用于我的个人开发机器,但我在QA机器上遇到了这个例外。
任何想法?
EDIT 这是代码: 所以添加的唯一元数据是标题,描述和标签(两台机器上的相同元数据和相同的视频)。
public void Add(InternalVideo video)
{
var youtubeVideo = ConvertVideo(video);
var v = _request.Upload(youtubeVideo);
}
private Video ConvertVideo(InternalVideo video)
{
var youTubeVideo = new Video();
youTubeVideo.Title = video.Title;
youTubeVideo.Description = video.Description;
AddTags(video, youTubeVideo);
string contentType = MediaFileSource.GetContentTypeForFileName(video.URL);
byte[] imageData = DownloadData(video.URL);
File.WriteAllBytes(_tempVideoFileName, imageData);
youTubeVideo.MediaSource = new MediaFileSource(_tempVideoFileName, contentType);
var link = new AtomLink("http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads");
link.Rel = ResumableUploader.CreateMediaRelation;
youTubeVideo.YouTubeEntry.Links.Add(link);
youTubeVideo.Private = false;
return youTubeVideo;
}
private void AddTags(InternalVideo video, Video youTubeVideo)
{
var category = video.Client.ClientSyndicationProviders[0].SyndicationProvider.Category;
youTubeVideo.Tags.Clear();
youTubeVideo.Tags.Add(new MediaCategory(category, YouTubeNameTable.CategorySchema));
youTubeVideo.Keywords = video.Tags;
}
编辑2: 此代码有效: _resumableUploader = new ResumableUploader(25); WebResponse r = _resumableUploader.Insert(_youTubeAuthenticator,youtubeVideo.YouTubeEntry);
我不确定为什么我必须使用可恢复上传器来完成这项工作。 机器之间的唯一区别是QA机器是Windows Server 2003 R2, 而开发机器是Windows 7专业人士。
答案 0 :(得分:0)
我遇到了同样的问题(win 7 pro和server 2008)并得到了同样无用的错误消息。在将GoogleApi \ core \ mediaservice.cs,EntrySend函数中的outputStream的内容写入本地计算机和服务器上的日志文件后,我终于弄明白了。我没有尝试上传在服务器上注册的mp4文件类型。一旦我在服务器上注册了文件类型就可以了。
如果其他人需要这样做,只需在客户端的HKEY_CLASSES_ROOT下找到文件扩展名,然后右键单击它并单击“导出”。然后将创建的.reg文件移动到您的服务器并双击它以获取添加到服务器的值。我还将文件类型添加到IIS中的MIME类型,但我不认为这是必要的,我在安装注册表项之后再次在IIS中回收我的应用程序池,然后再次测试它。
答案 1 :(得分:0)
为我工作...我在HKEY_CLASSES_ROOT .flv和.mp4中添加了,然后我在IIS中回收了应用程序池并且工作了!!!谢谢