GNU/Linux >> Znalost Linux >  >> Linux

Úpravy videa z příkazového řádku v Linuxu (střih, připojení a náhled)

Ok, protože nemohu najít mnoho o 06 použití příkazového řádku, zde jsou některé poznámky.. (a poté si přečtěte tuto odpověď Používání substituce procesů k oklamání programů očekávajících soubory se specifickými příponami jako argument? - Unix &Linux Stack Exchange pro příklad skriptu přes 14 )

Pro začátek - existuje balíček Ubuntu/Debian pro 24 (mám Ubuntu 11.04 s MLT melt 0.6.2); odkaz od @Ielton je pro "Media Lovin' Toolkit" (MLT) Wiki, který 39 je součástí (ale také 47 a 57 ). Zde je odkaz na textové soubory dokumentace z jejich git:mltframework.org/mlt.git/tree - docs/; všimněte si, že wiki má stránku o BuildScripts.

Prozatím největším (jediným) problémem, který s tím mám, je, že nemohu najít způsob, jak exportovat nekomprimovanou kompozici videa (ani jako 65 snímky nebo nějaký nekomprimovaný formát videa).

Nejprve v příkazovém řádku 79 můžete ovládat přehrávání prostřednictvím snímků; například „vytvořit“ 15 snímků dlouhou bílou prázdnou a zobrazit ji pomocí vestavěného 88 přehrávač, použijte

melt -blank 15

Při zobrazení pomocí 93 , získáte také informace o příkazovém řádku na 107 pro vestavěný přehrávač:

$ 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

Jednou 112 po dokončení přehrávání, neukončí se - takže byste měli napsat 123 vystoupit z něj.

Měli bychom poznamenat, že v 132 jsou takzvaní „producenti“ a „spotřebitelé“ . Pokud není nic zadáno, pak výchozím „spotřebitelem“ je okno SDL (Simple DirectMedia Layer) přehrávající video; takže výše uvedený příkaz je stejný jako:

melt -blank 15 -consumer sdl

Pokud tedy chceme uložit co 144 displeje, měli bychom změnit spotřebitele na něco, co bude podporovat formát souboru. Chcete-li získat seznam spotřebitelů:

$ melt -query "consumers"
---
consumers:
  - sdl
  - sdl_audio
  - sdl_preview
  - sdl_still
  - gtk2_preview
  - avformat
  - libdv
  - xml
  - decklink
  - null
...

155 spotřebitel odešle data ve formátu DV přímo do 168 , takže video uložíte do 172 soubor, který byste udělali:

melt -blank 15 -consumer libdv > test.dv

Všimněte si, že z uvedených spotřebitelů je jediný formát, který jsem vyzkoušel a který lze také otevřít v jiné aplikaci, 182 (Použil jsem 194 jako další aplikace); toto však může selhat pro jiný typ překódování (např. pokud místo prázdného místa zkusím převést úryvek z 206 výsledný soubor .dv se otevře a přehraje v 215 , ale je zkorumpovaný ).

Nyní k úpravám část; v podstatě můžete zadat řadu název-souboru /in/out stanzy přímo na příkazovém řádku; řekněme, že máte soubor 221 - pak můžete udělat:

melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79

nebo trochu lépe naformátované:

melt \ 
video.avi in=30 out=79 \ 
-blank 15 \
video.avi in=30 out=79

To znamená 234 z jeho rámce 30 do jeho rámce 79 bude přehráno; pak 15-snímkový polotovar; a poté 247 sekvence od snímku 30 do snímku 79 znovu.

Chcete-li použít obrázky (řekněme 251 ) v kompozici úpravy videa:

melt \
video.avi in=30 out=79 \
test.png in=0 out=15 \
video.avi in=30 out=79 \
-blank 15

Všimněte si, že pro 265 , 274 parametr nemusí být 0 – obrázek se však zobrazí pro 282 -298 čas; v tomto případě by bylo nejjednodušší jednoduše ponechat 300 parametr úplně ven.

Dobrá věc je, že tuto sekvenci úprav lze uložit - nebo jako 310 nazývá to, serializováno - do souboru; všimněte si, že jsou dva způsoby takové serializace:"jednoduché" nebo XML. Chcete-li například uložit výše uvedený příkaz jako "jednoduchý" serializovaný soubor, stačí přidat 329 přepněte na příkaz:

$ melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -serialise file.melt 
Project saved as file.melt.

Nyní 330 obsahuje:

video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79

Zdánlivě tento „jednoduchý“ serializovaný formát souboru neobsahuje znak „komentování“ – pokud se pokusím přidat „347 " řádek, 356 si stěžuje:'Nepodařilo se načíst "# komentář" “ (ale kromě toho se zdá, že takový řádek je ignorován a přehrávání stejně pokračuje). "367." " se zdá být rozšířením 373 rozpozná jako jednoduchý serializovaný soubor.

Nyní, abychom znovu přehráli tento serializovaný soubor, mohli bychom v zásadě zavolat 386 - úplnější příkazový řádek by však byl:

melt melt_file:file.melt -consumer sdl

... což by znamenalo:použijte 396 "producer" otevřete 409 a vykreslí jeho snímky na "spotřebitelském" 419 (okno).

Všimněte si, že mám zkušenost, že (řekněme) 420 videa se na příkazovém řádku přehrávají bez problémů – pokud jsou však zadána v 438, dojde k chybě segmentace serializovaný soubor! 443 videa produkovaná 456 Zdá se, že v 465 funguje dobře ...

Typ serializace XML lze dosáhnout pomocí 472 přepínač (místo 488 ) - takže výše uvedený příklad by nyní byl:

melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt

Chcete-li "přehrát" nově vygenerovaný 499 XML, lze nyní provést přímo 502 - nebo, úplnější příkazový řádek by byl:

melt xml:file.mlt -consumer sdl

... což by znamenalo:použijte 518 „producent“ (pozn. dříve to byl spotřebitel ) otevřete 529 a vykreslí jeho snímky na "spotřebitelském" 532 (okno).

Všimněte si, že v tomto případě jsem zažil to samé 544 videa, která způsobila segfault s jednoduchým serializačním souborem – fungují dobře se serializačním souborem XML!

V tomto případě výsledný 558 Soubor XML má mnohem více nastavení, jako je rozlišení, snímková frekvence, informace o kodeku atd. – ale také je obtížnější s ním přímo pracovat v textovém editoru:

<?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>

Ano, tam je. Zkuste použít aplikaci s názvem „Melt“. Podívejte se na dokumentaci zde.

Pokud používáte distribuci odvozenou z Debianu:

apt-get install melt

Řešení tohoto problému pomocí ffmpeg vypadá asi takto:

mkfifo temp1 temp2 temp3
ffmpeg -i input.wmv -ss 30 -to 60 -c copy output.wmv temp1 2> /dev/null & \
ffmpeg -i input2.wmv -t 60 -c copy temp2 2> /dev/null & \
ffmpeg -i input3.wmv -i image.png -filter_complex "[0:v][1:v] \
overlay=25:25:enable='between(t,0,20)'" -pix_fmt yuv420p -c:a copy temp3 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp1|temp2|temp3" -c copy output.mp4

Používá pojmenované kanály, takže se na disku nevytvářejí dočasné soubory a umožňuje vám stříhat kousky videoklipů a přidávat obrázky.

Tento příklad používá čas 30-60 prvního vstupu a poté přidá první minutu druhého vstupu, poté vloží soubor obrázku a poté celé třetí video.

Kód byl odebrán z:

Stránka zřetězení ffmpeg:https://trac.ffmpeg.org/wiki/Concatenate

stránka superuser Použití ffmpeg k rozřezání videa

stránka superuživatele https://video.stackexchange.com/questions/12105/add-an-image-in-front-of-video-using-ffmpeg


Linux
  1. Řez / Grep A Df -h?

  2. 4 Základní a praktické použití příkazu Cut v systému Linux

  3. Cinelerra GG Infinity – bezplatný software pro úpravu videa pro Linux

  1. Historie příkazového řádku v Linuxu

  2. VidCutter – Rychlé oříznutí a spojení videoklipů

  3. 10 nejlepších aplikací pro úpravu médií pro Linux

  1. Rychlá úprava videa na Linuxu pomocí Flowblade

  2. Nejlepší bezplatný software pro úpravu videa pro Linux

  3. Open Source Video konvertory pro Linux [GUI a CLI]