Error getting ASP.net FFMPEG video file conversion: "Error number -2 occurred"

I am trying to integrate FFMPEG into my asp.net site. The process I'm trying to complete is to download the video, check if it is .avi, .mov or .wmv, and then convert this video to mp4 using x264 so that my player can play it.

I am using an http handler (ashx) file to handle my download. Here I also put the conversion code. I'm not sure if this is the best place for this, but I wanted to see if I could at least get it to work.

In addition, I was able to complete the conversion manually through the cmd line. Error -2 appears when I deduce a standard error from an executable process.

This is the error I get:

Version FFmpeg SVN-r23001, Copyright (c) 2000-2010 developers of FFmpeg

built May 1, 2010 06:06:15 with gcc 4.4.2

: --enable-memalign-hack --cross-prefix = i686-mingw32- --cc = ccache-i686-mingw32-gcc --arch = i686 --target-os = mingw32 --enable-runtime -cpudetect - enable-avisynth --enable-gpl --enable-version3 --enable-bzlib --enable-libgsm --enable-libfaad --enable-pthreads --enable-libvorbis --enable-libtheora --enable -libspeex - enable-libmp3lame --enable-libopenjpeg --enable-libxvid --enable-libschroedinger --enable-libx264 --enable-libopencore_amrwb --enable-libopencore_amrnb

libavutil 50.15. 0 / 50.15. 0 libavcodec 52.66. 0 / 52.66. 0 libavformat 52.61. 0 / 52.61. 0 libavdevice 52.2.0 / 52. 2.0 libswscale 0.10. 0 / 0.10. 0

532010_Robotica_720.wmv: error number -2 occurred

here is the code below:

<%@ WebHandler Language="VB" Class="upload" %>

Import System Imports System.Web Import System.IO Import system. Diagnostics Import System.Threading

: IHttpHandler

Public currentTime As System.DateTime

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

    currentTime = System.DateTime.Now

    If (Not context.Request.Files("Filedata") Is Nothing) Then
        Dim file As HttpPostedFile : file = context.Request.Files("Filedata")

        Dim targetDirectory As String : targetDirectory = HttpContext.Current.Server.MapPath(context.Request("folder"))
        Dim targetFilePath As String : targetFilePath = Path.Combine(targetDirectory, currentTime.Month & currentTime.Day & currentTime.Year & "_" & file.FileName)

        Dim fileNameArray As String()
        fileNameArray = Split(file.FileName, ".")

        If (System.IO.File.Exists(targetFilePath)) Then
            System.IO.File.Delete(targetFilePath)
        End If

        file.SaveAs(targetFilePath)

        Select Case fileNameArray(UBound(fileNameArray))
                Case "avi", "mov", "wmv" 
                    Dim fileargs As String = 
                    fileargs = "-y -i " & currentTime.Month & currentTime.Day & 
                    currentTime.Year & "_" & file.FileName & " -ab 96k -vcodec libx264 
                    -vpre normal -level 41 "
                    fileargs += "-crf 25 -bufsize 20000k -maxrate 25000k -g 250 -r 20 
                    -s 900x506 -coder 1 -flags +loop "
                    fileargs += "-cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 
                    -subq 7 -me_range 16 -keyint_min 25 "
                    fileargs += "-sc_threshold 40 -i_qfactor 0.71 
                    -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 "
                    fileargs += "-refs 6 -deblockalpha 0 -deblockbeta 0 -f mp4 " &   
                    currentTime.Month & currentTime.Day & currentTime.Year & "_" & 
                    file.FileName & ".mp4"

                    Dim proc As New Diagnostics.Process()
                    proc.StartInfo.FileName "ffmpeg.exe"
                    proc.StartInfo.Arguments = fileargs
                    proc.StartInfo.UseShellExecute = False
                    proc.StartInfo.CreateNoWindow = True
                    proc.StartInfo.RedirectStandardOutput = True
                    proc.StartInfo.RedirectStandardError = True

                    AddHandler proc.OutputDataReceived, AddressOf SaveTextToFile

                    proc.Start()
                    SaveTextToFile2(proc.StandardError.ReadToEnd())
                    proc.WaitForExit()
                    proc.Close()
            End Select

            context.Response.Write("1")

    End If

End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
    Get
        Return False
    End Get
End Property

Private Shared Sub SaveTextToFile(ByVal sendingProcess As Object, ByVal strData As DataReceivedEventArgs)

    Dim FullPath As String = "text.txt"
    Dim Contents As String = ""

    Dim objReader As StreamWriter
    objReader = New StreamWriter(FullPath)

    If Not String.IsNullOrEmpty(strData.Data) Then
        objReader.Write(Environment.NewLine + strData.Data)
    End If

    objReader.Close()

End Sub

Private Sub SaveTextToFile2(ByVal strData As String)

    Dim FullPath As String = "texterror.txt"
    Dim Contents As String = ""

    Dim objReader As StreamWriter
    objReader = New StreamWriter(FullPath)

    objReader.Write(Environment.NewLine + strData)

    objReader.Close()

End Sub

+3
1

ffmpeg. , .

0

Source: https://habr.com/ru/post/1743877/


All Articles