Soft/FFmpeg: различия между версиями
Konoos56 (обсуждение | вклад) м (Убрал пример с исправленной давно опцией -strict experimental, добавил несколько правок.) |
Konoos56 (обсуждение | вклад) м (Добавил коментарий к опции -crf) |
||
Строка 51: | Строка 51: | ||
===Сжатие видео без потери качества=== | ===Сжатие видео без потери качества=== | ||
ffmpeg -i "/run/media/input.mp4" -crf 18 -preset veryslow -c:a copy "/home/output.mp4" | ffmpeg -i "/run/media/input.mp4" -crf 18 -preset veryslow -c:a copy "/home/output.mp4" | ||
crf 18 — переменный биттрейт. Если указать более низкий CRF, файл будет большего размера с лучшим визуальным качеством. | |||
* 18 — часто считается сжатием «без визуальных потерь» | |||
* 23 — считается стандартом. | |||
Какие пресеты скорости можно использовать: (Если не указать будет использоваться "-preset medium") | Какие пресеты скорости можно использовать: (Если не указать будет использоваться "-preset medium") |
Версия от 17:25, 10 июля 2024
FFmpeg | |
---|---|
Разработчик(и) | Фабрис Беллар |
Первый выпуск | 2000 |
Лицензия | LGPLv2.1+ |
Сайт | ffmpeg.org |
FFmpeg - библиотека для преобразования, воспроизведения, потоковой передачи и обработки аудио и видео.
Avconv/FFmpeg
Изначально был проект FFmpeg. Между разработчиками произошел конфликт, проект раскололся на два проекта FFmpeg и Libav (Avconv) - сторонники FFmpeg хотели сохранить скорость разработки в пользу большего количества функций, а сторонники Libav хотели улучшить состояние кода и уделить время разработке лучших API. Но на апрель 2020 года Avconv заброшен.
Установка
$ su - # apt-get install ffmpeg
Возможности
Конвертирование видео
AVI
ffmpeg -i "/run/media/input.mkv" "/home/output.avi" ffmpeg -i "input.mkv" "output.avi" #Для работы с одним файлом в текущем каталоге.
MP4
ffmpeg -i "/run/media/input.mkv" "/home/output.mp4" ffmpeg -i "input.mkv" "output.mp4" #Для работы с одним файлом в текущем каталоге.
WMV
ffmpeg -i "/run/media/input.mkv" "/home/output.wmv" ffmpeg -i "input.mkv" "output.wmv" #Для работы с одним файлом в текущем каталоге.
Webm в MP4
ffmpeg -i "/run/media/input.mkv" "/home/output.mp4" ffmpeg -i "input.mkv" "output.mp4" #Для работы с одним файлом в текущем каталоге.
Конвертирование аудио
ffmpeg -i "/run/media/input.mp3" "/home/output.ogg"
Где -i входной файл, а следующий путь выходной. Окончанием выходного файла может быть любой аудио-формат.
Сжатие видео без потери качества
ffmpeg -i "/run/media/input.mp4" -crf 18 -preset veryslow -c:a copy "/home/output.mp4"
crf 18 — переменный биттрейт. Если указать более низкий CRF, файл будет большего размера с лучшим визуальным качеством.
- 18 — часто считается сжатием «без визуальных потерь»
- 23 — считается стандартом.
Какие пресеты скорости можно использовать: (Если не указать будет использоваться "-preset medium")
- -preset ultrafast: Самый быстрый пресет, но с наихудшим качеством.
- -preset superfast: Быстрый, но с небольшим снижением качества.
- -preset veryfast: Быстрый, с небольшим снижением качества.
- -preset faster: Быстрый, с небольшим снижением качества.
- -preset fast: Достаточно быстрый, с небольшим снижением качества.
- -preset medium: Средняя скорость, среднее качество.
- -preset slow: Достаточно медленный, с улучшенным качеством.
- -preset slower: Медленный, с хорошим качеством.
- -preset veryslow: Самый медленный, но с наилучшим качеством.
Изменение разрешения видео
ffmpeg -i "/run/media/input.mkv" -s 320x240 "/home/output.mp4"
Обрезка видео
ffmpeg -i "/run/media/input.mkv" -t 00:05:00 -c copy "/home/output.mp4" -ss
- Указывает начало отрезка видео, с которого начинается обработка.
Например -ss 00:00:10 начнет обработку с 10-й секунды видео. -t
- Указывает длительность отрезка видео, который будет обработан.
- Например, -t 00:00:30 будет обрабатывать первые 30 секунд видео.
-ss 0:07:27 -t 0:00:07
- Используя эти две опции совместно можно вырезать нужный отрезок видео или звука.
-c copy
- Копирование видео, аудио и субтитров без конвертирования.
Извлечение аудиодорожки
ffmpeg -i "/run/media/input.mkv" "/home/output.aac"
Конвертация видео в изображения
Например, мне нужны кадры "Кузи" с 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]