Soft/FFmpeg: различия между версиями
Нет описания правки |
|||
Строка 13: | Строка 13: | ||
Для aac нужно указать параметр '''-strict experimental'''. | Для aac нужно указать параметр '''-strict experimental'''. | ||
====AVI==== | ====AVI==== | ||
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/TVRips/Наши кассеты/Спокойной+ночи%2C+малыши+2001+%28Крот+и+зеленая+звезда%29_VHSRip+by+hukin07.mpg' -vcodec libx264 spok.avi | |||
====MP4==== | ====MP4==== | ||
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Малыш и Карлсон/2 Карлсон вернулся.avi' -vcodec libx264 /home/petr/karlson.mp4 | |||
====WMV==== | ====WMV==== | ||
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Ролики/Первая попытка виндузятника подружиться с linux -D.avi' -vcodec wmv2 -acodec wmav2 linux.wmv | |||
====Webm в MP4==== | ====Webm в MP4==== | ||
ffmpeg -i '55 ReactOS Осторожно, модерн. NTVDM сейчас.webm' -vsync vfr /home/petr/55.mp4 | |||
===Конвертирование аудио=== | ===Конвертирование аудио=== | ||
ffmpeg -i '/run/media/petr/Transcend/Документы/Музыка/Песни/Вадим Козин/Ленинград мой.mp3' /home/petr/leningrad.ogg | |||
Где -i входной файл, а следующий путь выходной. Окончание выходного файла (mp3, wav, ogg, wma, aac, flac) | Где -i входной файл, а следующий путь выходной. Окончание выходного файла (mp3, wav, ogg, wma, aac, flac) | ||
Для aac нужно указать параметр '''-strict experimental'''. | Для aac нужно указать параметр '''-strict experimental'''. | ||
ffmpeg -i '/run/media/petr/Transcend/Документы/Музыка/Песни/Вадим Козин/Ленинград мой.mp3' -strict experimental /home/petr/leningrad.aac | |||
===Сжатие видео без потери качества=== | ===Сжатие видео без потери качества=== | ||
ffmpeg -i timemachinens.mp4 timemachinesszhat.mp4 -c:v libx264 -crf 18 -preset veryslow -c:a copy -strict experimental | |||
===Изменение разрешения видео=== | ===Изменение разрешения видео=== | ||
Я хочу скинуть на телефон видео. Экран там небольшой. Разрешение видео можно сжать, чтобы видео занимало меньше места. | Я хочу скинуть на телефон видео. Экран там небольшой. Разрешение видео можно сжать, чтобы видео занимало меньше места. | ||
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Фильмы/Отечественное кино/Котёнок (1996).avi' -strict experimental -s 320x240 /home/petr/Котенок.mp4 | |||
И в итоге видео становится с меньшим разрешением, но и с меньшим весом 1,6 Гб -> 218,4 мб. Весит меньше, а на маленьком экране не заметно разницы. | И в итоге видео становится с меньшим разрешением, но и с меньшим весом 1,6 Гб -> 218,4 мб. Весит меньше, а на маленьком экране не заметно разницы. | ||
===Обрезка видео=== | ===Обрезка видео=== | ||
ffmpeg -t 00:05:00 -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Большой УХ.avi' -vcodec copy -acodec copy kozinaki.avi | |||
-t - длина фрагмента, copy - копирование кодеков видео и аудио | -t - длина фрагмента, copy - копирование кодеков видео и аудио | ||
Баг: когда вы делаете обрезку не сначала (-ss 00:02:00 -t 00:05:00), то вместо того, чтобы начать с 2-х минут и обрезать 5 минут видео, | Баг: когда вы делаете обрезку не сначала (-ss 00:02:00 -t 00:05:00), то вместо того, чтобы начать с 2-х минут и обрезать 5 минут видео, ffmpeg начинает c 2-х минут и обрезает 7 минут видео. | ||
===Извлечение аудиодорожки=== | ===Извлечение аудиодорожки=== | ||
Например, я хочу нарезать звуков из Карлсона типа "Так это вы таскали мои плюшки?!" или "Фу, как не культурно!". Я беру мультик, avi, и применяю следующую команду: | Например, я хочу нарезать звуков из Карлсона типа "Так это вы таскали мои плюшки?!" или "Фу, как не культурно!". Я беру мультик, avi, и применяю следующую команду: | ||
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Малыш и Карлсон/2 Карлсон вернулся.avi' /home/petr/karlson.mp3 | |||
Получаю mp3-файл, аудиодорожку из мультфильма, открываю Audacity и вырезаю нужные моменты. | Получаю mp3-файл, аудиодорожку из мультфильма, открываю Audacity и вырезаю нужные моменты. | ||
Хотя, если хотите, можно сделать это сразу. С помощью ключей -ss (начало) и -t (продолжительность) можно вырезать конкретную фразу. | Хотя, если хотите, можно сделать это сразу. С помощью ключей -ss (начало) и -t (продолжительность) можно вырезать конкретную фразу. | ||
ffmpeg -ss 0:07:27 -t 0:00:07 -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Малыш и Карлсон/2 Карлсон вернулся.avi' /home/petr/karlson.mp3 | |||
Так мы получим фразу "Убедительно просим увести ваших детей от наших голубых экранов." | Так мы получим фразу "Убедительно просим увести ваших детей от наших голубых экранов." | ||
Строка 59: | Строка 59: | ||
mkdir ~ images | mkdir ~ images | ||
2.Переведите видео в изображения | 2.Переведите видео в изображения | ||
ffmpeg -ss 0:04:00 -t 0:00:16 -i "/run/media/petr/TRANSCEND/Видео/Мультфильмы/Домовенок Кузя/1 Приключения домовенка.avi" -vf fps=10 /home/petr/images/kuzya%03d.png | |||
===Создание GIF из видео=== | ===Создание GIF из видео=== | ||
Строка 66: | Строка 66: | ||
mkdir ~ frames | mkdir ~ frames | ||
2. Сконвертируйте видео на маленькое разрешение и вырежьте приблизительный кусок (-ss - начало видео, -t - продолжительность.)<br> | 2. Сконвертируйте видео на маленькое разрешение и вырежьте приблизительный кусок (-ss - начало видео, -t - продолжительность.)<br> | ||
ffmpeg -ss 0:04:00 -t 0:00:16 -i "/run/media/petr/TRANSCEND/Видео/Ч_б мультфильмы/Советские 1920-е/Одна из многих (1927).mp4" -strict experimental -vf scale=320:240 /home/petr/ffout.mp4 | |||
3.Переведите видео в изображения | 3.Переведите видео в изображения | ||
ffmpeg -i "/home/petr/ffout.mp4" -vf fps=10 /home/petr/frames/ffout%03d.png | |||
Данная команда сконверитрует видео в изображения.<br> | Данная команда сконверитрует видео в изображения.<br> | ||
4.Перейдите в папку и если надо, удалите лишние кадры.<br> | 4.Перейдите в папку и если надо, удалите лишние кадры.<br> | ||
Строка 81: | Строка 81: | ||
mkdir conv | mkdir conv | ||
for f in *.avi; do | for f in *.avi; do | ||
ffmpeg -i "$f" '''-acodec copy -strict experimental -s 1280x720''' conv/"${f%.*}".'''mkv''' | |||
done | done | ||
for f in *.m{p4,kv,ov}; do | for f in *.m{p4,kv,ov}; do | ||
ffmpeg -i "$f" '''-acodec copy -strict experimental -s 1280x720''' conv/"${f%.*}".'''mkv''' | |||
done | done | ||
Сохраним его как '''conv.sh''' и сделаем исполняемым: | Сохраним его как '''conv.sh''' и сделаем исполняемым: | ||
chmod +x conv.sh | chmod +x conv.sh | ||
Переходим в каталог с файлами и выполняем данный скрипт.[https://forum.ubuntu.ru/index.php?topic=248799.msg1964419#msg1964419] | Переходим в каталог с файлами и выполняем данный скрипт.[https://forum.ubuntu.ru/index.php?topic=248799.msg1964419#msg1964419] | ||
[[Категория:HOWTO]] | [[Категория:HOWTO]] | ||
{{Category navigation|title=Документация|category=Documentation|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Документация|category=Documentation|sortkey={{SUBPAGENAME}}}} | ||
{{Category navigation|title=Консольные утилиты|category=Консольные утилиты|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Консольные утилиты|category=Консольные утилиты|sortkey={{SUBPAGENAME}}}} | ||
Версия от 20:30, 29 сентября 2023
FFmpeg - библиотека для преобразования, воспроизведения, потоковой передачи и обработки аудио и видео.
Avconv/FFmpeg
Изначально был проект FFmpeg. Между разработчиками произошел конфликт, проект раскололся на два проекта FFmpeg и Libav (Avconv) - сторонники FFmpeg хотели сохранить скорость разработки в пользу большего количества функций, а сторонники Libav хотели улучшить состояние кода и уделить время разработке лучших API. Но на апрель 2020 года Avconv заброшен.
Для чего эта статья?
Когда я начал пользоваться Linux я искал различные GUI-утилиты для выполнения различных задач (установка программ, обновление системы, конвертация видео и пр.). Но, со временем мне показалось удобнее и практичнее выполнять их через консоль. Практически все конвертеры для Linux - оболочки для FFmpeg. Но GUI либо ограничивает их возможность, либо (как в случае с WinFF) реализован в Альтах некорректно (профили работают криво и конвертация не идет). В данной статье я хотел бы рассмотреть использование FFmpeg в ALT Linux.
Petr-Akhlamov--17:28, 29 сентября 2023 (UTC)
Возможности
Конвертирование видео
Для aac нужно указать параметр -strict experimental.
AVI
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/TVRips/Наши кассеты/Спокойной+ночи%2C+малыши+2001+%28Крот+и+зеленая+звезда%29_VHSRip+by+hukin07.mpg' -vcodec libx264 spok.avi
MP4
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Малыш и Карлсон/2 Карлсон вернулся.avi' -vcodec libx264 /home/petr/karlson.mp4
WMV
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Ролики/Первая попытка виндузятника подружиться с linux -D.avi' -vcodec wmv2 -acodec wmav2 linux.wmv
Webm в MP4
ffmpeg -i '55 ReactOS Осторожно, модерн. NTVDM сейчас.webm' -vsync vfr /home/petr/55.mp4
Конвертирование аудио
ffmpeg -i '/run/media/petr/Transcend/Документы/Музыка/Песни/Вадим Козин/Ленинград мой.mp3' /home/petr/leningrad.ogg
Где -i входной файл, а следующий путь выходной. Окончание выходного файла (mp3, wav, ogg, wma, aac, flac)
Для aac нужно указать параметр -strict experimental.
ffmpeg -i '/run/media/petr/Transcend/Документы/Музыка/Песни/Вадим Козин/Ленинград мой.mp3' -strict experimental /home/petr/leningrad.aac
Сжатие видео без потери качества
ffmpeg -i timemachinens.mp4 timemachinesszhat.mp4 -c:v libx264 -crf 18 -preset veryslow -c:a copy -strict experimental
Изменение разрешения видео
Я хочу скинуть на телефон видео. Экран там небольшой. Разрешение видео можно сжать, чтобы видео занимало меньше места.
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Фильмы/Отечественное кино/Котёнок (1996).avi' -strict experimental -s 320x240 /home/petr/Котенок.mp4
И в итоге видео становится с меньшим разрешением, но и с меньшим весом 1,6 Гб -> 218,4 мб. Весит меньше, а на маленьком экране не заметно разницы.
Обрезка видео
ffmpeg -t 00:05:00 -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Большой УХ.avi' -vcodec copy -acodec copy kozinaki.avi
-t - длина фрагмента, copy - копирование кодеков видео и аудио
Баг: когда вы делаете обрезку не сначала (-ss 00:02:00 -t 00:05:00), то вместо того, чтобы начать с 2-х минут и обрезать 5 минут видео, ffmpeg начинает c 2-х минут и обрезает 7 минут видео.
Извлечение аудиодорожки
Например, я хочу нарезать звуков из Карлсона типа "Так это вы таскали мои плюшки?!" или "Фу, как не культурно!". Я беру мультик, avi, и применяю следующую команду:
ffmpeg -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Малыш и Карлсон/2 Карлсон вернулся.avi' /home/petr/karlson.mp3
Получаю mp3-файл, аудиодорожку из мультфильма, открываю Audacity и вырезаю нужные моменты.
Хотя, если хотите, можно сделать это сразу. С помощью ключей -ss (начало) и -t (продолжительность) можно вырезать конкретную фразу.
ffmpeg -ss 0:07:27 -t 0:00:07 -i '/run/media/petr/TRANSCEND/Видео/Мультфильмы/Малыш и Карлсон/2 Карлсон вернулся.avi' /home/petr/karlson.mp3
Так мы получим фразу "Убедительно просим увести ваших детей от наших голубых экранов."
Конвертация видео в изображения
Например, мне нужны кадры "Кузи" с 4 минуты в течении 16 секунд:
1.Создайте каталог для картинок
mkdir ~ images
2.Переведите видео в изображения
ffmpeg -ss 0:04:00 -t 0:00:16 -i "/run/media/petr/TRANSCEND/Видео/Мультфильмы/Домовенок Кузя/1 Приключения домовенка.avi" -vf fps=10 /home/petr/images/kuzya%03d.png
Создание GIF из видео
Часть I
1.Создайте каталог для временных картинок
mkdir ~ frames
2. Сконвертируйте видео на маленькое разрешение и вырежьте приблизительный кусок (-ss - начало видео, -t - продолжительность.)
ffmpeg -ss 0:04:00 -t 0:00:16 -i "/run/media/petr/TRANSCEND/Видео/Ч_б мультфильмы/Советские 1920-е/Одна из многих (1927).mp4" -strict experimental -vf scale=320:240 /home/petr/ffout.mp4
3.Переведите видео в изображения
ffmpeg -i "/home/petr/ffout.mp4" -vf fps=10 /home/petr/frames/ffout%03d.png
Данная команда сконверитрует видео в изображения.
4.Перейдите в папку и если надо, удалите лишние кадры.
Часть II
Пакетное конвертирование
Предположим, вам нужно сконвертировать все видео *avi, *.mkv, *.mp4 и *.mov в каталоге с определенными параметрами.
Для этого создадим в текстовом редакторе следующий скрипт (где выделено жирным, вставьте нужные вам параметры):
#!/bin/sh mkdir conv for f in *.avi; do ffmpeg -i "$f" -acodec copy -strict experimental -s 1280x720 conv/"${f%.*}".mkv done for f in *.m{p4,kv,ov}; do ffmpeg -i "$f" -acodec copy -strict experimental -s 1280x720 conv/"${f%.*}".mkv done
Сохраним его как conv.sh и сделаем исполняемым:
chmod +x conv.sh
Переходим в каталог с файлами и выполняем данный скрипт.[1]