Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manipilar archivo avi (https://www.clubdelphi.com/foros/showthread.php?t=38670)

paty_rlopez 22-12-2006 16:29:42

Manipilar archivo avi
 
Hola a todos
Necesito manipular archivos AVI por ejemplo
Tengo un archivo .AVI que dura 10 minutos pero solo quiero los 5 minutos de en medio, y gusrdarlos en otro archivo .AVI

1 2 3 4 5 6 7 8 9 10
¿Alguno de ustedes me puede orientar por donde buscar? Si se puede con delphi seria lo ideal, pero si no, en el lenguaje que sea, lo siguiente ya me suena como un sueño, pero si ya existiera una aplicación en el que le mandara como parámetros el archivo, el tiempo de inicio y el tiempo de fin, pero bueno con que me orienten de cómo buscar algo de documentación para hacer una función perecida a la de “mi sueño” me doy por bien ayudada,

seoane 22-12-2006 17:30:48

Cita:

Empezado por paty_rlopez
pero si ya existiera una aplicación en el que le mandara como parámetros el archivo, el tiempo de inicio y el tiempo de fin

Se me ocurre que puedes usar mplayer, que es un reproductor "Open source" para linux (hay una versión para windows) que permite, entre otras muchas cosas, recortar, codificar, etc. La única pega es que se tiene que usar desde la linea de comandos, pero eso en tu caso es una ventaja, ya que puedes desde tu programa en delphi pasarle como parámetros el archivo y los tiempos. Bueno, veras que tiene un ciento de opciones y posibilidades.

Para hacer lo que tu quieres, se utilizaria algo como esto:
Código:

  mencoder -ss 00:03:00 d:\1.avi -o d:\2.avi -oac copy -ovc copy -endpos 00:05:00
Tendrás que echarle un vistazo a la documentación para ver todas las posibilidades.

paty_rlopez 22-12-2006 18:03:57

Gracias
 
muchas gracias seoane
en este mismo momento voy a buscar la ducumentacion que me dices
espero y esto sea la solucion a mi problema
y nuevamente MUCHAS GRACIAS

kalisto 22-12-2006 22:45:27

Puedes utilizar VirtualDub, VirtualDubMod que tiene interfaz grafica, permiten hacer lo que tu quieres y muchas cosas mas de forma sencilla.

paty_rlopez 26-12-2006 19:15:56

sigo documentándome sobre las sugerencias que me plantean en cuanto resuelva el problema yo les digo que utilice y como lo hice, gracias por su interés en ayudarme.

paty_rlopez 29-12-2006 19:54:07

Hola a todos de nuevo quesiera preguntarle a seoane ¿como puedo mandar ese codigo
Cita:

mencoder -ss 00:03:00 d:\1.avi -o d:\2.avi -oac copy -ovc copy -endpos 00:05:00
por linea de comandos desde delphi, lo intente asi
Cita:

WinExec(c:\programas\mencoder -ss 00:03:00 d:\1.avi -o d:\2.avi -oac copy -ovc copy -endpos 00:05:00, SW_SHOWNORMAL);
y no se genera archivo alguno

Si alguien mas me puede ayudar gracias de antemano

seoane 29-12-2006 20:18:58

Cita:

Empezado por paty_rlopez
WinExec(c:\programas\mencoder -ss 00:03:00 d:\1.avi -o d:\2.avi -oac copy -ovc copy -endpos 00:05:00, SW_SHOWNORMAL);

Eso tal como esta escrito, ni siquiera creo que compile ;) . Por que mejor no copias y pegas el código tal como lo tienes en tu programa. Y describes exactamente el error que te da.

paty_rlopez 29-12-2006 20:31:43

Código:

procedure TForm1.Button3Click(Sender: TObject);
var
  L_VideosList: TStringList;
  i : Integer;
  Pegar : String;
begin
        If not DirectoryExists('c:\coco') then    CreateDir('c:\coco');
        If not DirectoryExists('c:\coco\video') then    CreateDir('c:\coco\video');
 
        CoInitialize(nil);
        // L_CamarasSrv:= TFCamaras.Create(nil);
        try
            FCamaras.Show;
            FCamaras.Close;
            FCamaras.SetDirVideos(DIR_GV600_W32);
            L_VideosList:= TStringList.Create;
/*Esta funcion me trae una lista de nombres de archivos que se encuentran en ese  rango de fechas */
            FCamaras.GetFileVideoHist(1, StrToDateTime('07/12/2006 11:26'),  StrToDateTime('30/12/2006 11:36'), L_VideosList);
  finally
    //      FreeAndNil(L_CamarasSrv);
        end;
        CoUninitialize;
        L_VideosList.Add('FIN');
        Pegar := '';
        for i:= 0 to (L_VideosList.Count -1) do
        begin
          if L_VideosList.Strings[i] <> 'FIN' then
            Pegar := Pegar + Trim(L_VideosList.Strings[i]) + ' ';
        end;
        Pegar :=  'c:\Programas\mencoder -ovc copy -oac copy -idx - o c:\coco\video\301220061136.avi ' + Pegar;
        //ASender.Thread.Connection.WriteLn(L_VideosList.Strings[i]);
//aqui intento ejecutar el programa, se alcanza a ver que abre una ventana de msdos pero el archivo no lo genera.
          WinExec(@Pegar[1], SW_SHOWNORMAL);
 
end.


seoane 29-12-2006 20:52:57

Cita:

c:\Programas\mencoder -ovc copy -oac copy -idx - o c:\coco\video\301220061136.avi
Lo primero que veo es que hay un espacio entre "-" y "o". Luego, le sumas la variable pegar ¿que contiene exactamente?

En cuanto a lo de usar WinExec, tambien lo puedes hacer asi
Código Delphi [-]
 WinExec(PChar(Pegar), SW_SHOWNORMAL);

paty_rlopez 30-12-2006 18:00:55

ya está
 
muchas gracias seoane

la respuesta a tu pregunta :
Cita:

¿que contiene exactamente?
La variable "pegar" contiene la lista de los archivos que se van a pegar, en el ciclo las acomodo segun el formato del mencoder

Esta lista es regresada por la funcion "GetFileVideoHist"

Bueno de nuevo muchas gracias y hasta pronto


La franja horaria es GMT +2. Ahora son las 17:55:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi