Investigamos en distintos sitios para tener para ti la solución para tu inquietud, si tienes alguna duda puedes dejar la duda y te responderemos porque estamos para ayudarte.
Solución:
Ok, ya que no puedo encontrar mucho sobre melt
uso de la línea de comandos, aquí hay algunas notas … (y después de esto, vea esta respuesta ¿Usar la sustitución de procesos para engañar a los programas que esperan archivos, con extensiones específicas como argumento? – Unix & Linux Stack Exchange para un ejemplo de script a través de bash
)
Para empezar, hay un paquete Ubuntu / Debian para melt
(Tengo Ubuntu 11.04 con MLT melt 0.6.2); el enlace proporcionado por @Ielton es para el Wiki “Media Lovin ‘Toolkit” (MLT), que melt
es parte de (pero también openshot
y kdenlive
). Aquí está el enlace a los archivos de texto de la documentación de su git: mltframework.org/mlt.git/tree – docs /; tenga en cuenta que la wiki tiene una página sobre BuildScripts.
Por ahora, el mayor (único) problema que tengo con él es que no puedo encontrar una manera de exportar una composición de video sin comprimir (ya sea como png
fotogramas o algún formato de video sin comprimir).
Primero, en la línea de comandos melt
puede controlar la reproducción a través de fotogramas; por ejemplo, para “crear” un blanco blanco de 15 fotogramas de largo y verlo con el melt
jugador, uso
melt -blank 15
Cuando miras con melt
, también obtendrá una información de línea de comando para stderr
para el reproductor integrado:
$ melt -blank 15
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
|1=-10| |2= -5| |3= -2| |4= -1| |5= 0| |6= 1| |7= 2| |8= 5| |9= 10|
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
+---------------------------------------------------------------------+
| H = back 1 minute, L = forward 1 minute |
| h = previous frame, l = next frame |
| g = start of clip, j = next clip, k = previous clip |
| 0 = restart, q = quit, space = play |
+---------------------------------------------------------------------+
Current Position: 15
Una vez melt
ha terminado la reproducción, no saldrá, por lo que debe escribir q
para salir.
Debemos tener en cuenta que existen los denominados “productores” y “consumidores” en melt
. Si no se especifica nada, entonces el “consumidor” predeterminado es una ventana SDL (Simple DirectMedia Layer) que reproduce el video; por lo que el comando anterior es el mismo que:
melt -blank 15 -consumer sdl
Por tanto, si queremos salvar lo que melt
muestra, debemos cambiar el consumidor a algo que admita un formato de archivo. Para obtener una lista de consumidores:
$ melt -query "consumers"
---
consumers:
- sdl
- sdl_audio
- sdl_preview
- sdl_still
- gtk2_preview
- avformat
- libdv
- xml
- decklink
- null
...
los libdv
El consumidor enviará datos con formato DV directamente a stdout
, así que para guardar el video en un .dv
archivo que harías:
melt -blank 15 -consumer libdv > test.dv
Tenga en cuenta que de los consumidores enumerados, el único formato que he probado, que también se puede abrir en otra aplicación es libdv
(Solía vlc
como otra aplicación); sin embargo, esto puede fallar para un tipo diferente de transcodificación (por ejemplo, si en lugar de un espacio en blanco, intento convertir un fragmento de un .flv
archivo, el archivo .dv resultante se abre y se reproduce en vlc
, pero es corrupto).
Ahora para el edición parte; esencialmente, puede especificar una serie de nombre del archivo/ estrofas de entrada / salida directamente en la línea de comando; di que tienes un archivo, video.avi
– entonces podrías hacer:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79
o un poco mejor formateado:
melt
video.avi in=30 out=79
-blank 15
video.avi in=30 out=79
Esto significa video.avi
desde su fotograma 30 hasta su fotograma 79 se reproducirá; luego un blanco de 15 cuadros; y luego el video.avi
secuencia del cuadro 30 al cuadro 79 nuevamente.
Para utilizar imágenes (digamos, .png
) en una composición de edición de video:
melt
video.avi in=30 out=79
test.png in=0 out=15
video.avi in=30 out=79
-blank 15
Tenga en cuenta que para test.png
, in=
El parámetro no necesita ser 0; sin embargo, la imagen se mostrará para out
–in
tiempo; en este caso, sería más fácil simplemente dejar el in=0
parámetro fuera por completo.
Lo bueno es que esta secuencia de edición se puede guardar, o como melt
lo llama, serializado – a un archivo; nota que hay dos formas de tal serialización: “simple” o XML. Por ejemplo, para guardar el comando anterior como un archivo serializado “simple”, podemos simplemente agregar el -serialise [filename]
cambiar al comando:
$ melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -serialise file.melt
Project saved as file.melt.
Ahora el file.melt
contiene:
video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79
Aparentemente, este formato de archivo serializado “simple” no contiene un carácter de “comentario”, si intento agregar un “# comment
” línea, melt
se queja con: ‘Error al cargar “# comentario”‘(pero aparte de eso, parece que esa línea se ignora y la reproducción continúa de todos modos). “.melt
“parece ser una extensión que melt
reconoce como archivo serializado simple.
Ahora, para volver a reproducir este archivo serializado, en principio podríamos simplemente llamar melt file.melt
– sin embargo, una línea de comando más completa sería:
melt melt_file:file.melt -consumer sdl
… lo que significaría: use el melt_file
“productor” para abrir file.melt
y renderiza sus marcos en el “consumidor” sdl
(ventana).
Tenga en cuenta que tengo la experiencia, que (decir) .flv
Los videos se reproducen sin problemas en la línea de comando; sin embargo, causan un error de segmentación cuando se especifican en el file.melt
archivo serializado! .dv
videos producidos por melt
en sí mismo, parece funcionar bien en file.melt
…
El tipo de serialización XML se puede lograr utilizando el -consumer xml:
cambiar (en lugar de -serialise
) – por lo que el ejemplo anterior ahora sería:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
Para “reproducir” el recién generado file.mlt
Archivo XML, ahora se puede hacer directamente melt file.mlt
– o, una línea de comando más completa sería:
melt xml:file.mlt -consumer sdl
… lo que significaría: use el xml
“productor” (nota, anteriormente era un consumidor) abrir file.mlt
y renderiza sus marcos en el “consumidor” sdl
(ventana).
Tenga en cuenta que en este caso, he experimentado que el mismo .flv
videos que causaron segfault con un archivo de serialización simple – ¡funcionan bien con un archivo de serialización XML!
En este caso, el resultado file.mlt
El archivo XML tiene muchas más configuraciones, como resolución, velocidad de fotogramas, información de códec, etc., pero también es más difícil trabajar con un editor de texto directamente:
producer
1.000000
125
pause
video.avi
2
video
25.000000
0.000000
25.000000
yuv420p
1.000000
601
mpeg4
MPEG-4 part 2
0
audio
s16
22050
1
mp2
MP2 (MPEG audio layer 2)
64000
1
1
1
1
0
avformat
producer
1.000000
125
pause
video.avi
2
video
25.000000
0.000000
25.000000
yuv420p
1.000000
601
mpeg4
MPEG-4 part 2
0
audio
s16
22050
1
mp2
MP2 (MPEG audio layer 2)
64000
1
1
1
1
0
avformat
Sí hay. Intente usar la aplicación llamada “Melt”. Consulte la documentación aquí.
Si usa una distribución derivada de Debian:
apt-get install melt
La solución de ffmpeg a este problema se parece a esto:
mkfifo temp1 temp2 temp3
ffmpeg -i input.wmv -ss 30 -to 60 -c copy output.wmv temp1 2> /dev/null &
ffmpeg -i input2.wmv -t 60 -c copy temp2 2> /dev/null &
ffmpeg -i input3.wmv -i image.png -filter_complex "[0:v][1:v]
overlay=25:25:enable='between(t,0,20)'" -pix_fmt yuv420p -c:a copy temp3 2> /dev/null &
ffmpeg -f mpegts -i "concat:temp1|temp2|temp3" -c copy output.mp4
Utiliza canalizaciones con nombre, por lo que no se pueden crear archivos temporales en el disco y le permite cortar fragmentos de los videoclips y agregar imágenes.
Este ejemplo usa el tiempo 30-60 de la primera entrada y luego agrega el primer minuto de la segunda entrada, luego inserta un archivo de imagen y luego todo el tercer video.
Código extraído de:
Página de concatenación de ffmpeg: https://trac.ffmpeg.org/wiki/Concatenate
página de superusuario Uso de ffmpeg para cortar video
página de superusuario https://video.stackexchange.com/questions/12105/add-an-image-in-front-of-video-using-ffmpeg
Eres capaz de añadir valor a nuestra información colaborando tu veteranía en las crónicas.