Youtube API - загрузка большого файла с использованием vb.net - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь загрузить большой (4MB +) файл на YouTube, используя API в VB.NET. Меньшие файлы загружаются нормально, но все, что больше, чем около 4 МБ, выдает ошибку, которая (я думаю) на самом деле связана с тайм-аутом: запрос был прерван: запрос был отменен.

Я прочитал и перечитал API doco, googled и т. Д., Ища пример в VB.NET, но, похоже, ничего не существует для vb.net Несколько кодеров столкнулись с одной и той же проблемой, и ответы были все о c # или Java - ни с чем я не знаком. Я пробовал разные комбинации settings.timeout и settings.maximum, но, похоже, это не имеет значения

Текущий код:

Sub UploadYouTube (ByVal sSourceFile As String, ByVal sTitle As String, ByVal sMediaCategory As String, ByVal sDesc As String) Dim uSettings As YouTubeRequestSettings, uRequest As YouTubeRequest, newVideo As Video, CreatedVideo As Video, VideoId As String Dim vContentType As String = "video" Пытаться uSettings = Новый YouTubeRequestSettings (,,,)

        uRequest = New YouTubeRequest(uSettings)

        newVideo = New Video()
        newVideo.Title = sTitle '"Test";
        newVideo.Tags.Add(New MediaCategory("Education", YouTubeNameTable.CategorySchema))
        newVideo.Description = sDesc        '"Testing Testing Testing"
        newVideo.YouTubeEntry.Private = False
        uRequest.Settings.Timeout = 60 * 60 * 1000
        uRequest.Settings.Maximum = 2000000000

        ' Determine the content type
        If sSourceFile.EndsWith(".mov") Then
            vContentType = "video/quicktime"
        ElseIf sSourceFile.EndsWith(".avi") Or sSourceFile.EndsWith(".mpg") Or sSourceFile.EndsWith(".mpeg") Then
            vContentType = "video/mpeg"
        ElseIf sSourceFile.EndsWith(".wmv") Then
            vContentType = "video/x-ms-wmv"
        ElseIf sSourceFile.EndsWith(".m4v") Then
            vContentType = "video/m4v"
        ElseIf sSourceFile.EndsWith(".mp4") Then
            vContentType = "video/mp4"
        ElseIf sSourceFile.EndsWith(".3gp") Then
            vContentType = "video/3gpp"
        End If
        newVideo.YouTubeEntry.MediaSource = New MediaFileSource(sSourceFile, vContentType)

        CreatedVideo = uRequest.Upload(newVideo)
        VideoId = CreatedVideo.VideoId
        ' Save the video Id to the database!
    Catch ex As Exception
        debug.print("Error. MainModule.Main. " & ex.Message, 5)
    End Try
End Sub

Любая помощь очень ценится

Tony

Ответы [ 2 ]

0 голосов
/ 28 апреля 2012

Я попытался решить проблему тайм-аута с помощью фонового работника. Это работает, вроде. Похоже, что он на самом деле не работает в фоновом режиме. Я думаю, что RunWorkerAsync запустится, перейдет к следующей команде и выполнит обратную передачу. Вместо этого он просто зависает на несколько минут, как будто загружает весь файл размером 75 МБ, а затем отправляет обратно успешно. Если я уберу фонового работника и просто выполню загрузку, это произойдет не так, как у вас. Вот мой код, который вроде работает.

Sub up_load(s As Object, e As EventArgs)
    Dim worker As BackgroundWorker = New BackgroundWorker

    worker.WorkerReportsProgress = True
    worker.WorkerSupportsCancellation = True
    AddHandler (worker.DoWork), AddressOf begin_upload
    worker.RunWorkerAsync()
    lblmsg.Text = "Successfully initiated upload"
End Sub

Sub begin_upload(s As Object, e As DoWorkEventArgs)

    Dim request As New YouTubeRequest(settings)
    Dim vidupload As New Video()

    vidupload.Title = "My Big Test Movie"
    vidupload.Tags.Add(New MediaCategory("Nonprofit", YouTubeNameTable.CategorySchema))
    vidupload.Keywords = "church, jesus"
    vidupload.Description = "See the entire video"
    vidupload.YouTubeEntry.Private = False
    vidupload.YouTubeEntry.setYouTubeExtension("location", "Downers Grove, IL")
    vidupload.YouTubeEntry.MediaSource = New MediaFileSource("c:\users\greg\test3.asf", "video/x-ms-wmv")

    Dim createdVideo As Video = Request.Upload(vidupload)
End Sub
0 голосов
/ 13 декабря 2011

Пример Python: https://github.com/Mathieu69/Pitivi_Gargamel/blob/upload_merger/pitivi/uploader.py сделал это 3 месяца назад, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...