Oke, karena saya tidak dapat menemukan banyak tentang melt
penggunaan baris perintah, berikut adalah beberapa catatan .. (dan setelah ini, lihat jawaban ini Menggunakan subtitusi proses untuk mengelabui program yang mengharapkan file, dengan ekstensi spesifik sebagai argumen? - Unix & Linux Stack Exchange untuk skrip contoh via bash
)
Untuk mulai dengan - ada paket Ubuntu / Debian untuk melt
(Saya punya Ubuntu 11,04 dengan MLT meleleh 0.6.2); tautan yang diberikan oleh @Ielton adalah untuk "Media Lovin 'Toolkit" (MLT) Wiki, yang melt
merupakan bagian dari (tetapi juga openshot
dan kdenlive
). Berikut ini tautan ke file teks dokumentasi dari git mereka: mltframework.org/mlt.git/tree - docs / ; perhatikan wiki memiliki halaman tentang BuildScripts .
Untuk saat ini, masalah terbesar (satu-satunya) yang saya miliki adalah, saya tidak dapat menemukan cara untuk mengekspor komposisi video yang tidak terkompresi (baik sebagai png
bingkai, atau beberapa format video yang tidak terkompresi).
Pertama, di baris perintah melt
Anda dapat mengontrol pemutaran melalui bingkai; misalnya, untuk "membuat" kosong putih 15 bingkai, dan melihatnya dengan melt
pemutar bawaan, gunakan
melt -blank 15
Saat Anda melihatnya melt
, Anda juga akan mendapatkan info baris perintah untuk stderr
untuk pemutar bawaan:
$ 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
Setelah melt
selesai diputar, itu tidak akan keluar - jadi Anda harus mengetik q
untuk keluar.
Kami harus mencatat ada yang disebut "produsen" dan "konsumen" di melt
. Jika tidak ada yang ditentukan, maka "konsumen" default adalah jendela SDL (Simple DirectMedia Layer) memutar video; jadi perintah di atas sama dengan:
melt -blank 15 -consumer sdl
Jadi, jika kita ingin menyimpan melt
tampilan apa , kita harus mengubah konsumen menjadi sesuatu yang akan mendukung format file. Untuk mendapatkan daftar konsumen:
$ melt -query "consumers"
---
consumers:
- sdl
- sdl_audio
- sdl_preview
- sdl_still
- gtk2_preview
- avformat
- libdv
- xml
- decklink
- null
...
The libdv
Output akan konsumen DV diformat data langsung ke stdout
, sehingga untuk menyimpan video ke .dv
file yang akan melakukan:
melt -blank 15 -consumer libdv > test.dv
Perhatikan bahwa dari konsumen yang terdaftar, satu-satunya format yang saya coba, yang juga dapat dibuka di aplikasi lain adalah libdv
(saya digunakan vlc
sebagai aplikasi lain); Namun, ini mungkin gagal untuk jenis transcoding yang berbeda ( misalnya jika alih-alih sebuah kosong, saya mencoba untuk mengkonversi potongan dari .flv
file, file .dv yang dihasilkan terbuka dan diputar vlc
, tetapi rusak ).
Sekarang untuk bagian pengeditan ; pada dasarnya, Anda dapat menentukan serangkaian stanzas nama-file / masuk / keluar langsung di baris perintah; mengatakan Anda memiliki file, video.avi
- maka Anda dapat melakukannya:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79
atau sedikit lebih baik diformat:
melt \
video.avi in=30 out=79 \
-blank 15 \
video.avi in=30 out=79
Ini berarti video.avi
dari frame 30 hingga frame 79 akan dimainkan; kemudian kosong 15-frame; dan kemudian video.avi
urutan dari frame 30 ke frame 79 lagi.
Untuk memanfaatkan gambar (misalnya, .png
) dalam komposisi edit video:
melt \
video.avi in=30 out=79 \
test.png in=0 out=15 \
video.avi in=30 out=79 \
-blank 15
Perhatikan bahwa untuk test.png
, in=
parameter tidak harus 0 - namun, gambar akan ditampilkan untuk out
- in
waktu; dalam hal ini, akan lebih mudah untuk membiarkan in=0
parameter keluar sama sekali.
Hal yang baik adalah bahwa urutan pengeditan ini dapat disimpan - atau seperti melt
panggilan itu, serial - ke file; perhatikan ada dua cara serialisasi tersebut: "sederhana" atau XML. Misalnya, untuk menyimpan perintah di atas sebagai file berserat "sederhana", kita cukup menambahkan -serialise [filename]
peralihan ke perintah:
$ melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -serialise file.melt
Project saved as file.melt.
Sekarang file.melt
isinya:
video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79
Tampaknya, format file serial "sederhana" ini tidak mengandung karakter "berkomentar" - jika saya mencoba menambahkan # comment
baris " ", melt
komplain dengan: ' Gagal memuat "# komentar" ' (tetapi selain itu, tampaknya seperti itu sebuah garis diabaikan, dan pemutaran berlanjut lagi). " .melt
" tampaknya merupakan ekstensi yang melt
dikenali sebagai file serial sederhana.
Sekarang, untuk memutar ulang file serial ini, pada prinsipnya kita bisa memanggil melt file.melt
- namun, baris perintah yang lebih lengkap adalah:
melt melt_file:file.melt -consumer sdl
... yang artinya: gunakan melt_file
"produsen" untuk membuka file.melt
, dan renderkan frame-nya pada "konsumen" sdl
(jendela).
Perhatikan bahwa saya memiliki pengalaman, bahwa (katakanlah) .flv
video diputar tanpa masalah pada baris perintah - namun, menyebabkan kesalahan segmentasi ketika mereka ditentukan dalam file.melt
file serial! .dv
video yang dihasilkan dengan melt
sendirinya, tampaknya berfungsi dengan baik di file.melt
...
Jenis serialisasi XML dapat dicapai dengan menggunakan -consumer xml:
saklar ( bukan-serialise
) - jadi contoh di atas sekarang akan menjadi:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
Untuk "memutar" file.mlt
file XML yang baru dibuat , seseorang sekarang dapat melakukannya secara langsung melt file.mlt
- atau, baris perintah yang lebih lengkap adalah:
melt xml:file.mlt -consumer sdl
... yang artinya: gunakan xml
"produsen" ( perhatikan, sebelumnya itu adalah konsumen ) untuk membuka file.mlt
, dan renderkan frame-nya pada "konsumen" sdl
(jendela).
Perhatikan bahwa dalam kasus ini, saya telah mengalami bahwa .flv
video yang sama yang menyebabkan segfault dengan file serialisasi sederhana - berfungsi baik dengan file serialisasi XML!
Dalam hal ini, file.mlt
file XML yang dihasilkan memiliki lebih banyak pengaturan, seperti resolusi, frame rate, informasi codec dll - tetapi juga lebih sulit untuk bekerja dengan editor teks secara langsung:
<?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>