Banner

quarta-feira, 29 de julho de 2009

Visual Studio 2008 Video Converter - Web Application

Por causa de um projecto, perdi imenso tempo a tentar implementar uma ferramenta que me convertesse ficheiros de vídeos, on Upload, para flv. (flash).

Não foi fácil, principalmente por querer apenas utilizar recursos freeware.

Deixo aqui o código de implementação em Code Behind para Vb.Net

-----------------------
Protected Sub BtAddTrailler_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_Submit.Click
'--- fileuploadImageVideo é o nome que dei á ferramenta/componente do VS para uploads
If fileuploadImageVideo.HasFile Then

'-- Server.MapPath indica a pasta para onde é feito o upload
fileuploadImageVideo.SaveAs(Server.MapPath("~\Uploads\Original") & "\" & fileuploadImageVideo.FileName)

'----Conversão de Video

'- Busca o path da aplicação
Dim AppPath As String = Request.PhysicalApplicationPath

'-- Path input
Dim inputPath As String = ("Uploads\Original\") & fileuploadImageVideo.FileName
'-- Path output
Dim outputPath As String = ("Uploads\Videos\") & fileuploadImageVideo.FileName.Remove(fileuploadImageVideo.FileName.IndexOf(".")) & ".flv"

'-- guarda a string para o delete
FicheiroD = "~\Uploads\Original\" & fileuploadImageVideo.FileName
FicheiroV = "~\Uploads\Videos\" & fileuploadImageVideo.FileName
'-- Comando ffmpeg
Dim fileargs As String = "-i " & inputPath & " -ar 44100 -ab 96 -f flv " & outputPath & ""


'-- função para executar comandos
Dim proc As New System.Diagnostics.Process
proc.StartInfo.FileName = AppPath & ("ffmpeg")
proc.StartInfo.WorkingDirectory = Server.MapPath("~\")
proc.StartInfo.Arguments = fileargs
proc.StartInfo.UseShellExecute = False
proc.StartInfo.CreateNoWindow = False
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden

Try
proc.Start()
Response.Write("Ficheiro carregado com sucesso!")
LabelTrailler.Text = fileuploadImageVideo.FileName.Remove(fileuploadImageVideo.FileName.IndexOf(".")) & ".flv"
Catch ex As Exception
MsgBox("O ficheiro que carregou no servidor está corrompido! Por favor carregue outro ficheiro.")
System.IO.File.Delete(Server.MapPath("~\Uploads\Original\" & fileuploadImageVideo.FileName))
End Try
Else
MsgBox("Não seleccionou ficheiro para carregar no servidor")
End If


End Sub
End Class

'------ Fim de código

É necessário ainda o ficheiro ffmpeg.exe e alguns codecs. para o código acima todos os ficheiros estão na raiz da aplicação.

Deixo o link para descarregar os ficheiros necessário.... já que dá um pouco de trabalho tentar descarregar todos individualmente.

FFMpeg and Others

Espero ter ajudado!

Sem comentários:

Enviar um comentário