17.01.13

Работа с видео в Linux

Оригинал http://zenux.ru/articles/33/


Часть 1. Mplayer. Хитрости и трюки.


кинолента
В этой статье я собрал некоторые подсказки по работе с Mplayer, которые, на мой взгляд, смогут пригодиться в повседневной жизни.

Краткое содержание: Проигрывание видео с FTP и из архивов, сохранение потокового видео на жесткий диск, исключение рекламы из видео-файла, обрезание видео по ширине и высоте, проигрывание DVD со звуком 5.1, программное усиление звука, вырезание звука из видео и другие

***

Проигрывание файлов с FTP

Mplayer умеет проигрывать видео непосредственно с ftp:
mplayer ftp://site.net/video.avi
Если не получается, то вот другой способ:
wget ftp://server.com/video.avi -O - | mplayer -cache 8192 -
Опцию -cache можно и не указывать, но, в таком случае, все зависит от пропускной способности вашего Интернет канала.
***

Проигрывание видео из архивов

Вы можете воспроизводить видео не только с FTP, но и из архивов. Большие архивы с видео файлами долго распаковываются. Но можно смотреть видео и без предварительной распаковки:
Для TAR архивов (gz,bz2,xz):
$ tar xaf archive.tar.bz2 -O | mplayer -cache 2048 -
Для RAR архивов команда будет выглядеть так:
$ unrar p -inul archive.rar | mplayer -cache 2048 -
Для ZIP архивов:
$ unzip -p archive.zip | mplayer -cache 2048 -

***

Сохранение потокового видео на жесткий диск

Для этого существует опция -dumpstream
$ mplayer http://streamserver.com -dumpstream -dumpfile stream.asf

***

Исключение из видео не нужных частей

В Mplayer есть система EDL, которая позволяет пропускать отдельные куски видео, заглушать звук в нужных местах. Это будет полезно, если вы собираетесь посмотреть с семьей фильм и хотите вырезать сцены насилия, не нормативную лексику, рекламу и другие лишние вещи по вашему мнению.
Чтобы воспользоваться системой EDL, необходимо создать EDL файл. Формат таких файлов предельно прост:
[начальная секунда] [конечная секунда] [действие]
Например:
$ cat test.edl 
5 8 0
12 15 0
18 23 1
Цифры, отвечающие за [действие]: 0 - пропустить видео, 1 - заглушить звук. 

Чтобы использовать EDL файл, вы должны подключить его с помощью опции -edl:
$ mplayer video.avi -edl имя_файла
Создание EDL файлов
Конечно, вручную создавать такие файлы, мягко говоря, утомительно. Существует более удобный способ. Для создания EDL файла, запустите mplayer с опцией -edloutимя_файла:
$ mplayer video.avi -edlout test.edl
При проигрывании, на том месте, которое вы хотите вырезать или заглушить звук, нажмите кнопку i и нужная запись для этого отрезка времени будет добавлена в файл test.edl. После этого вы можете открыть EDL файл и подправить его вручную, указав действия по-умолчанию.

***

Обрезание видео по ширине и высоте, отображение нужного участка видео.

Иногда бывает, что видео содержит части, которые занимают лишнее место на экране. Это могут быть черные полосы вверху и внизу экрана, или ужасные субтитры на китайском, встроенные в видео при рендеринге. Mplayer позволяет обрезать видео по ширине и высоте. Делается это так:
$ mplayer -vf rectangle=200:300:50:100 video.avi
С этой командой mplayer отрисует на видео прямоугольник шириной 200 и высотой 300 пикселей, который отдален на 50 пикс. от левого и на 100 пикс. от верхнего краев. Подстраивая эти четыре числа, вы можете подобрать участок видео, который нужно оставить. После этого:
$ mplayer -vf crop=200:300:50:100 video.avi
Теперь будет воспроизводиться только указанный участок. Такой способ можно использовать и при кодировании видео.

***

Воспроизведение DVD со звуком 5:1

Mplayer поддерживает звук 5:1, но не использует его по-умолчанию, поскольку оборудование со стерео звуком более распространено. Для воспроизведения видео с несколькими каналами звука, используйте опцию -channels, например, для проигрывания DVD 5:1 :
$ mplayer dvd://1 -channels 6
Если у вас имеется такое оборудование, вы можете добавить опцию channels=6 в~/.mplayer/config и она будет задействована каждый раз по-умолчанию.
***

Эмуляция surround звука в наушниках

Конечно, точная имитация окружающего звука невозможна. Плагин HRTF пытается производить пространственный звук на 2-х канальных наушниках, используя данные с проекта MIT. Он создает особое эхо, изменяет разделение стерео и громкость определенных частот. Не могу сказать, что с HRTF звук получается лучше, чем без него, это дело вкуса. Использование HRTF:
$ mplayer video.avi -channels 6 -af hrtf

***

Воспроизведение моно файлов, кодированных как стерео с тишиной в одном канале

Иногда бывают ситуации, когда видео файлы со звуком моно перекодируются по ошибке со стерео звуком и в одном из каналов получается тишина. Самый простой способ заставить воспроизводить звук на обеих колонках, будет таким:
$ mplayer video.avi -af extrastereo=0
Этот способ усредняет оба канала, в результате оба становятся в два раза тише. Чтобы увеличить громкость, можно использовать опцию volume:
$mplayer video.avi -af extrastereo=0,volume=5

***

Программное усиление звука

Иногда, звук в файлах слишком слабый и, если звуковая карта не умеет аппаратно усиливать сигнал, можно использовать опцию -softvol , с которой Mplayer будет использовать программный микшер, усиливая звуковой сигнал перед отправкой его на звуковую карту. К примеру, следующая команда увеличит максимально допустимую громкость звука на 200%:
$ mplayer video.avi -softvol -softvol-max 200
Не забудьте увеличить громкость с помощью клавиш регулировки громкости - 9 и 0. 

Еще один способ. Вы можете воспроизвести файл, увеличив громкость на определенное количество децибел, используя опцию (точнее, плагин) volume. Следующая команда воспроизведет звук с усилением в 10 децибел:
$mplayer video.avi -af volume=10

***

Изменение скорости воспроизведения видео

Изменить скорость проигрывания легко - с помощью опции -speed,, например:
$ mplayer -speed 0.5 video.avi
Но в этом случае звук тоже изменится. Чтобы звук оставался прежним, но проигрывался с той же скоростью, что и видео, нужно использовать фильтрscaletempo:
$ mplayer -af scaletempo -speed 0.5 video.avi

***

Вырезать звук из видео-файла.

Mplayer позволяет делать это очень легко:
$ mplayer -dumpaudio -dumpfile sound.mp3 video.avi

***

Создание скриншотов в Mplayer

Очень просто:
$ mplayer -vf screenshot video.avi
В нужный момент жмете клавишу s и в вашей домашней директории создастся скриншот в формате PNG.

***

Какой Video Output использовать в Mplayer?

Получить список драйверов можно командой
$ mplayer -vo help
Вы увидите довольно много различных драйверов для вывода видео. Но какой же использовать в посведневной жизни?
gl и gl2 (OpenGL). Производительность выше, чем у x11, но ниже, чем у драйвера xv (X11/Xv) 
x11 (X11). Выводит видео в X11 без какого-либо ускорения. 
xv (X11/Xv). Предпочтительный драйвер. Выводит видео с использованием хардварного ускорения и дает наилучшую производительность в большинстве случаев. 

Во второй части "Mplayer. Хитрости и трюки" я опишу, также, несколько экзотических драйверов для вывода видео, таких как AAlib.

***

Часть 2. Mplayer. Хитрости и трюки.




видео ascii
Портим глаза, смотря видео в ASCII графике. Просмотр видео в консоли, нестандартные способы воспроизведения видео. Mplayer + AAlib, libcaca, matrixview, страпон, bdsm. Ой, не в ту степь....



***

Просмотр видео в ASCII графике. Mplayer + aalib.

В mplayer есть библиотека AAlib, позволяющая отображать графику в текстовом виде, используя ASCII рендерер. Эту библиотеку, кстати, поддерживает не только mplayer, но и некоторые игры. Вот примеры использования:
$ mplayer -vo aa video.avi
После этого вы увидите видео в ASCII графике. На моем компьютере, почему-то, отображалась лишь левая половина видео, т.е. видео обрезалось по ширине. Помогла мне вот такая махинация:
$ mplayer -vo aa -monitorpixelaspect 0.5 video.avi
Если развернуть видео на весь экран, на большом разрешении, можно даже разглядеть детали. Особенно удачно выходит мультипликация типа Симпсонов, в которых не большое кол-во цветов.
Вы можете подстроить яркость и контрастность используя клавиши:
1 - уменьшить контрастность;
2 - увеличить контрастность;
3 - уменьшить яркость;
4 - увеличить яркость;
7 - инвертировать картинку;
На мой взгляд лучшее изображение получается, если увеличить контрастность до 100-120. 

Вот парочка примеров того, как AAlib рендерит ASCII графику и одно видео, которое я записал только что, чтобы вы увидели, какое "чудо" можно получить с этой библиотекой ;) 

f~gjjjz::;zg@@a2g@@:j/:dr@@uagzg2g@@@QgQ@@@@@@@@QQ$$@@QQQQQzQ$KKQ@@@@@@@@@@@@@@
rQ::jjj Nzjj2:@:.::::""cdz\2jzxJXxK@@@@@@QzgK@@QQQQQgQ@@@@@@@@@@@@@@@@@@@@$$K@@
pj.;;:jq.::jg@:"@@N::::aZjju@@paQg@@@@@@@@@@@@@QQQQzQQrsIJ#jK@$@@@@@@@@$@QKzzgQ
:.''jaa@j+:gg:Q:@@Q:_;jjKQSS4?4?#R@3V$@@@@@@$@@@@@@@@@pZQ@@@zzzjQ@$@@$@QpQ@q@zg
'.'::g.$}:":\::::@:{aj:$@;u::"<~@:;:jj<VH@@@@Q$@@@@@@g\q@@@@Q@@@@@$@Xa2@$x\NQs$
'';Q@.pqQuj::::""{:@w<~<~~~Z::jj:;::::jjw<K@@poGQKcKx?z@@@@$@@@@@@@Q@pxdG@QNB"a
 q;.2g$qrI_:z:;:::@gajj;jjj;''' ' '.'..'jQ77@$QQzj2ghq@@@Ig@@@$@@@$Q@$E2$@KQr:j
 j\c1Xjzr:a\_2j;{"Zj::..''  ' '' '   ' '''. (70v@1a;{uZ@fZagQr@za@@@@@Q$Q@Ks:"2
""1QoKY?cQ\n2j:@@:@2::;.'':zQ~~`g::.'''' ''   ::2ur@:ocg;1@zgQ@@@@mV>V~H;zo9::}
:{Q@:j/:1K@nj":@ggZ2Qgj::.;' .;;;''.' .;.'''  'jQ::.jaGI@3H9<e"=+w@Nz2QzaQ@@ :p
@Qgrj;Cj::j:j::::@Z@@_q.:q,2'  '.;j.. ';;;  ' .:._pXz::`zj::j::j:22..'::;jw<}@g
.:}:~@.;q:@:@:@::_:_222Q2;;:;.__..:q:'  ' ' '';@1z@Q\:@j;'''''''''''''';..jZQ2:
\::QQ::@QzNQQ@:\1jpjzj:dQ2$:\"uQ2V<#:;2:qg:;;;j"qQ@@p5j''..'''''.j._,:ja:::@@ag
j}:..a::j2aZQ@:j:@zQQ@g_Q@QzQQy4z22yQ:.":<:@Zj@12@@@Q\. '''  ''; :jz<\gw@j2@z,"
~:@"::gg2:jajZ@:<#@jgZ@@gpjNveH@r\pQ#f"1rj}\,j:1g@@@@\;a;.'  '  ':.'2zQjjjQQ@::
jQZ"wQQ ; Z::j2Q:<c2s$ja2x\Qj:~=*^::_q_Q::_:2j::q@@@@$2c_pZq_ jjZg.' .:jag@Q.\:
_"N@@::j.:2;;;:jjQ::\2O@2jj2\_____zzojcQQj:$1:jQj@$@@rnZ@Q_qg :@@@qz._jgQ::g1n@
N@:27j;\:@j;'.;;:jja@::<c2QN@QQ@pKr$g::oQj@N:z:Qj@@@@@;cjQ\::__._.jjQ;2zQ@gq::/
j=+@:~::L__ g.'''..;:2g@:uQ2z@QQQg2du\jzQ@Q@Q::@g@@@@m5q;@:<<c:@oC""+N:gzga{0@:
w:::N:::c\::g:.'''''.;:jQ:jdgQ@@QQ2$&2j=4N/3aa\jz@@@@r@JCL,@@@@<~w@:.;\gj:::Q2j
@."@@2\j5~Qj::;'.' ' '':jgqj2jaKggSB~~g:jgq<HdUQ@@@@@m}jjdjL:z:2Q,:j0o"QjjZq,a.
"}".1_p"_.qjQ2 z..;''.'.::@:zQ1Kgp5`aj2.Q@:@@\Qg@@@@$\}:ja:@:___;k;2<+Naq@g@Qj 
@@:2j_j&::_p@:.@j;j:j:...jg@\aN#rpZ:;2:az2;;@"2z@@@@@p;:jj:Z@j$Q:j:":Q2Q@:QZj '
_"\<<c_\Jsvcj+:.:"p@:ZZj:2a@":"<Zaz:.jqj<0&}Q::ou@$Qn2;_jjQzajr""@:@ggN::;Na;''
<G#@Oo$@$ndcB::._:@Z.;Qj:az::@N .2:j.;j2a2gNza@js@2@$Qj":"j":":@@zj; j\j2JcQ:2:
_{_2:Q@3QQuyzQQQ_2j"._qN@aQazzq.p\.pj    ' ''';a@~<V5o:@@:::@@gz2:jQ{aaz_Qja:ja
1yt.21_Qz1Q@@9@zz_g2$:NQ;:jjq.qzjo\_Q qa; '    ';:aa2ag22@Nga2j2Q.::{:C2@n`a:j{
@h:2OoQQuQQ@@QQ@@@p$\_:i._z_2zQnuzxp:QQ}N;;: '   ' ;:@@jjg@z@Q@@"\uQ\p_rwQ2:j::
\{a_2Nzg@@$@Q@$0>:_;_gz@mz2dGQ$H@x8qvgszq.:@,:. '';aN:NZ@N:@Q:Nqju;:@..:}Q:;...
"{":q:Quzzzg@@@@Qp\ggQ@@@fqKKQpor1rq2I!\d::".p: :2Z,QZ{_.:_j2Q\1Q@n.;:{pr:...' 


gggzgzgggggggggggggggzzgzzzr#+\._ju::\2\jpQQg<@222uaazzaa22auaazaaauauaaaaaaaau
gzgzzzgzggzzggzgzgzzzzg2r@@QsQj~\,:2jj}w:q. z:jw@j2222aauua2uaaauju2222aaauaa2u
gggzgzgggzggzggzgzga2?Q:a0o<t_::/4"r\jazr@:QZ:j::~@j22222uu2u222aa222u2uauaaaau
ggggzggzggzzzzazzz2%:sa:j;<jp@gq.":j<^C.,._;Z::wwwq::Q@j222u2222222222222aa222a
zgzgggzggzzzzzza2A:n~:::p@Zwq@p@@@zj:j;a.__,Qaj;:: qG@p@:N@j2222222222j22222222
gggzgazzzzzaaa#5;~:,@zzzQZ@`@gNw~azzjj;.:jz~^^ g2,::\aq2a$Q:ZQj@22j2j222j222222
gzgzzzzaaaa2?!aj2@~`g: ::g@~<j.jp<<:j;.@Q:@{5Nggqg{:QQjj@pyuCdj@jjj2jjjjj2j22j2
ggzzzzzaa2F!`Q::. ;  ' .a 2zZ:;':;:j::j 2 ' ..:2Qz:j:j2@:Q@\j"CZj@jjjjjjj2j2j2j
azzzzaau$}::2:;                              :Z@:_:Q2ggz2p:Xi@:<XNj@jjjjjjj@jj2
gzzaaau2p:'           ..;2zz2:;:jj.        ;j...QQ2zQQQQg2:q^@ja{OQ@@j@@j@j@jjj
gzzzaa22l              '2:_.2\;____.Qajjj2Z._QQ22zzZQQQQQz\\@@: :<u@j@@jjjjjjjj
zaaaza22_,            ja:1QjQ\QjQjjQ\::z2::QjazazzZQQQZQQgap;Z:' j{Z@jjjjj@j@@j
zazaaa22\};  .     :.j.jQ@222222u2uu222jj22aaaazzzQZgggzgza$ra:   :1jjjjjjjjQ@j
zzzaauu22p         jQ:j:@jj222j22u2auuua22zzzggzZZQQQZgzza2@n z .._pj@jjjj2jjj@
zazzaaa22j}       :."j2Q@jj2j2j2a2zaaaazgggggQZQQQQgZZzu2jj@:;2.qjj@@jj@jjjj@@@
aaaaazaau2p,     'jZQ:uZ@@@jjjjjjj2jjjuaggggggggaaa2jjj2aoj$Q2gjq@@@j@@j@jj@j@@
aaauaua222jpz;   ; 'j:a:::Q@@@N@@jj2c2j@@@@jjj@@N0ooRRRR^<~<j:;jz1j@@j@@@@@j@@Q
a2u2uuu2u222.; ':;'Q;jjj2ago:p@Zj::jww~~~<:{az2j~`j:; ;  '.;a@"::q@@@@@@@@j@@@$
2u2aa2222$~~~Cpj.'j:\{"{:~@gj:            .Q:":N2:'         .@"j.{Q$@@Q@@@@$$Q$
2222u222jI22Qj2 2:::jjj":2.   .;         j..j.y::    .'  ' ;j@:"j1Q$QQQQQQ$Q$Qp
222222222i@:"@:j'.Q:\j"\@:'  2;2.,.  :';: 21Q2\\z2'jgN~a2g@.{{"@:Q@$QQ@$$@Q@@Qj
2222u22j2;j2{@;   q"":"\\\::{j\;::@QQQ@:@@jqaza$:;:::@::@:{2a2\N1@@@@@@QQ$N@Q@$
jj2j2jj22j22"Q  :;.u\::"jag:2j2jj\::::"2j:gQzggj$@:2::QQ@~^jj"j:QN@N$$$$$$@@$$N
2222j22jj2p;::a:jg2a;"::{2u:zcj""::::jc::Q@@gZza2\pg:Q:.:{{:::1QQQQQQQ$QQ@@QQQQ
j2j2j2j2j2j\2j"\.{1Q22:::{jjjjajjj.QQ@:~~jZjaggzj@Q,w<Z$Q:n;:"1$QQQQQQQQ$$@p$Q$
2jjjjjjjjjjj\u::p5z:Qaj\::::::::j:$@Kr`qQ\:Q2zgz22j2,N~O:::aj2u@$NQ$NQQNQQ@p@QQ
jjjjjjjjjjjjjQ@p:1Z$Zcj"j\:"\j22a0uo:@2:NKsN"??##Y=~t;z:agaaaja@Q$Q$Q$QQQ$QQ$QQ
jjjjjjjjjjjjj@\:Nn{2:aj{jjj\:{\jj\j:g:{I:   'j22:.  quL:;{z:2aQ@QQQQQQQQQQNQQQQ
jjjjjjjjjjjjjjjj\_p:g:jjj\\"jj{"""j:q.:n,N         'a:eQjQ:aj;@QQQQQQQQQQ$NQQQQ
j@jjjjjjjjjjjjjj@jj:aa2j2"{j{\jjj".:qp;}\:g'.g:a ; '.:~u@QQ\::@QQQQQQQQQQQQQQQ:
j@jjjjjjj@jjjj@@j@j:2jj2zj2jjjjj"1A@$Qf::Q:aa.'..' :  jg<o@@@Q$QQQQ:QQ:QQQQQQQg
@jjjjjjjjjjjjj@j@@@\ajjjjczzj22j1@Qn2r`gj;              'aN{Q@QQ:QQ:::Q:QQQQQQ:
jjjjj@jj@j@@j@@@@NY} :j""jjjjjjjgyz~:qj.       '''        :apj@QQQQ:zQQQQQQQQQQ
jjj@@jjjj@j@@@@p9`:|j::<:""\":\jar:@:j:        ''' '     ';g@a(cQ:Qg2::::QQQQQQ
j@jjjj@j@@@@@@p`2 'd_j:"":jj\jjjj::@;''..'::jza@QNjj2j2aQ@.1;2g:{QQQag::QQQQQQ:
jjjj@j@j@@@@$9j:  {JQQL_":j22":"\";j;::Ng@g@.::~;:j\;12._jz:}z:2;w=uaa:g:QQ:QQQ
jjj@j@j@@@p~`:'   1L3=QQz_2Za::::::pqpQjj:2y:\j@{\{j0ZQQ:2:2`2    ':~~zzg::Q:::
jjjjj@@@P~j';.     QQ_@74Qz\;\"::us@j@h{g}@@_2{:2@$;g\2SQQ:Q`         ;~<jgg:gg
jjj@@s~ g:'     . ;{NNQL_.V<u\,:@QqeA$cQr_"jQL11$QpjQQQ:uQ:a`:    ' '    .':w<<
@N~*:.;:.   '  ''::(ZQ$@@@g__<j_,:@@<Nuc{au:aqnNr@@@@QjpQQQjQ.    ''';         
`a'  '         .;:j;dQQ@Q@$@@Qg22."@NQ::;QjQjQ:p/uQQp@j\$\p:;2   '' '          
              ;;;:::Q~4Q$@$$$QQQ$Q\;@@@<Gj$jpd\@pzQ$Qp@@zn}qL;   ' '''''       
            ';;;.;:jz j7ZUZQ@N@Q@NQQ2Q:;_;<VR#@j\j2jjj2gQh:gQp: '''' '' ';     
           ';;;::::j:a\,:<cQgpEsQ$QQQgz\QQ:2agQQ@@jj2zzZQ:1@Qx,:'' '.'''''  .  
          ;;;;;;:;:::;(oPT:<ZQQQQNQQQgar@$gzaoZQ:@@j2azgQQ@$$xIj''.;..'''''''' 
     .'..:;;;...;.;;::.{@Q\;@<%QQ$QQx2$9<`;  '2~<Q@jjzzQQ@$$$Qpj;;;''''''''''''
    ''.:;;;;.;...'''.:j q@@Q\,@7vQQxrR+:,   'jzQZQ<~"jzZ$$$$@xr 2;;.' ''''''  '
     '..;.;;:;''   ''';a7@@@@Q2\:Y7&2{g@\\.aqqN:ur : _dQ@@$$$QzIj:;;.;'''''''''
     ''..;.;..   '   ' .:{N$@@@Qz;,:j~12:/<z:j~~w q_QQQ@@$$@$Qgpj::;...''''''' 
       ' '  '           ;z&Q@$$@@Qz__ j:' ::   .__QQQ@$@$$$$@QQr:j:;;;''' '''' 
       ''' '             ' Z@$@$$@@@Qz___.: __gzgQQQ@$$$@@$$@QQa2j;:;..''''''''
                          :7Q$$$$$$$$N$QQg:Jjv4gQNN$$$@@@@@@@NQgQj:::;..' '''' 
                           ;[@$@$@$$$$Qp;~"2_:zqN@$$@@@@@@@@$$QZQj::;..''''''''
                           .z&$$$$$$$$QQr_j\_.QOVQ$$@@@@@@@@@NQQQj::;''''''''''
                             wQN@$$$$$@Lzg<\2p{QgQN@@@@@@@@Q@$QgQj:;'''''''''' 
                              JQ$$@$@$$QQQ2r<%>OQ@s4@@@@@@$@@$Qx@j;.'''''''''''
                             ':uQ$$$$$$4eZx__.:}(agxqQ@@@@@@@$Qxaj:;''''' ' '''
                                dQ@$@$Q3pCa\Q;1N14vug@@@@@@@@$Qgj:::.;''''' .' 
                              '. q$@$$$Q12a_@yzj\QQgQ@@@@@@@@Q$Q;2::;;.;.''''.;
                                .J$$$$$QgazzQ1QQQg$@@@@@@@@@@$QQ}Q:::;;;;..'._w



 


***

Просмотр видео в цветной ASCII графике. Mplayer + libcaca.

Libcaca - еще одна библиотека использующаяся в mplayer для рендеринга видео в ASCII графике. От AAlib она отличается поддержкой цветов - 16 цветов и 256 цветовых пар. Но, у libcaca есть некоторые минусы - в ней нету регулировки яркости и контрастности. Пример использования:
$ mplayer -vo caca video.avi
А вот примеры видео, которое получается. Лично мне AAlib больше понравилась :Р 

libcaca libcaca 

 


***

Просмотр видео в стиле Matrix. Mplayer+matrixview.

Matrixview - библиотека mplayer, которая позволяет смотреть видео почти в ASCII графике - вместо пикселей - матрица. К сожалению, я не нашел в ней настроек контрастности и яркости, а с умолчальными настройками видео получается довольно бледным - хорошо выходят только контрастные видео с резким переходом цветов. Пример использования:
$ mplayer -vo matrixview video.avi
Примеры видео: 

 

 


***

Просмотр видео в консоли без иксов. Видео в Framebuffer.

Вы можете спросить - "А зачем вообще нужны эти AAlib, libcaca, matrixview? Ведь приемлемого качества в них не получишь - только глаза портить". А я могу ответить - "В AAlib, например, можно смотреть видео в консоли". Если серьезно, то, конечно, это все - just for fun и не более. Конечно, я предполагаю, что для кого-то они принесут пользу, но для просмотра видео в консоли есть куда более гуманные для психики способы :) Например, драйвер fbdev. Точнее, fbdev2. Если нужно, можете прочитать материал о том, как настраивать фреймбуфер в Linux. Вот примеры использования fbdev2:
$ mplayer -vo fbdev2 video.avi
С драйвером fbdev у меня мерцал экран, поэтому я использую fbdev2, чего и вам советую. Качество - не отличить от оригинала! Многие задаются вопросом - "как смотреть видео в полноэкранном режиме в framebuffer?". Решение простое:
$ mplayer -vo fbdev2 -zoom -xy 1280 video.avi
1280 замените на разрешение вашего экрана по ширине и видео пропорционально растянется до нужного размера. 

Скриншот видео, проигрываемого в framebuffer. На нем видны небольшие помехи, но это лишь погрешности программы, с помощью которой я делал скриншот, - в реале видео было без помех: 

video framebuffer 

А любителям ASCII графики советую посмотреть замечательный мульт по telnet. Он старый и бородатый настолько, что его можно уже считать новым:
$ telnet towel.blinkenlights.nl


Часть 3. Mencoder.


работа с видео в линукс
Mencoder - свободный кодировщик видео, входящий в состав проекта Mplayer. Информация в этой статье рассчитана не на профессионалов, а, скорее, на обычных пользователей, которым приходится решать задачи по кодированию видео на домашних компьютерах.

Основы

Аудио и видео кодеки, и форматы видео файлов 
Для указания аудио кодека в mencoder используется опция -oac, для указания видео кодека - -ovc. Список доступных видео кодеков можно просмотреть командой
$ mencoder -ovc help
А список аудио кодеков, соответственно
$ mencoder -oac help
Этот список на разных системах может быть разным. Он зависит от того, с какими опциями собран mplayer. 

Некоторые видео кодеки:
copy - копирование кадров, без пересжатия. Не работает с 
фильтрами (изменение размеров, crop и тд)
xvid - XviD, MPEG-4 Advanced Simple Profile (ASP) кодек
x264 - H.264, MPEG-4 Advanced Video Coding (AVC) кодек
frameno - специальный кодек только для аудиофайлов.
raw - несжатое видео.
lavc - кодеки из библиотеки libavcodec. Лучшее качество!
qtvideo - библиотеки QuickTime

Аудио кодеки:
copy - копирование аудио без перекодирования
mp3lame - MP3 Lame кодеки. Поддерживаются VBR, ABR и CBR битрейты.
lavc - аудио кодеки из библиотеки libavcodec
faac - FAAC AAC кодер
toolame - MPEG Audio Layer 2
twolame - MPEG Audio Layer 2
pcm - несжатый PCM звук

Форматы видеофайлов

Аудио и видео кодеками (такими, как MP3, Wav, Xvid, H264) кодируется аудио и видео содержание соответственно. Все это может быть сохранено в файле - AVI, MKV, OGG, MP4 и т.д. Форматы видеофайлов, например AVI, не являются кодеками, которыми сжимается видео/аудио. AVI (как и другие форматы) - контейнер. Грубо говоря, его можно представить ящиком, в который можно положить, сжатое в DivX видео, звук и еще кое-что. Кстати о AVI - это довольно старый формат и, я считаю, использовать его не рекомендуется. Новые форматы, такие как MKV (Matroska) и OGG/OGM, намного более удобны.

Форматы файлов (контейнеры), поддерживаемых вашим mencoder-ом, можно просмотреть командой
$ mencoder -of help
Форматы файлов:
avi - Microsoft Audio/Video формат
mpeg - MPEG-1/2 формат
lavf - форматы, поддерживаемые библиотекой libavformat. 
Формат определяется по расширению файла. Подробнее см. ниже.
Форматы файлов, поддерживаемые библиотекой libavformat
mpg - MPEG-1, MPEG-2
asf - Advanced Streaming Format
avi - Microsoft Audio/Video формат
wav - Waveform аудио формат
swf - Macromedia Flash 
flv - Macromedia Flash видео
rm - RealMedia
au - SUN AU
nut - открытый NUT формат (экспериментальный)
mov - QuickTime
mp4 - MPEG-4 формат
dv - Sony Digital видео
mkv - Перспективный и открытый аудио/видео формат Matroska.

Сравнительную таблицу медиаконтейнеров вы можете посмотреть на вики 

Libavcodec

Как вы могли заметить, видео и аудио кодеки можно выбирать не только из списка поддерживаемых mencoder-ом, но и из тех, которые поддерживает библиотека libavcodec. Остановимся на этом подробнее.
Libavcodec - качественная библиотека для кодирования и декодирования видео/аудио-файлов, которая является частью проекта ffmpeg.
Видео кодеки, поддерживаемые libavcodec:
mjpeg Motion JPEG
ljpeg JPEG без потери качества
jpegls JPEG LS
targa Targa рисунок
gif GIF рисунок
bmp BMP рисунок
png PNG рисунок
h261 H.261
h263 H.263
h263p H.263+
mpeg4 ISO стандарт MPEG-4 (DivX, Xvid совместимый)
msmpeg4 вариант пре-стандарта MPEG-4 от MS, v3 (он же DivX3)
msmpeg4v2 вариант пре-стандарта MPEG-4 от MS, v2 (используемый в
 старых ASF файлах)
wmv1 Windows Media Video, версия 1 (он же WMV7)
wmv2 Windows Media Video, версия 2 (он же WMV8)
rv10 RealVideo 1.0
rv20 RealVideo 2.0
mpeg1video MPEG-1 видео
mpeg2video MPEG-2 видео
huffyuv сжатие без потерь
ffvhuff huffyuv без потерь, модифицированный FFmpeg
asv1 ASUS Видео v1
asv2 ASUS Видео v2
ffv1 видео кодек без потерь из FFmpeg
svq1 Sorenson видео 1
flv Sorenson H.263 используемый в Flash Видео
flashsv Flash Screen Video
dvvideo Sony Digital Video
snow экспериментальный кодек FFmpeg, основанный на вейвлетах
zmbv Zip Motion Blocks Video
dnxhd AVID DNxHD

Аудио кодеки, поддерживаемые libavcodec:
ac3 Dolby Digital (AC-3)
adpcm_* Форматы Adaptive PCM, смотрите дополнительную таблицу
flac Free Lossless Audio Codec (FLAC)
g726 G.726 ADPCM
amr_nb 3GPP Adaptive Multi-Rate (AMR) узкополосный
amr_wb 3GPP Adaptive Multi-Rate (AMR) широкополосный
faac Advanced Audio Coding (AAC) - используя FAAC
gsm ETSI GSM 06.10 full rate
gsm_ms Microsoft GSM
libmp3lame MPEG-1 audio layer 3 (MP3) - используя LAME
libmp2 MPEG-1 audio layer 2 (MP2)
pcm_* PCM форматы, смотрите дополнительную таблицу
roq_dpcm Id Software RoQ DPCM
sonic экспериментальный кодек от FFmpeg с потерями (lossy)
sonicls экспериментальный кодек от FFmpeg без потерь (lossless)
vorbis Vorbis
wmav1 Windows Media Audio v1
wmav2 Windows Media Audio v2


Несколько простых примеров по кодированию видео с помощью mencoder. 

Видео в формате FLV конвертируем в MPEG-4 видео в формате MKV:
$ mencoder input.flv   -o out.mkv  -of lavf   -oac mp3lame   -ovc lavc -lavcopts vcodec=mpeg4
Определения: 
input.flv - исходный файл 
опция -o задает имя выходного файла - out.mkv 
опция -of указывает формат выходного файла - lavf 
lavf - форматы медиа файлов, поддерживаемые библиотекой libavformat (определяется по расширению файла) 
опция -oac указывает аудио кодек - mp3lame 
mp3lame - MPEG audio layer 3 (MP3 аудио кодек) 
опция -ovc указывает видео кодек - lavc 
lavc -lavcopts vcodec=mpeg4 - видео кодек, поддерживаемый библиотекой libavformat. 
Кодек указывается через -lavcopts vcodec=название-кодека. mpeg4 - DivX, XviD совместимый MPEG-4 стандарт. 

В этом примере не указаны опции для самих аудио и видео кодеков, поэтомуmencoder определит их сам. В большинстве случаев, размер файла получится больше, чем хотелось бы, а качество - хуже, поэтому, лучше указать хотя бы битрейт для видео. Если вы откроете получившийся файл out.mkv в mplayer в терминале, то увидите, что mplayer определил аудио и видео кодеки, и формат файла (контейнер):
Воспроизведение out.mkv.
Обнаружен Matroska формат файла!
VIDEO:  [mp4v]  320x240  24bpp  25.000 fps    0.0 kbps ( 0.0 kbyte/s)
==========================================================================
Открываю декодер видео: [ffmpeg] FFmpeg's libavcodec codec family
Выбран видеокодек: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
Открываю декодер аудио: [mp3lib] MPEG layer-2, layer-3
AUDIO: 22050 Hz, 2 ch, s16le, 8.0 kbit/1.13% (ratio: 1000->88200)
Выбран аудиокодек: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================

Видео в формате FLV конвертируем в MPEG-4 видео в формате AVI:
$ mencoder input.flv   -o out.avi  -of lavf   -oac mp3lame -lameopts abr:br=64  -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=400

В этом примере был указан битрейт для аудио и видео кодеков - усреднненый битрейт для аудио и переменный - для видео. 

Битрейт

Битрейт - параметр, определяющий с каким качеством будет кодировано видео/аудио. Напрямую влияет на качество и размер выходного файла. Проще говоря, битрейт 800кбит/с означает, что на одна секунда видео/аудио "весит" 800кбит (100кбайт). Существует три варианта битрейта.
CBR - постоянный битрейт
VBR - переменный битрейт
ABR - усредненный битрейт
Постоянный битрейт. Не меняется по всей длительности файла. Преимущество: что можно точно рассчитать размер конечного файла. Недостаток: размер файла будет всегда больше, чем при использовании VBR или AVR. 

Переменный битрейт. Меняется по всей длительности файла. Пользователь задает уровень желаемого качества и кодек на этой основе кодирует файл. Битрейт меняется в зависимости от "сложности" видео/аудио фрагмента. Преимущество: наилучшее качество и размер выходного файла. Недостаток: размер файла трудно предсказать. 

Усредненный битрейт. Битрейт задается пользователем в кбит/с, а кодек изменяет его в некоторых пределах. Отличие от VBR в том, что кодек меняет битрейт более "осторожно". Преимущество: качество получается лучше, чем при использовании CBR и примерный размер файла можно предсказать. Недостаток: Качество - хуже, чем при использовании VBR. 


Кодирование видео в два этапа (двухпроходное кодирование)

Этот способ позволяет получить немного лучшее качество и, иногда, меньший размер файла, чем при кодировании в один этап. При первом кодировании видео mencoder создает несколько временных файлов с информацией о медиа содержании, а на втором этапе, с использованием этих файлов, создает выходной файл.
Двухпроходное кодирование видео без пересжатия звука:
$ mencoder input.flv -o /dev/null -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1
$ mencoder input.flv -o out.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2


Изменение размеров видео (не размер файла)
Часто приходится изменять разрешение видео. Это может понадобиться для уменьшения размера файла, ведь для того, чтобы получить хорошую картинку на большом разрешении, нужен больший битрейт, чем для более маленького. Чтобы изменить разрешение у видео, можно использовать фильтр scale:
$ mencoder input.avi -o out.avi -of lavf -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=320:240
Опция -vf нужна для указания видео фильтра. В этом примере размеры видео будут изменены до 320:240. Будьте осторожны - если не сохраните пропорции, видео картинка может стать сплющенной или растянутой. Чтобы изменить размеры видео с сохранением пропорций, нужно вместо ширины видео указать "-2":
$ mencoder input.avi -o out.avi -of lavf -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=-2:240

В этом случае разрешение будет изменено пропорционально - mencoder подстроит ширину автоматически. 


Уменьшение размера видео-файла
Если вам нужно сжать видео-файл, который занимает слишком много места, вы должны в первую очередь, изменить битрейт. Если вы измените разрешение или как-либо еще усечете видео, размер файла не изменится, пока вы не измените битрейт. Что такое битрейт и с чем его едят, описано выше. Так же, совсем чуть-чуть уменьшить размер выходного файла поможет выбор правильного контейнера (формата) файла.
Среди форматов медиа-файлов больше всего распространен контейнер AVI. Однако, это довольно старый формат, который содержит много избыточности и мало возможностей. На мой взгляд, контейнер Matroska (*.MKV) имеет большие потенциалы. Matroska - открытый, свободный формат контейнера для видео-файлов, который содержит большое кол-во возможностей, не доступных в таких старых контейнерах, как AVI.
Покажу на примере. У меня имеется видео-запись, размером ровно 700МБ в формате AVI. Я лишь изменил контейнер, не изменяя видео и аудио, и получил размер на 5МБ меньше:
$ ls -sh video.avi 
700M video.avi
$ mencoder video.avi -o out.mkv -of lavf -oac copy -ovc copy
$ ls -sh out.mkv 
695M out.mkv


Дополнительные опции кодирования (libavcodec)

Указание расширенных опций кодирования видео при использовании библиотеки libavcodec
Параметры задаются с помощью опции -lavcopts, например:
-lavcopts vcodec=mpeg4:vbitrate=600:mbd=2:trell
Кстати, опции mbd=2trell и v4mv весьма желательны если вы хотите получить хорошее качество и у вас не MPEG-1/2 видео.

Описание некоторых полезных опций libavcodec:

vb_strategy=1 - пригодится для кодирования высокодинамичного видео. Желательно, использовать в паре с vmax_b_frames=2 , т.к. без этого, vb_strategy=1 в некоторых случаях может навредить качеству.
dia - диапазон поиска движения. Для лучшего качества, но медленного кодирования - от 2 до 4 и значение -1 - для быстрого кодирования, но менее хорошего качества.
last_pred - кол-во предсказателей движения, берущихся из предыдущего кадра. Значения 1-3 улучшат качество ценой небольшой потери скорости кодирования.
cbp,mv0 - контролирует выбор макроблоков. Небольшое снижение скорости и небольшое улучшение качества.

В документации к mencoder приводятся примеры опций для кодирования видео с высоким качеством.
Очень высокое качество: 
vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2
Высокое качество: 
vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo
Быстрое кодирование: 
vcodec=mpeg4:mbd=2:trell:v4mv:turbo
От себя я приведу немного упрощенный пример для кодирования с высоким качеством:
vcodec=mpeg4:mbd=2:trell:v4mv:cbp:mv0:last_pred=3:dia=2:vb_strategy=1:vmax_b_frames=2
Если видео не высокодинамичное, то последние два параметра можно опустить. И еще один момент - параметры qpel и v4mv нельзя использовать с MPEG-1/MPEG-2 видео. 

XVID

Недавно, друг попросил меня сжать 3ГБ видео, записанное на видеокамеру в формате MPEG-2.
Сначала, я пережал его в mpeg4 таким образом:
$ mencoder video.mpg -o video.mkv -of lavf -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo:vbitrate=1300:acodec=libmp3lame:abitrate=128
но, качество получилось не на высоте. Уж не знаю, может я сделал что-то не так, но затем я вместо mpeg4 использовал xvid и качество вышло _заметно_ лучше:
$ mencoder video.mpg -o 1-video.mkv -of lavf -oac lavc -lavcopts abitrate=128:acodec=libmp3lame -ovc xvid -xvidencopts bitrate=1300:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg
К сожалению, скриншот выложить не могу, т.к. запись приватная. 

Xvid - свободная библиотека для кодирования видео стандарта MPEG-4. Является открытым аналогом и основным конкурентом проприетарного кодека DivX. 

Настройки кодирования xvid задаются опцией -xvidencopts
Наилучшее качество:
chroma_opt:vhq=4:bvhq=1:quant_type=mpeg
Высокое качество:
vhq=2:bvhq=1:chroma_opt:quant_type=mpeg
Быстрое сжатие:
turbo:vhq=0


Часть 4. Mencoder, Avimerge, Mkvtoolnix, Vorbis - рецепты.


работа с видео в линукс
Краткое содержание: как добавить вторую звуковую дорожку в видео; как удалить определенную звуковую дорожку из видео; как склеить два видеофайла; восстановить индекс; изменить пропорции AVI видео; убрать черные поля; изменить разрешение видео; изменить формат видео без пересжатия и другие

Как добавить вторую звуковую дорожку в видеофайл:

Имеется в виду добавление дополнительной звуковой дорожки без замены уже существующей и без пересжатия видео. Если честно, ответ этот вопрос у меня вызвал некоторые затруднения. В Интернете можно найти решение:
$ avimerge -i video.avi -p input.wav -o output.avi
Но в моем дистрибутиве эта программа не хочет работать:
[avilib.c] critical: AVI open: avilib - Not an AVI file
понять причину и исправить эту ошибку мне так и не удалось. В том же самом Интернете есть еще один способ добавить звук в видео:
$ mencoder video.avi -audiofile sound.wav -oac copy -ovc copy -o output.avi
Но, в этом случае, разумеется, mencoder не добавит еще одну звуковую дорожку, а лишь перезапишет существующую. Это будет полезно, если вам надо лишь добавить звук к "немому" видео.
Больше никаких вариантов я не нашел, но вдруг наткнулся на утилиту mmg(mkvmerge) из набора утилит mkvtoolnix. Mmg - графический вариант, mkvmerge - консольный. Это - замечательная утилита для редактирования видеофайлов, которая может сохранять их в формат MKV (без пересжатия, разумеется). Я точно не знаю, какие видеоформаты она поддерживает, но кроме родного MKV, она отлично открывает AVI.
Таким образом, открываете в mmg видеофайл (кнопка Добавить) и добавляете звук (этой же кнопкой). Внизу выбираете имя для выходного файла и жмете "Начать мультиплексирование".
Процесс, обычно, занимает от нескольких секунд до нескольких минут.

Как оставить определенную звуковую дорожку в видеофайле (как удалить лишние звуковые дорожки)

Например, у вас имеется видео в формате AVI с двумя звуковыми дорожками - одна на русском, вторая - на китайском. Дорожка на русском вам, конечно, не нужна и вы хотите ее удалить, облегчив тем самым размер файла. Открываете видео в уже упомянутой выше утилите mmg и в списке "Дорожки, главы и теги"снимаете галки с лишних звуковых дорожек, оставляя одну нужную. Сохраняете видео и вуаля! - появляется видеофайл в формате MKV с только нужной звуковой дорожкой.

Разрезать AVI видеофайл на несколько частей

Для этого можно воспользоваться утилитой avisplit из пакета transcode:
$ avisplit -i 1.avi -s 100
Опция -s 100 означает, что видео будет разрезано на куски, размером 100МБ. 

Как Склеить два видеофайла:

$ mencoder -ovc copy -oac copy -o out.avi 1.avi 2.avi
Эта команда склеит 1 и 2 видео файлы в один - out.avi. Но, будьте осторожны - в некоторых случаях может перестать работать перемотка. Чтобы это исправить, используйте опцию -idx

Еще один способ сделать один видеофайл из двух:

$ cat video1.avi video2.avi|mencoder - -oac copy -ovc copy -o output.avi

Восстановить индекс (если не работает перемотка):

$ mencoder input.avi -idx -ovc copy -oac copy -o out.avi
Эта команда заново сгенерирует индекс, но не надейтесь, что она исправит другие ошибки видео.

Исправить/изменить пропорции у AVI файла:

Для переопределения пропорций в видео, используйте опцию -force-avi-aspect:
$ mencoder input.avi -ovc copy -oac copy -o out.avi  -force-avi-aspect 4/3

Обрезать границы видео (убрать черные поля)

Если вы создаете dvdrip и вам нужно убрать черные поля у видео, вы можете использовать фильтр cropdetect для автоопределения. Запускаете mplayer из терминала таким образом:
$ mplayer dvd://3 -vf cropdetect
и перематываете видео, хотя бы до середины, с помощью стрелок. Вы увидите в выводе терминала нечто подобное:
-vf crop=681:538:10:9
Теперь, указав эти цифры фильтру crop, вы сможете обрезать картинку видео до указанных границ. Но, чтобы быть уверенным, вы можете, сперва, проверить корректность:
$ mplayer dvd://3 -vf rectangle=681:538:10:9
Mplayer отрисует прямоугольник на видео и вы сможете увидеть, корректно ли фильтр cropdetect определил границы черных рамок. После этого, можете обрезать видео, использовав фильтр crop для mencoder:
$ mencoder input.avi -o out.avi -of lavf -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -vf crop=681:538:10:9

Изменить размеры (разрешение) видео

Иногда, вам может понадобиться изменить разрешение у видео. Сделать это можно с помощью mencoder и видео фильтра scale. Вы можете указать размеры полностью (-vf scale=420:260), в этом случае будьте осторожны с сохранением пропорций, а можете указать лишь одно значение scale растянет другое пропорционально. (-vf scale=420:-2)
$ mencoder input.avi -o out.avi -of lavf -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=420:-2

Изменить формат видео файла без перекодирования

Сменить формат файла (контейнер) без пересжатия, например AVI на MKV, можно так:
$ mencoder input.avi -o out.mkv -of lavf -oac copy -ovc copy

Как повернуть видео на 90 градусов

Используйте видеофильтр rotate:
$ mencoder input.mkv -o output.mkv -oac copy -ovc xvid -xvidencopts bitrate=2000 -vf rotate=1
Не забудьте указать нужные опции сжатия для видеокодека. 
rotate=0 - повернуть на 90 градусов по часовой стрелке и отразить
rotate=1 - повернуть на 90 гр. по часовой стрелке
rotate=2 - повернуть на 90 гр. против часовой стрелки
rotate=3 - повернуть на 90 гр. против часовой стрелки и отразить

Задать аудио кодек при кодировании видео

Делается это аналагично настройкам видео кодека - с помощью -lavcopts (если вы используете libavcodec):
$ mencoder input.avi -o out.mkv -ovc lavc -oac lavc -lavcopts acodec=vorbis:abitrate=128:vcodec=mpeg4:vbitrate=800
Аудио кодек задается параметром acodec, битрейт для аудио задается параметромabitrate. Для MP3 используйте acodec=libmp3lame

Указать настройки сжатия аудио кодеку MP3

Сделать это можно с помощью опции -lameopts
$ mencoder input.avi -o out.avi -ovc xvid -oac mp3lame -lameopts vbr:2:q=5
q=5 указывает желаемое качество по десятибальной шкале (от 0 до 9) 

Получить звук из видеофайла:

$ mplayer video.avi -dumpaudio -dumpfile sound.mp3
Заметьте, расширение .mp3 ничего не дает - звук будет в том формате, в котором он был в самом видеофайле. 

Еще один способ извлечь аудио из видеофайла:

$ mplayer video.avi -ao pcm:fast:file=sound.wav -vo null
В этом случае звук будет в несжатом PCM формате и его необходимо будет сжать (MP3 или Vorbis), прежде чем добавлять к видео, т.к. размер файла будет довольно большой.

Хитрый способ вырезать звук из видео:

$ mplayer video.avi -dumpaudio -dumpfile sound.ac3
$ mplayer sound.ac3 -ao pcm:fast:file=sound.wav -vo null
Хотя тут используются сразу две команды, этот способ может работать быстрее, если вам надо получить звук в несжатом PCM формате. К примеру, вы хотите вырезать звук из видео, причем он должен быть в формате PCM, чтобы его можно было сконвертировать в Vorbis с помощью oggenc. Способ с -dumpaudio скорее всего не подойдет, т.к. с этим способом звук будет в том же формате, в котором он был в видео, а нам нужен PCM. С помощью способа с -ao pcm:fast:file=sound.wav звуковая дорожка будет вырезаться из видео очень долгое время, особенно если это видео в высоком качестве. Тогда вы можете сначала скопировать звуковую дорожку в отдельный файл, а потом сконвертировать ее в PCM с помощью того же mplayer-а. Хитрость заключается в том, что вторая команда выполняется во много раз быстрее, если обрабатывается не видео а аудио файл.

Как извлечь определенную звуковую дорожку из видеофайла:

Все так же, как в предыдущих двух примерах, только надо указать mplayer-у номер звуковой дорожки. Получить список звуковых и видео дорожек можно, начав проигрывать видео в mplayer в терминале. Вы увидите нечто подобное:
$ mplayer 2.mkv 
MPlayer SVN-r30554-4.4.3 (C) 2000-2010 MPlayer Team
Воспроизведение 2.mkv.
[mkv] ID дорожки 1: video (V_MS/VFW/FOURCC) "nameofvideo", -vid 0
[mkv] ID дорожки 2: audio (A_MPEG/L3) "nameofaudio1", -aid 0, -alang und
[mkv] ID дорожки 3: audio (A_MPEG/L3) "nameofaudio2", -aid 1, -alang und
[mkv] ID дорожки 4: audio (A_MPEG/L3) "nameofaudio3", -aid 2, -alang und
"nameofaudio1" - имя первой звуковой дорожки. -aid 0 - идентификатор. Если вы хотите сохранить вторую звуковую дорожку в файл, команда будет такой:
$ mplayer video.avi -dumpaudio -dumpfile sound.mp3 -aid 2

Сжать звук кодеком Vorbis:

Чтобы сконвертировать несжатый WAV в Vorbis, можно воспользоваться утилитойoggenc, входящей в состав пакета Vorbis (в моей Gentoo он называется vorbis-tools)
$ oggenc sound.wav -q 3 -o sound.ogg
Опция -q 3 задает качество звука - средний битрейт получится 88-112кбит/с. Не советую, кстати, ставить выше. Не ориентируйтесь на битрейт в MP3 - в Vorbis нужен битрейт намного меньший, чем в MP3 для аналогичного качества. Т.е. звуковые файлы будут и весить меньше и звучать лучше, чем файлы в MP3. 
Если вы хотите сконвертировать MP3 в Vorbis, в примере выше написано, как проиграть видео/аудио файл mplayer-ом, чтобы извлечь из него звук в формате WAV для дальнейшего кодирования. Но, можно пойти простым путем и воспользоваться утилитой mp32ogg.

Как удалить звук из видео

$ mencoder video.avi -o out.avi  -ovc copy -idx -nosound

MKVToolnix


Название:MKVToolnix
Логотип:matroska-logo
Скриншот:mkvtoolnix
MKVToolnix - 4.0.0
Тип:Работа с видео
Тип интерфейса:Console/GUI
Версия:4.0.0
от:June 5, 2010
Лицензия:GPL
Сайт:http://www.bunkus.org/videotools/mkvtoolnix/index.html

MKVToolnix - удобный набор утилит для редактирования Matroska (MKV) видеофайлов в Linux и других Unix-like системах. MKVToolnix схожа с OGMtools, только работает над с MKV форматом. 5 июня 2010 вышел релиз Mkvtoolnix v4.0.0.
MKVToolnix содержит в себе несколько утилит: mkvmerge, mmg, mkvextract, mkvinfo и mkvpropedit.
mkvmerge - консольная утилита для работы с многими форматами мультимедиа файлов, которая может сохранять их в файлы MKV. Любители консольных утилит легко разберутся в ней сами, прочитав man mkvmerge, а для остальных - используйте графическую mmg.
mmg - графическая версия mkvmerge. Может делать то же самое, только в GUI. Позволяет создавать видеофайлы в формате MKV. Вы можете открыть видео в формате AVI, удалить звуковые дорожки, добавить свои и сохранить это все в новом файле. Так же вы можете задавать имена дорожек, языки, теги, устанавливать дорожку по-умолчанию, тайм-коды, задержку аудио, указывать формат к треку видео (FourCC), FPS, формат изображения. Вы можете добавлять вложения, разбивать выходной файл на несколько частей, редактировать главы. Интерфейс mkvmerge GUI (mmg) v4.0.0 полностью переведен на русский язык.

Скриншоты Mkvtoolnix - mmg (mkvmerge)

mkvtoolnix mkvtoolnixmkvtoolnix mkvtoolnix 

mkvinfo - выводит подробную информацию о MKV файлах:
$ mkvinfo 1.mkv 
+ EBML глава
|+ EBML версия: 1
|+ EBML читать версию: 1
|+ EBML максимальная длина ID: 4
|+ EBML максимальная длина размера: 8
|+ Тип документа: matroska
|+ Версия типа документа: 2
|+ Тип документа читал версию: 2
+ Сегмент, размер 735146180
|+ Искать заголовок (подстатьи будут пропущены)
|+ EbmlVoid (размер: 4044)
|+ Информация сегмента
| + Масштаб тайм-кода: 1000000
| + Мультиплексирование приложение: libebml v1.0.0 + libmatroska v1.0.0
| + Написать приложение: mkvmerge v4.0.0 ('The Stars were mine') сборка от Jun 14 2010 12:03:49
| + Продолжительность: 4827.640s (01:20:27.640)
| + Дата: Mon Jun 14 10:20:16 2010 UTC
| + Сегмент UID: 0xa4 0x7f 0x5b 0x69 0x50 0x53 0x85 0xe5 0xd4 0xd2 0x3d 0x4f 0x7e 0x36 0x8a 0x63
|+ Дорожки сегмента
| + Дорожка
|  + Номер дорожки: 1
|  + Дорожка UID: 3919281211
|  + Тип дорожки: video
|  + Флажок сшивания: 0
|  + Минимальный кэш: 1
|  + Кодек ID: V_MS/VFW/FOURCC
|  + CodecPrivate, длина 40 (FourCC: DX50, 0x30355844)
|  + По умолчанию продолжительность: 40.000ms (25.000 fps для видео дорожки)
|  + Язык: und
|  + Видео дорожка
|   + Ширина пикселя: 640
|   + Высота пикселя: 480
|   + Ширина дисплея: 640
|   + Высота дисплея: 480
| + Дорожка
|  + Номер дорожки: 2
|  + Дорожка UID: 1436813707
|  + Тип дорожки: audio
|  + Кодек ID: A_MPEG/L3
|  + По умолчанию продолжительность: 24.000ms (41.667 fps для видео дорожки)
|  + Язык: und
|  + Audio track
|   + Частота дискретизации: 48000
|   + Каналы: 2
| + Дорожка
|  + Номер дорожки: 3
|  + Дорожка UID: 1582642828
|  + Тип дорожки: audio
|  + По умолчанию флаг: 0
|  + Кодек ID: A_MPEG/L3
|  + По умолчанию продолжительность: 26.122ms (38.281 fps для видео дорожки)
|  + Язык: und
|  + Audio track
|   + Частота дискретизации: 44100
|   + Каналы: 2
|+ EbmlVoid (размер: 1114)
|+ Кластер
mkvextract - позволяет сохранять отдельные треки из MKV файлов в другие файлы.
$ mkvextract tracks 2.mkv 1:test.mkv
Извлечение трек 1 с CodecID 'V_MS/VFW/FOURCC' в файл 'test.mkv'. Контейнер формат: AVI (Microsoft Audio/Video Interleaved)
Прогресс: 100%
17:14:35 brainsburn@desktop /files/tmp/2
$ file test.mkv 
test.mkv: RIFF (little-endian) data, AVI, 640 x 480, 25.00 fps, video: XviD
17:14:38 brainsburn@desktop /files/tmp/2
$ mkvextract tracks 2.mkv 2:test.mkv
Извлечение трек 2 с CodecID 'A_MPEG/L3' в файл 'test.mkv'. Контейнер формат: MPEG-1 Audio Layer 2/3
Прогресс: 100%
17:14:45 brainsburn@desktop /files/tmp/2
$ file test.mkv 
test.mkv: MPEG ADTS, layer III, v1,  32 kbps, 48 kHz, JntStereo
mkvpropedit - позволяет модифицировать параметры MKV файлов. 

Установить MKVToolnix

Mkvtoolnix присутствует в ряде популярных ОС - Debian, Arch Linux, Gentoo, FreeBSD, NetBSD, Windows и др.
, но вы можете собрать ее и из исходных кодов. 

Установка MKVToolnix из исходных кодов

Вам понадобится утилита autoconf для сборки. Процесс установки предельно банален: 
Сперва, клонируем Git репозиторий: 
$ git clone git://git.bunkus.org/mkvtoolnix.git
Затем:
$ cd mkvtoolnix
$ ./autogen.sh
$ make
# make install