使用C#API(2.0)进行上传返回“元数据部分太大”

时间:2013-01-24 22:50:43

标签: .net youtube-api

使用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专业人士。

2 个答案:

答案 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中回收了应用程序池并且工作了!!!谢谢