Гаразд, оскільки я не можу знайти багато про melt
використання командного рядка, ось кілька приміток .. (і після цього дивіться цю відповідь. Використання підстановки процесу для обману програм, які очікують файли, з конкретними розширеннями як аргумент? - Unix & Linux Stack Exchange для скрипту приклад через bash
)
Для початку - є пакет Ubuntu / Debian для melt
(у мене є Ubuntu 11.04 з розплавом MLT 0.6.2); Посилання, яке надає @Ielton , стосується Вікі "Інструментарій для засобів масової інформації" (MLT), який melt
є частиною (але також openshot
і kdenlive
). Ось посилання на текстові файли документації з їх git: mltframework.org/mlt.git/tree - docs / ; зауважте, що у вікі є сторінка про BuildScripts .
На даний момент найбільшою (єдиною) проблемою у мене є те, що я не можу знайти спосіб експортувати нестиснену відео композицію (як png
кадри, чи якийсь нестиснений формат відео).
По-перше, у командному рядку melt
ви можете керувати відтворенням через кадри; наприклад, для "створення" білої порожньої довжини на 15 кадрів та перегляду її за допомогою вбудованого melt
програвача, використовуйте
melt -blank 15
Коли ви переглядаєте melt
, ви також отримаєте інформацію про командний рядок stderr
для вбудованого програвача:
$ 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
Після melt
завершення відтворення він не вийде, тому вам слід ввести текст, q
щоб вийти з нього.
Слід зазначити, що в Росії є так звані "виробники" та "споживачі" melt
. Якщо нічого не вказано, то за замовчуванням "споживач" - це вікно SDL (Simple DirectMedia Layer), яке відтворює відео; тому наведена вище команда така ж, як:
melt -blank 15 -consumer sdl
Таким чином, якщо ми хочемо зберегти melt
відображення, ми повинні змінити споживача на те, що підтримуватиме формат файлу. Щоб отримати список споживачів:
$ melt -query "consumers"
---
consumers:
- sdl
- sdl_audio
- sdl_preview
- sdl_still
- gtk2_preview
- avformat
- libdv
- xml
- decklink
- null
...
libdv
Вихід DV споживача відформатованих даних безпосередньо stdout
, так , щоб зберегти відео на .dv
файл , який ви хочете зробити:
melt -blank 15 -consumer libdv > test.dv
Зауважте, що з перерахованих споживачів єдиний я спробував формат, який також можна відкрити в іншій програмі libdv
(я використовувався vlc
як інша програма); однак це може не вдатися до іншого типу перекодування ( наприклад, якщо замість порожнього я намагаюся конвертувати фрагмент з .flv
файлу, отриманий .dv файл відкривається і відтворюється vlc
, але пошкоджується ).
Тепер для редагуючої частини; по суті, ви можете вказати ряд строф імені / вводу / виводу безпосередньо в командному рядку; скажіть, у вас є файл, video.avi
- тоді ви можете зробити:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79
або трохи кращого форматування:
melt \
video.avi in=30 out=79 \
-blank 15 \
video.avi in=30 out=79
Це означає, що video.avi
від кадру 30 до кадру 79 буде відтворюватися; потім порожній 15 кадрів; а потім video.avi
послідовність від кадру 30 до кадру 79 знову.
Щоб використовувати зображення (скажімо, .png
) у композиції для редагування відео:
melt \
video.avi in=30 out=79 \
test.png in=0 out=15 \
video.avi in=30 out=79 \
-blank 15
Зверніть увагу , що для test.png
, in=
параметр не повинен бути 0 - проте, зображення буде відображатися out
- in
час; у цьому випадку було б найпростіше просто in=0
взагалі залишити параметр.
Хороша річ, що цю послідовність редагування можна зберегти - або, як melt
називається, серіалізувати - у файл; Зауважте, є два способи такої серіалізації: "простий" або XML. Наприклад, щоб зберегти вищевказану команду як "простий" серіалізований файл, ми можемо просто додати -serialise [filename]
перемикач до команди:
$ melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -serialise file.melt
Project saved as file.melt.
Тепер file.melt
містить:
video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79
Здається, цей "простий" серіалізований формат файлу не містить символу "коментує" - якщо я спробую додати # comment
рядок " ", melt
скаржиться на: " Не вдалося завантажити" # коментар " '(але крім цього, здається, що такий рядок ігнорується, і відтворення продовжується в будь-якому випадку). « .melt
» , Як представляється , розширення , яке melt
визнає в якості простого серіалізовані файлу.
Тепер, щоб відтворити цей серіалізований файл, ми могли в принципі просто зателефонувати melt file.melt
- однак, більш повним командним рядком було б:
melt melt_file:file.melt -consumer sdl
... що означало б: використовувати melt_file
"виробника" для відкриття file.melt
та візуалізації його кадрів на "споживача" sdl
(вікно).
Зауважте, що у мене є досвід, що (скажімо) .flv
відеозаписи відтворюються без проблем у командному рядку - однак, вони викликають помилку сегментації, коли вони вказані у file.melt
серіалізованому файлі! .dv
Відео, створені melt
самі по собі, здається, працюють чудово у file.melt
...
Тип серіалізації XML можна досягти за допомогою -consumer xml:
перемикача ( замість-serialise
) - таким чином, наведеним вище прикладом буде:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
Щоб "відтворити" щойно створений file.mlt
XML-файл, тепер це можна зробити безпосередньо melt file.mlt
- або, більш повним командним рядком буде:
melt xml:file.mlt -consumer sdl
... що означало б: використовувати xml
"виробника" ( зауважте, раніше він був споживачем ), щоб відкрити file.mlt
та вивести його рамки на "споживача" sdl
(вікно).
Зауважте, що в цьому випадку я переконався, що ті самі .flv
відео, які спричинили segfault за допомогою простого файлу серіалізації, працюють добре з файлом серіалізації XML!
У цьому випадку отриманий file.mlt
XML-файл має набагато більше налаштувань, таких як роздільна здатність, частота кадрів, інформація про кодек тощо - але також важче працювати з текстовим редактором безпосередньо:
<?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>