Narzędzia miłośnika mediów MLT Framework
Jeszcze nikt o tej bibliotece po polsku nie napisał, więc będę pierwszy (chyba). MLT Framework – skrzynka z narzędziami miłośnika mediów – które można wykorzystać do montażu i edycji wideo. W mojej półce z narzędziami MLT zajmuje miejsce pomiędzy FFMpeg i Multimedia Conversion, będzie używane w aplikacjach webowych po stronie serwera. W MLT urzekły mnie dwie rzeczy: definiowanie dokumentów XML sterujących procesem montażu wideo oraz użycie polskiej notacji odwrotnej w tym samym celu. Odwrotna notacja polska to najprostszy język programowania i bardzo się cieszę że odświeży się w tym niezmiernie interesującym projekcie.
Prosty przykład użycia MLT:
inigo klip1.avi klip2.avi -mix 25 -mixer luma -mixer mix:-1 -consumer avformat:wynik.avi b=400k acodec=libmp3lame ac=1 ar=22050 ab=64k vcodec=flv f=flv
Łączy dwa klipy w jeden, korzysta z efektu przenikania a wyniki zapisuje w pliku wynikowym gotowym do opublikowania w Internecie. To samo w XMLu:
<?xml version="1.0"?>
<westley title="source.data">
<producer id="producer0">
<property name="resource">klip1.avi</property>
<property name="seekable">1</property>
</producer>
<producer id="producer1">
<property name="resource">klip2.avi</property>
</producer>
<tractor id="tractor0" in="0" out="24">
<track producer="producer0" in="203" out="227"/>
<track producer="producer1" in="0" out="24"/>
<transition id="transition0" in="0" out="24">
<property name="a_track">0</property>
<property name="b_track">1</property>
<property name="factory">fezzik</property>
<property name="mlt_type">transition</property>
<property name="mlt_service">luma</property>
</transition>
<transition id="transition1" in="0" out="24">
<property name="a_track">0</property>
<property name="b_track">1</property>
<property name="start">-1.000000</property>
<property name="mlt_type">transition</property>
<property name="mlt_service">mix</property>
</transition>
</tractor>
<playlist id="playlist0">
<entry producer="producer0" in="0" out="202"/>
<entry producer="tractor0" in="0" out="24"/>
<entry producer="producer1" in="25" out="124"/>
</playlist>
<tractor id="tractor1" title="Hura" global_feed="1" in="0" out="327">
<track producer="playlist0"/>
</tractor>
</westley>
Już się cieszę na myśl o aplikacjach w których tego użyję.
