Ok, puisque je ne trouve pas grand-chose sur 05
utilisation de la ligne de commande, voici quelques notes. code> )
Pour commencer - il existe un paquet Ubuntu/Debian pour 23
(J'ai Ubuntu 11.04 avec MLT melt 0.6.2); le lien donné par @Ielton est pour le wiki "Media Lovin' Toolkit" (MLT), qui 38
fait partie de (mais aussi 45
et 55
). Voici le lien vers les fichiers texte de documentation de leur git :mltframework.org/mlt.git/tree - docs/; notez que le wiki a une page sur les BuildScripts.
Pour l'instant, le plus gros (seul) problème que j'ai avec, c'est que je n'arrive pas à trouver un moyen d'exporter une composition vidéo non compressée (soit en 64
images, ou un format vidéo non compressé).
Tout d'abord, en ligne de commande 77
vous pouvez contrôler la lecture à travers les images ; par exemple, pour "créer" un blanc blanc de 15 images de long et l'afficher avec le 87
intégré lecteur, utilisez
melt -blank 15
Lorsque vous affichez avec 91
, vous obtiendrez également une information de ligne de commande à 105
pour le lecteur intégré :
$ 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
Une fois 110
est terminé, il ne se fermera pas - vous devez donc taper 121
pour en sortir.
Il convient de noter qu'il existe des "producteurs" et des "consommateurs" dans 130
. Si rien n'est spécifié, le "consommateur" par défaut est une fenêtre SDL (Simple DirectMedia Layer) lisant la vidéo ; donc la commande ci-dessus est la même que :
melt -blank 15 -consumer sdl
Ainsi, si nous voulons enregistrer ce que 143
affiche, nous devrions changer le consommateur en quelque chose qui prendra en charge un format de fichier. Pour obtenir une liste de consommateurs :
$ melt -query "consumers"
---
consumers:
- sdl
- sdl_audio
- sdl_preview
- sdl_still
- gtk2_preview
- avformat
- libdv
- xml
- decklink
- null
...
Le 153
le consommateur sortira les données au format DV directement vers 166
, donc pour enregistrer la vidéo dans un 170
fichier que vous feriez :
melt -blank 15 -consumer libdv > test.dv
Notez que parmi les consommateurs répertoriés, le seul format que j'ai essayé, qui peut également être ouvert dans une autre application est 181
(J'ai utilisé 192
comme une autre application); cependant, cela peut échouer pour un autre type de transcodage (par exemple, si au lieu d'un blanc, j'essaie de convertir un extrait à partir d'un 204
fichier, le fichier .dv résultant s'ouvre et joue en 213
, mais est corrompu ).
Passons maintenant au montage partie; essentiellement, vous pouvez spécifier une série de file-name /in/out strophes directement sur la ligne de commande ; disons que vous avez un fichier, 229
- alors vous pourriez faire :
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79
ou légèrement mieux formaté :
melt \
video.avi in=30 out=79 \
-blank 15 \
video.avi in=30 out=79
Cela signifie 232
de son cadre 30 à son cadre 79 sera joué ; puis un blanc de 15 images ; puis le 246
séquence de l'image 30 à l'image 79 à nouveau.
Pour utiliser des images (par exemple, 259
) dans une composition de montage vidéo :
melt \
video.avi in=30 out=79 \
test.png in=0 out=15 \
video.avi in=30 out=79 \
-blank 15
Notez que pour 263
, 272
le paramètre n'a pas besoin d'être 0 - cependant, l'image sera affichée pendant 280
-296
temps; dans ce cas, le plus simple serait de simplement laisser le 308
paramètre complètement.
La bonne chose est que cette séquence d'édition peut être enregistrée - ou en tant que 318
l'appelle, sérialisé - à un dossier; notez qu'il y en a deux moyens d'une telle sérialisation :"simple" ou XML. Par exemple, pour enregistrer la commande ci-dessus en tant que fichier sérialisé "simple", nous pouvons simplement ajouter le 328
passer à la commande :
$ melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -serialise file.melt
Project saved as file.melt.
Maintenant le 339
contient :
video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79
Apparemment, ce format de fichier sérialisé "simple" ne contient pas de caractère "commentaire" - si j'essaie d'ajouter un "346
" ligne, 354
se plaint avec :'Échec du chargement de "# commentaire" ' (mais à part cela, il semble qu'une telle ligne soit ignorée et la lecture continue quand même). "366
" semble être une extension qui 372
reconnaît comme simple fichier sérialisé.
Maintenant, pour rejouer ce fichier sérialisé, nous pourrions en principe simplement appeler 384
- cependant, une ligne de commande plus complète serait :
melt melt_file:file.melt -consumer sdl
... ce qui signifierait :utilisez le 394
"producteur" pour ouvrir 407
, et rend ses images sur le "consommateur" 418
(la fenêtre).
Notez que j'ai l'expérience, que (disons) 428
les vidéos se lisent sans problème sur la ligne de commande - provoquent cependant un défaut de segmentation lorsqu'elles sont spécifiées dans le 437
fichier sérialisé ! 441
vidéos produites par 454
lui-même, semble bien fonctionner en 463
...
Le type de sérialisation XML peut être réalisé en utilisant le 470
switch (au lieu de 486
) - donc l'exemple ci-dessus serait maintenant :
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
Pour "rejouer" le 497
nouvellement généré Fichier XML, on peut maintenant faire directement 501
- ou, une ligne de commande plus complète serait :
melt xml:file.mlt -consumer sdl
... ce qui signifierait :utilisez le 516
"producteur" (remarque, c'était auparavant un consommateur ) pour ouvrir 527
, et rend ses images sur le "consommateur" 530
(la fenêtre).
Notez que dans ce cas, j'ai rencontré le même 542
vidéos qui ont provoqué une erreur de segmentation avec un simple fichier de sérialisation - fonctionnent très bien avec un fichier de sérialisation XML !
Dans ce cas, le résultat 556
Le fichier XML a beaucoup plus de paramètres, tels que la résolution, la fréquence d'images, les informations de codec, etc. - mais il est également plus difficile de travailler directement dans un éditeur de texte :
<?xml version="1.0" encoding="utf-8"?>
<mlt root="/path/to" title="video.avi">
<profile description="automatic" width="320" height="240" progressive="1" sample_aspect_num="1" sample_aspect_den="1" display_aspect_num="320" display_aspect_den="240" frame_rate_num="25" frame_rate_den="1" colorspace="601"/>
<producer id="producer0" in="30" out="79">
<property name="mlt_type">producer</property>
<property name="aspect_ratio">1.000000</property>
<property name="length">125</property>
<property name="eof">pause</property>
<property name="resource">video.avi</property>
<property name="meta.media.nb_streams">2</property>
<property name="meta.media.0.stream.type">video</property>
<property name="meta.media.0.stream.frame_rate">25.000000</property>
<property name="meta.media.0.stream.sample_aspect_ratio">0.000000</property>
<property name="meta.media.0.codec.frame_rate">25.000000</property>
<property name="meta.media.0.codec.pix_fmt">yuv420p</property>
<property name="meta.media.0.codec.sample_aspect_ratio">1.000000</property>
<property name="meta.media.0.codec.colorspace">601</property>
<property name="meta.media.0.codec.name">mpeg4</property>
<property name="meta.media.0.codec.long_name">MPEG-4 part 2</property>
<property name="meta.media.0.codec.bit_rate">0</property>
<property name="meta.media.1.stream.type">audio</property>
<property name="meta.media.1.codec.sample_fmt">s16</property>
<property name="meta.media.1.codec.sample_rate">22050</property>
<property name="meta.media.1.codec.channels">1</property>
<property name="meta.media.1.codec.name">mp2</property>
<property name="meta.media.1.codec.long_name">MP2 (MPEG audio layer 2)</property>
<property name="meta.media.1.codec.bit_rate">64000</property>
<property name="seekable">1</property>
<property name="meta.media.sample_aspect_num">1</property>
<property name="meta.media.sample_aspect_den">1</property>
<property name="meta.attr.title.markup"></property>
<property name="meta.attr.author.markup"></property>
<property name="meta.attr.copyright.markup"></property>
<property name="meta.attr.comment.markup"></property>
<property name="meta.attr.album.markup"></property>
<property name="audio_index">1</property>
<property name="video_index">0</property>
<property name="mlt_service">avformat</property>
</producer>
<producer id="producer1" in="30" out="79">
<property name="mlt_type">producer</property>
<property name="aspect_ratio">1.000000</property>
<property name="length">125</property>
<property name="eof">pause</property>
<property name="resource">video.avi</property>
<property name="meta.media.nb_streams">2</property>
<property name="meta.media.0.stream.type">video</property>
<property name="meta.media.0.stream.frame_rate">25.000000</property>
<property name="meta.media.0.stream.sample_aspect_ratio">0.000000</property>
<property name="meta.media.0.codec.frame_rate">25.000000</property>
<property name="meta.media.0.codec.pix_fmt">yuv420p</property>
<property name="meta.media.0.codec.sample_aspect_ratio">1.000000</property>
<property name="meta.media.0.codec.colorspace">601</property>
<property name="meta.media.0.codec.name">mpeg4</property>
<property name="meta.media.0.codec.long_name">MPEG-4 part 2</property>
<property name="meta.media.0.codec.bit_rate">0</property>
<property name="meta.media.1.stream.type">audio</property>
<property name="meta.media.1.codec.sample_fmt">s16</property>
<property name="meta.media.1.codec.sample_rate">22050</property>
<property name="meta.media.1.codec.channels">1</property>
<property name="meta.media.1.codec.name">mp2</property>
<property name="meta.media.1.codec.long_name">MP2 (MPEG audio layer 2)</property>
<property name="meta.media.1.codec.bit_rate">64000</property>
<property name="seekable">1</property>
<property name="meta.media.sample_aspect_num">1</property>
<property name="meta.media.sample_aspect_den">1</property>
<property name="meta.attr.title.markup"></property>
<property name="meta.attr.author.markup"></property>
<property name="meta.attr.copyright.markup"></property>
<property name="meta.attr.comment.markup"></property>
<property name="meta.attr.album.markup"></property>
<property name="audio_index">1</property>
<property name="video_index">0</property>
<property name="mlt_service">avformat</property>
</producer>
<playlist id="playlist0">
<entry producer="producer0" in="0" out="49"/>
<blank length="16"/>
<entry producer="producer1" in="0" out="49"/>
</playlist>
<tractor id="tractor0" title="video.avi" global_feed="1" in="0" out="115">
<track producer="playlist0"/>
</tractor>
</mlt>
Oui il y a. Essayez d'utiliser l'application appelée "Melt". Voir la documentation ici.
Si vous utilisez une distribution dérivée de Debian :
apt-get install melt
La solution ffmpeg à ce problème ressemble à ceci :
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
Il utilise des canaux nommés, il n'y a donc pas de création de fichiers temporaires sur le disque et vous permet de découper des morceaux de clips vidéo et d'ajouter des images.
Cet exemple utilise le temps 30-60 de la première entrée, puis ajoute la première minute de la deuxième entrée, puis insère un fichier image, puis la troisième vidéo entière.
Code extrait de :
Page de concaténation ffmpeg :https://trac.ffmpeg.org/wiki/Concatenate
page superutilisateur Utilisation de ffmpeg pour découper la vidéo
page super-utilisateur https://video.stackexchange.com/questions/12105/add-an-image-in-front-of-video-using-ffmpeg