vkapas


Уютная жежешечка Вадима Капася

петушки Роскомнадзора могут смело идти отсюда нахуй


Previous Entry Share Next Entry
Как склеить видео-файлы (ролики) в Ubuntu GNU/Linux
vkapas
На днях нужно было переписать с ТВ для одного хорошего человека 2-часовую передачу. Уж не знаю, есть ли другие, более простые способы, но в тот же день у меня получилось добыть эту передачу только в виде двух десятков 5-минутных кусочков (хотя через пару дней после трансляции эту передачу всё-таки выложили на торрентах).

В принципе, собрать полноценный фильм из небольшого (2-10) количества видео-файлов можно и через графический видеоредактор, например, OpenShot ($ sudo apt-get install openshot), к тому же в большинстве видеоредакторов можно сразу и подрезать наш фильм (или отдельные части), если возникнет такая необходимость.

Но я почему-то решил, что через консоль это можно сделать быстрее.

Итак, допустим, наши видео-файлы имеют имена 1.avi, 2.avi, 3.avi и так далее (т.е. имена идут по возрастанию, по возрастанию же их нужно склеить), в таком случае делаем следующее:

1) в /home/user создаём директорию для нашего будущего фильма, например /home/user/new_film;
2) перемещаем наши файлы-заготовки для будущего фильма в /home/user/new_film;
3) открываем консоль, заходим в свежесозданную директорию
$ cd ~/new_film
3) выполняем волшебную команду
(должен быть установлен mencoder, в Ubuntu это можно сделать так: $ sudo aptitude install mencoder)
$ cat *.avi > ALL.avi && mencoder -forceidx -oac copy -ovc copy ALL.avi -o film.avi
4) ждём завершения команды и ищем готовый фильм по адресу /home/user/new_film/film.avi, все остальные файлы (включая ALL.avi) из директории можно удалять.

Примечания

1. Видео-файлы должны быть в формате avi. В противном случае файлы могут склеиться некорректно. Перекодировать видео-файлы можно с помощью, например, WinFF.
2. Обрезать (разделить, сократить) видео, также можно с помощью консоли. Например, если мы хотим убрать первые 35 секунд у нашего фильма:
$ mencoder -ovc copy -oac copy -ss 00:00:35 -o изменённый_файл.avi исходный_файл.avi
Или если хотим отрезать у нашего 2-часового проекта последние 5 минут:
$ mencoder -ovc copy -oac copy -endpos 01:55:00 -o изменённый_файл.avi исходный_файл.avi
3. Чтобы видеть процесс склейки файлов (полезно, если файлы большие и их десятки) рекомендую установить замечательную программку pv ($ sudo apt-get install pv). С ней процесс будет выглядеть примерно так:

Соответственно, волшебная команда будет выглядеть вот так:
$ pv *.avi > ALL.avi && mencoder -forceidx -oac copy -ovc copy ALL.avi -o film.avi

За подсказку спасибо блогу Rascal и журналу Chip.

  • 1
кстати, теоретически, можно то же самое сделать через ffmpeg, но он режет видео некорректно. Обрезает звук, а видеопоток оставляет

ответ системы на заклинание:
serg@serg-laptop ~/Загрузки/vrem $ cat *.avi > ALL.avi && mencoder -forceidx -oac copy -ovc copy ALL.avi -o film.avi
cat: ALL.avi: ввод и вывод в один файл

Возможно, ещё актуально

Странно. Только что проверил

$ cat *.avi > ALL.avi && mencoder -forceidx -oac copy -ovc copy ALL.avi -o film.avi
MEncoder SVN-r1.0~rc3+svn20090426-4.4.3 (C) 2000-2009 MPlayer Team
success: format: 0 data: 0x0 - 0x81d21194
AVI file format detected.
[aviheader] Video stream found, -vid 0
[aviheader] Audio stream found, -aid 1
AVI: Generated index table for 909402 chunks!
VIDEO: [DIV3] 640x480 24bpp 25.000 fps 1003.4 kbps (122.5 kbyte/s)
[V] filefmt:3 fourcc:0x33564944 size:640x480 fps:25.000 ftime:=0.0400
videocodec: framecopy (640x480 24bpp fourcc=33564944)
audiocodec: framecopy (format=55 chans=2 rate=44100 bits=0 B/s=24000 sample-0)
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
ODML: Starting new RIFF chunk at 1023MB.m: 2min 2077mb A-V:0.040 [1003:191]
ODML: Starting new RIFF chunk at 2047MB.em: 0min 2072mb A-V:0.040 [1003:191]
Writing index...506f (100%) 1092.15fps Trem: 0min 2063mb A-V:0.015 [1003:191]
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.

Video stream: 1003.392 kbit/s (125424 B/s) size: 1803627514 bytes 14380.240 secs 359506 frames

Audio stream: 191.998 kbit/s (23999 B/s) size: 344747444 bytes 14364.630 secs

В итоге без проблем склеились 2 файла: 1.avi и 2.avi.

Возможно, в директории vrem уже есть файл ALL.avi. Убедитесь, что в рабочей директории перед выполнением команды нет ничего, кроме файлов для для склейки, именованных в порядке возрастания.

Надо посмотреть этот OpenShot, не пользовался. BTW, какие хорошие видеоредакторы под Linux знаете?

Из того, что видел и пробовал, кроме Openshot понравился, разве что, только Kdenlive. Он более продвинутый в плане эффектов и настроек, но достаточно сырой и потому частенько валится. Да и небольшие неприятные глюки частенько в процессе работы вываливаются.

В Openshot же, напротив, список эффектов скромнее, возможностей меньше, зато работает стабильно. Для обработки простого хоум-видео самое то.

LiVES и Cinelerra я так и не осилил из-за их совершенно неюзабельного интерфейса. PiTiVi может и неплох, но в нём отсутствует возможность наложения эффектов и текста, а это было критично. Kino, по-моему, так и не смог запустить.

На zenway есть хорошие обзоры основных видеоредакторов GNU/Linux, рекомендую ознакомиться.

Извините, прочитал ваш вопрос в сообществе, но не могу там комментировать.

Если у вас микрофон для вокала, он, конечно, будет работать с компьютером, но качество будет очень плохое. Чтобы нормально подключить микрофон, нужна внешняя звуковая карта, типа вот таких:

http://antonkozlov.ru/top-10/vybor-zvukovoj-karty-dlya-zapisi-muzyki-i-golosa.html

Большое спасибо за комментарий! Пока ещё не проверяли качество звука, если правда будет плохим, думаю, так и сделаем.

  • 1
?

Log in

No account? Create an account