좋아, melt
명령 줄 사용법 에 대해 많이 찾을 수 없기 때문에 여기에 몇 가지 참고 사항이 있습니다. (그리고이 대답은 프로세스 대체를 사용하여 파일을 기대하는 프로그램을 특정 확장자로 인수로 속이는 프로그램을 트릭합니까?-Unix & Linux Stack Exchange for a script 을 통한 예 bash
)
우선 우분투 / 데비안 패키지가 있습니다 melt
(MLT 용융 0.6.2의 우분투 11.04가 있습니다). @Ielton 이 제공하는 링크 는 "Media Lovin 'Toolkit"(MLT) Wiki에 대한 링크 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
되지만 손상됩니다 ).
이제 편집 부분; 기본적으로 명령 행에서 일련의 파일 이름 / in / out 스탠자를 직접 지정할 수 있습니다 . 파일이 있다고 가정하면 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
이 "단순한"직렬화 된 파일 형식에는 "commenting"문자가 포함되어 있지 않습니다. " # comment
"행 을 추가하려고하면 melt
' "# comment" '( 을)를로드하지 못했습니다 ( '와 별개로) 라인은 무시되고 재생은 계속됩니다). " .melt
"은 ( melt
는) 단순한 직렬화 된 파일로 인식 되는 확장명 인 것 같습니다 .
이제이 직렬화 된 파일을 재생하려면 원칙적으로 호출하면됩니다 melt file.melt
. 그러나보다 완전한 명령 행은 다음과 같습니다.
melt melt_file:file.melt -consumer sdl
... melt_file
"producer"를 사용하여 열고 file.melt
"consumer" 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>