Для обработки видео существует такая утилита, как ffmpeg, которая поддерживает огромное количество кодеков и форматов аудио и видео.
Для записи звука нужно указать
Здесь следует сказать только о двух параметрах:
Три варианта использования с перекодированием:
Захват видео с экрана
$ ffmpeg -y -f x11grab -threads 0 -r 10 -s 1920x1080 \ -i :0.0 -preset slower -tune stillimage -an file.mkvОписание:
- -y – перезаписывать существующие файлы;
- -f x11grab – запись с экрана;
- -threads 0 – автоматически задавать максимальное количество потоков, если указать, число, то можно задать максимальное количество потоков;
- -r 10 – кадров в секунду;
- -s 1920x1080 – размер изображения;
- -i :0.0 – экран для захвата (можно и удалённо), если указать :0.0+10,20 , то запись будет идти с соответствующим смещением на экране;
- -preset slower — предустановка режима записи, существует множество (от ultrafast – самый быстрый режим с большим битрейтом, до placebo – очень медленный режим с минимальным битрейтом), лучше смотреть man x264 и подобрать настройку под производительность системы и выбранную частоту кадров;
- -tune stillimage – предустановка для типа изображения, в данном случае - статическое изображение, т.е. запись с экрана обычных действий (игры записать не получится, для этого нужно указать film или вообще не указывать ничего);
- -an – записывать без звука.
Для записи звука нужно указать
-f oss -i /dev/dsp -acodec libfaac -ab 192k
для
oss (для ALSA не знаю…).
- -f oss – запись через oss;
- -i /dev/dsp – устройство записи (если несколько звуковых карт, указать своё);
- -acodec libfaac – кодек записи, этот более-менее оптимальный, хотя faac гораздо хуже оригинального от nero;
- -ab 192k — битрейт аудио.
Разрезать видео
ffmpeg -i video.mkv -ss 10:20 -t 15:00 -vcodec copy -acodec copy video2.mkv
Здесь следует сказать только о двух параметрах:
- -ss – смещение относительно начала файла мин:сек;
- -t – длина видео.
Склеить несколько видео
Судя по всему, можно склеивать только видео формата ts и mpg. Для склеивания видео в формате mkv или mp4 с кодеком h264 видимо можно только перекодировав.ffmpeg -i concat:"video1.mpg|video2.mpg" -vcodec copy -acodec copy video_out.mpg
Три варианта использования с перекодированием:
- Первый вариант с последовательным перекодированием каждого видео:
ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
- Вариант с отдельным перекодированием и одновременной склейкой и обратным перекодированием средствами ffmpeg:
ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
- Вариант, позволяющий делать всё параллельно (идеально подходит для многоядерных процессоров):
mkfifo intermediate1.mpg mkfifo intermediate2.mpg ffmpeg -i input1.avi -qscale:v 1 -y intermediate1.mpg < /dev/null & ffmpeg -i input2.avi -qscale:v 1 -y intermediate2.mpg < /dev/null & cat intermediate1.mpg intermediate2.mpg |\ ffmpeg -f mpeg -i - -c:v mpeg4 -acodec libmp3lame output.avi
Комментариев нет:
Отправить комментарий