微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – YouTube直接上传 – OutOfMemory例外

每当我尝试使用YouTube API通过直接上传上传大型视频时.我得到一个OutOfMemory异常.有什么办法可以摆脱这个吗? YouTube API没有说明使用直接上传的视频大小限制.

我放弃了直接上传.现在我尝试了可恢复的上传方式.我的代码如下.

YouTubeRequest request;
YouTubeRequestSettings settings = new YouTubeRequestSettings("YouTube Upload",Client Key,"Username","Password");
request = new YouTubeRequest(settings);
Video newVideo = new Video();

Resumableuploader m_Resumableuploader = null;
Authenticator YouTubeAuthenticator;

m_Resumableuploader = new Resumableuploader(256); //chunksize 256 kilobyte
m_Resumableuploader.AsyncoperationCompleted += new AsyncoperationCompletedEventHandler(m_Resumableuploader_AsyncoperationCompleted);
m_Resumableuploader.AsyncoperationProgress += new AsyncoperationProgressEventHandler(m_Resumableuploader_AsyncoperationProgress);

YouTubeAuthenticator = new ClientLoginAuthenticator("YouTubeUploader",ServiceNames.YouTube,"kjohnson@resoluteinnovations.com","password");

//AtomLink link = new AtomLink("http://uploads.gdata.youtube.com/resumable/Feeds/api/users/uploads");
//link.Rel = Resumableuploader.CreateMediaRelation;
//newVideo.YouTubeEntry.Links.Add(link);

System.IO.FileStream stream = new System.IO.FileStream(filePath,System.IO.FileMode.Open,System.IO.FileAccess.Read);

byte[] chunk = new byte[256000];int count = 1;
while (true) {
    int index = 0;
    while (index < chunk.Length) {
        int bytesRead = stream.Read(chunk,index,chunk.Length - index);
        if (bytesRead == 0) {
            break;
        }
        index += bytesRead;
    }
    if (index != 0) { // Our prevIoUs chunk may have been the last one
        newVideo.MediaSource = new MediaFileSource(new MemoryStream(chunk),filePath,"video/quicktime");
        if (count == 1) {
            m_Resumableuploader.InsertAsync(YouTubeAuthenticator,newVideo.YouTubeEntry,new MemoryStream(chunk));
            count++;
        }
        else
            m_Resumableuploader.ResumeAsync(YouTubeAuthenticator,new Uri("http://uploads.gdata.youtube.com/resumable/Feeds/api/users/uploads"),"POST",new MemoryStream(chunk),"video/quicktime",new object());
    }
    if (index != chunk.Length) { // We didn't read a full chunk: we're done
        break;
    }
}

谁能告诉我有什么问题?我的2 GB视频无法上传.

解决方法

我收到403 Forbidden错误的原因是因为我没有传入:

>用户名&密码
>开发人员密钥

上传代码中未使用/发送上述代码中的请求变量.因此我正在进行未经授权的上传.

原文地址:https://www.jb51.cc/csharp/92098.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐