ठीक है, क्योंकि मैं meltकमांड लाइन के उपयोग के बारे में बहुत कुछ नहीं पा सकता हूं , यहां कुछ नोट हैं .. (और इसके बाद, इस उत्तर को देखें। प्रक्रिया का उपयोग करके फ़ाइलों की अपेक्षा करने वाले ट्रिक प्रोग्रामों के लिए प्रतिस्थापन के रूप में, विशिष्ट एक्सटेंशन के तर्क के साथ? - यूनिक्स और लिनक्स स्टैक एक्सचेंज एक स्क्रिप्ट के लिए? उदाहरण के माध्यम से bash)
के साथ शुरू करने के लिए - के लिए एक उबंटू / डेबियन पैकेज है melt(मेरे पास उबटन 11.04 एमएलटी पिघल 0.6.2 के साथ है); @ आईल्टन द्वारा दिए गए लिंक "मीडिया लविन 'टूलकिट" ( एमएलटी ) विकी के लिए है, जो melt(लेकिन यह भी openshotऔर kdenlive) का एक हिस्सा है । यहाँ उनके गिट से प्रलेखन पाठ फ़ाइलों के लिए लिंक है: mltframework.org/mlt.git/tree - डॉक्स / ; ध्यान दें कि बिल्ड में लिपियों के बारे में एक पृष्ठ है ।
अभी के लिए, सबसे बड़ी (केवल) समस्या जो मेरे पास है, वह यह है कि मुझे एक असम्पीडित वीडियो रचना (या तो 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। यदि कुछ भी निर्दिष्ट नहीं है, तो डिफ़ॉल्ट "उपभोक्ता" एक एसडीएल (सरल डायरेक्टमीडिया लेयर) है जो वीडियो को वापस खेल रहा है; इसलिए उपरोक्त आदेश समान है:
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उपभोक्ता इच्छा उत्पादन डीवी सीधे करने के लिए स्वरूपित डेटा 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इसे कॉल किया जाता है, क्रमबद्ध - एक फ़ाइल के लिए; ध्यान दें कि इस तरह के क्रमांकन के दो तरीके हैं : "सरल" या एक्सएमएल। उदाहरण के लिए, उपरोक्त कमांड को "सरल" क्रमबद्ध फ़ाइल के रूप में सहेजने के लिए, हम केवल -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...
एक्सएमएल प्रकार के क्रमांकन को -consumer xml:स्विच ( ) के बजाय का-serialise उपयोग करके प्राप्त किया जा सकता है - इसलिए उपरोक्त उदाहरण अब होगा:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
नई जेनरेट की गई file.mltएक्सएमएल फाइल को "प्ले बैक" करने के लिए , एक अब सीधे कर सकता है melt file.mlt- या, एक पूरी कमांड लाइन होगी:
melt xml:file.mlt -consumer sdl
... जिसका अर्थ होगा: xml"निर्माता" ( ध्यान दें, पहले यह एक उपभोक्ता था ) का उपयोग करें file.mlt, और "उपभोक्ता" sdl(खिड़की) पर इसके फ्रेम को प्रस्तुत करना ।
ध्यान दें कि इस मामले में, मैंने अनुभव किया है कि बहुत ही .flvवीडियो जो एक साधारण क्रमांकन फ़ाइल के साथ सेगफॉल्ट का कारण बनता है - एक XML क्रमांकन फ़ाइल के साथ ठीक काम करता है!
इस मामले में, परिणामस्वरूप file.mltXML फ़ाइल में बहुत अधिक सेटिंग्स हैं, जैसे कि रिज़ॉल्यूशन, फ़्रेम दर, कोडेक जानकारी आदि - लेकिन यह सीधे टेक्स्ट एडिटर के साथ काम करना भी अधिक कठिन है:
<?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>