Non esitare a condividere la nostra pagina e i nostri codici con i tuoi amici, aiutaci a far crescere la nostra community.
Soluzione:
Ok, dato che non riesco a trovare molto su melt
(e dopo questo, vedere questa risposta Usare la sostituzione di processo per ingannare i programmi che si aspettano file con estensioni specifiche come argomento? - Unix & Linux Stack Exchange per un esempio di script via bash
)
Per cominciare, esiste un pacchetto Ubuntu/Debian per melt
(io ho Ubuntu 11.04 con MLT melt 0.6.2); il link dato da @Ielton è per il Wiki "Media Lovin' Toolkit" (MLT), che melt
fa parte (ma anche openshot
e kdenlive
). Ecco il link ai file di testo della documentazione dal loro git: mltframework.org/mlt.git/tree - docs/; si noti che il wiki ha una pagina sui BuildScripts.
Per ora, il più grande (unico) problema che ho è che non riesco a trovare un modo per esportare una composizione video non compressa (o come png
o in qualche formato video non compresso).
Per prima cosa, nella riga di comando melt
è possibile controllare la riproduzione attraverso i fotogrammi; ad esempio, per "creare" un bianco lungo 15 fotogrammi e visualizzarlo con il programma incorporato melt
incorporato, utilizzare
melt -blank 15
Quando si visualizza con melt
si otterrà anche un'informazione da riga di comando per stderr
per il lettore integrato:
$ 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 volta melt
ha terminato la riproduzione, non uscirà - quindi si dovrà digitare q
per uscire.
Si noti che ci sono i cosiddetti "produttori" e "consumatori" in melt
. Se non viene specificato nulla, il "consumatore" predefinito è una finestra SDL (Simple DirectMedia Layer) che riproduce il video; quindi il comando di cui sopra è lo stesso di:
melt -blank 15 -consumer sdl
Pertanto, se si vuole salvare ciò che melt
si deve cambiare il consumatore in qualcosa che supporti un formato di file. Per ottenere un elenco di consumatori:
$ melt -query "consumers"
---
consumers:
- sdl
- sdl_audio
- sdl_preview
- sdl_still
- gtk2_preview
- avformat
- libdv
- xml
- decklink
- null
...
Il libdv
emetterà i dati formattati DV direttamente a stdout
, quindi per salvare il video in un file .dv
si dovrebbe fare:
melt -blank 15 -consumer libdv > test.dv
Si noti che tra i consumatori elencati, l'unico formato che ho provato, che può essere aperto anche in un'altra applicazione, è il seguente libdv
(ho usato vlc
come altra applicazione); tuttavia, questo potrebbe fallire per un diverso tipo di transcodifica (Ad esempio, se invece di uno spazio vuoto, provo a convertire un frammento da un file .flv
il file .dv risultante si apre e viene riprodotto in vlc
ma è corrotto).
Ora per il file modifica essenzialmente, si può specificare una serie di nome del file/in/out direttamente sulla linea di comandoe; diciamo che abbiamo un file, video.avi
- allora si può fare:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79
o leggermente meglio formattato:
melt
video.avi in=30 out=79
-blank 15
video.avi in=30 out=79
Questo significa video.avi
dal suo fotogramma 30 al suo fotogramma 79 sarà riprodottoed; poi uno spazio vuoto di 15 fotogrammi; e poi il video.avi
dal fotogramma 30 al fotogramma 79.
Per utilizzare le immagini (ad esempio, .png
) in una composizione di montaggio video:
melt
video.avi in=30 out=79
test.png in=0 out=15
video.avi in=30 out=79
-blank 15
Si noti che per test.png
, in=
non è necessario che il parametro sia 0 - tuttavia, l'immagine sarà visualizzata per out
-in
tempoe; in questo caso, sarebbe più semplice lasciare il parametro in=0
non è possibile inserire il parametro.
L'aspetto positivo è che questa sequenza di modifica può essere salvata - o come melt
la chiama, serializzata - a un filee; si noti che ci sono due modi di tale serializzazione: "semplice" o XML. Per esempio, per salvare il comando precedente come file serializzato "semplice", si può semplicemente aggiungere l'opzione -serialise [filename]
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.
Ora il comando file.melt
contiene:
video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79
Apparentemente, questo "semplice" formato di file serializzato non contiene un carattere di "commento": se provo ad aggiungere un carattere "# comment
", melt
si lamenta con: 'Non è riuscito a caricare "# comment"' (ma a parte questo, sembra che tale riga venga ignorata e la riproduzione continua comunque). ".melt
" sembra essere un'estensione che melt
riconosce come semplice file serializzato.
Ora, per riprodurre questo file serializzato, in linea di principio si potrebbe semplicemente chiamare melt file.melt
- tuttavia, una riga di comando più completa sarebbe:
melt melt_file:file.melt -consumer sdl
... il che significa: usare il comando melt_file
"produttore" per aprire file.melt
e rendere i suoi fotogrammi sul "consumatore" sdl
(finestra).
Si noti che ho l'esperienza che (diciamo) .flv
vengono riprodotti senza problemi sulla riga di comando, ma causano un errore di segmentazione quando vengono specificati nel file file.melt
file serializzato! .dv
video prodotti da melt
sembrano funzionare bene in file.melt
...
La serializzazione di tipo XML può essere ottenuta utilizzando l'elemento -consumer xml:
(invece di -serialise
) - quindi l'esempio precedente sarebbe ora:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
Per "riprodurre" il nuovo file generato file.mlt
XML, si può ora fare direttamente melt file.mlt
- oppure, una riga di comando più completa sarebbe:
melt xml:file.mlt -consumer sdl
... il che significa: utilizzare il comando xml
"produttore" (nota, in precedenza era un consumatore) per aprire file.mlt
e renderizzare i suoi fotogrammi sul "consumatore" sdl
(finestra).
Si noti che in questo caso, ho sperimentato che lo stesso .flv
che causavano segfault con un semplice file di serializzazione, funzionano benissimo con un file di serializzazione XML!
In questo caso, il risultato file.mlt
XML ha molte più impostazioni, come la risoluzione, la frequenza dei fotogrammi, le informazioni sui codec e così via, ma è anche più difficile lavorare direttamente con un editor di testo:
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ì, c'è. Provate a usare l'applicazione "Melt". Vedere la documentazione qui.
Se si usa una distro derivata da Debian:
apt-get install melt
La soluzione ffmpeg a questo problema è simile a questa:
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
Utilizza le named pipe, in modo da non creare file temporanei sul disco, e consente di tagliare pezzi di video clip e di aggiungere immagini.
Questo esempio utilizza il tempo 30-60 del primo input, poi aggiunge il primo minuto del secondo input, quindi inserisce un file immagine e poi l'intero terzo video.
Codice preso da:
pagina ffmpeg concatenate:
https://trac.ffmpeg.org/wiki/Concatenate
pagina superuser Usare ffmpeg per tagliare i video
pagina per superutenti https://video.stackexchange.com/questions/12105/add-an-image-in-front-of-video-using-ffmpeg
valutazioni e recensioni
Ricordati di mostrare questa cronaca se ne è valsa la pena.