FFmpeg
#ffmpeg
ffmpeg
kdegraphics-thumbnailers
kdegraphics-thumbnailers,kdemultimedia-ffmpegthumbs,kffmegthumbnailer
Создание миниатюр графических файлов для приложений KDE
dolphin_ffmpegthumbs
Мне нужно на каждом видео файле картинка из ролика. библиотека ffmpegthumbs всегда решала этот вопрос
ffmpeg
Получаем информацию о файле
- ffmpeg -i file.mp4
Тут все просто, вводим путь к файлу, получаем информацию о нем: кодеки, количество дорожек, разрешение, битрейт и фреймрейт. Мы указываем пути к файлам флагом -i (input):
- -i file1.mp4 -i file2.mp4.
Конвертируем в mp4
Допустим у нас есть сайт, на котором видео проигрывалось через Flash плеер. Мы хотим поменять его на HTML5 Video. Для этого конвертируем видео файлы на сервере из flv формата в mp4.
- ffmpeg -i flashvideo.flv -vcodec libx264 -acodec libvo_aacenc output.mp4
По сравнению с предыдущей командой добавилось три поля.
-
output.mp4 — путь к сконвертированному файлу.
-
-vcodec libx264 — указываем какой видео кодек хотим получить. В нашем случае это H264, который поддерживается большинством браузеров.
-
-acodec libvo_aacenc — аудио кодек AAC.
Список поддерживаемых вашим ffmpeg кодеков можно получить через ffmpeg -codecs.
Вместо -vcodec встречается запись -codec:v и -c:v.
Если не указать кодеки для конвертации ffmpeg -i flashvideo.flv output.mp4, то ffmpeg установит дефолтные кодеки для формата файла на выходе.
При конвертации задают не только кодеки. Увеличим число настроек:
- ffmpeg -i flashvideo.flv -b:v 700k -r 25 -pix_fmt yuv420p -vcodec libx264
-b:a 128k -ar 44100 -acodec libvo_aacenc -y output.mp4
Мы установили битрейт для видео -b:v и аудио -b:a в 700 и 128 кб/c.
Битрейт можно обозначить другими флагами: -vb и -b для видео или -ab для аудио.
Оставшиеся три параметра — это фреймрейт -r 25 в кадрах в секунду,
цветовая модель YUV равная обычному значению yuv420p
и частота дискретизации звука 44100 Гц. Флаг -y нужен для перезаписи файла, если он уже существует.
Вырезаем фрагмент видео
- ffmpeg -ss 10 -t 20 -i source_video.mp4 -vcodec copy -acodec copy result.mp4
Флагом -ss указываем с какого момента исходного видео обрезаем, -t — продолжительность.
На выходе мы получим двадцати секундное видео, которое начнется с десятой секунды исходного.
Запись -ss 00:00:10.250 -t 00:00:20.120 пригодится для указания более точного промежутка времени.
До версии 2.1 FFmpeg в обоих случаях обрезал видео по ближайшему ключевому кадру. В новых версиях итоговое видео максимально близко к указанному интервалу.
Мы добавили -vcodec copy -acodec copy, чтобы сохранить кодеки исходного видео. Иначе ffmpeg перекодировал бы их в кодеки по умолчанию. Сейчас видео не перекодируется и команда выполнится быстро. Дальше упростим эту запись флагом -c copy.
Если расположить флаги -ss и -t после входящего видео, то итоговое видео будет таким же, но команда будет выполняться дольше. Флаги будут относиться к итоговому видео и FFmpeg будет декодировать фрагмент видео до -ss. В первом случае эта часть будет проигнорирована.
Флаг -t можно заменить на -to, указав вместо продолжительности конечную точку. Этот флаг нельзя применить к входящему видео:
- ffmpeg -ss 10 -i source_video.mp4 -to 30 -c copy result.mp4
Команда дала нам другой результат: тридцати секундное видео с десятой секунды исходного. Это произошло, потому что -to использовал временную шкалу result.mp4, тридцатая секунда на котором равна сороковой секунде source_video.mp4. Чтобы использовать исходную шкалу добавим флаг -copyts. Так мы получим такое же видео, как от первой команды:
- ffmpeg -ss 10 -i source_video.mp4 -to 30 -copyts -c copy result.mp4
Фильтры. Меняем разрешение
Один из самых мощных инструментов ffmpeg — фильтры. Они могут добавлять эффекты, накладывать разные видео друг на друга, сшивать несколько файлов в один.
Увидеть список установленных фильтров мы можем по команде ffmpeg -filters. Изменим с их помощью разрешение видео:
- ffmpeg -i source_video.avi -vf scale=640:480 source_preview.avi
Мы использовали флаг -vf, указав фильтр scale и разрешение 640:480. Этот фильтр может сохранять пропорции и вычислять разрешение динамически.
Объединение фильтров. Ускоряем воспроизведение
- ffmpeg -i source_video.mp4
-filter_complex “[0:v]setpts=0.5*PTS;[0:a]atempo=2.0” accelerated.mp4
Мы объединили несколько фильтров в один флагом filter_complex и получили ускоренный в два раза файл. Чтобы разобраться применим фильтры по одиночке.
- ffmpeg -i source_video.mp4 -vf setpts=0.5*PTS accelerated_video.mp4
Мы ускорили воспроизведение видео дорожки фильтром setpts. Однако аудиодорожка не изменилась, и файл получится той же продолжительности что и был: видео проиграется в 2 раза быстрее, а последний кадр будет висеть всю вторую половину файла. Если убрать аудио дорожку флагом -an, то длительность итогового файла будет определяться по видео дорожке и будет в два раза меньше исходной.
Наоборот, если нужна только ускоренное аудио без видео, воспользуемся фильтром atempo, а флагом vn уберем видео дорожку.
- ffmpeg -i source_video.mp4 -af atempo=2.0 -vn accelerated_audio.mp3
Добавив filter_complex и применив оба фильтра, мы ускорили файл целиком.
Граф фильтров применяет последовательность из нескольких фильтров к исходному файлу. Мы указали ускорение setpts для видео дорожки [0:v] и atempo для аудио [0:a]. С помощью комбинаций фильтров мы можем решить большинство задач по редактированию видео.
Склеиваем файлы в один
- ffmpeg -i input1.mp4 -i input2.mp4
-filter_complex “[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]”
-map “[v]” -map “[a]” -y output.mp4
Мы видим новый флаг map. Он указывает ffmpeg какие дорожки хотим получить в итоговом файле. Если в наших исходных видео файлах гарантировано одна видео и аудио дорожка, и столько же мы хотим получить на выходе, то флаг map не нужен. Другие примеры использования Map можно посмотреть на сайте ffmpeg.
Выполним ту же операцию другим методом:
-
ffmpeg -f concat -i join.txt output.mp4
-
ffmpeg -f concat -i list.txt -c copy output.mp4
В FFmpeg есть элементы, которые читают или записывают медиа в определенных форматах. Они называются демультиплексор и мультиплексор. -f concat — это демультиплексор, который принимает текстовый файл, со списком медиа файлов и склеивает их в один. Посмотреть другие элементы можно командой ffmpeg -formats.
Содержимое list.txt:
-
file ‘input1.mp4’
-
file ‘input2.mp4’
Такой метод удобен, если у нас много файлов и надо склеить их друг за другом. Он не перекодирует видео и работает быстрее первого метода.
Но первый метод применяется чаще. Во-первых, он может принять на вход видео с разными кодеками. Во-вторых, дает большую гибкость. Например, если нужна только часть первого видео, мы можем воспользоваться флагами -ss и -t. Обратите внимание, эти флаги действуют только на первый файл input1.mp4.
- ffmpeg -ss 5 -t 2 -i input1.mp4 -i input2.mp4
-filter_complex “[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]”
-map “[v]” -map “[a]” -y result.mp4
Водяной знак
Последний пример, который мы рассмотрим — это наложение водяного знака. Фильтр overlay принимает на вход координаты расположения водяного знака на итоговом видео.
Расположим водяной знак по центру.
Зная размер исходного видео и png картинки, можно вычислить координаты самим.
Например при видео 1280×720 и водяном знаке 200×200, положение по горизонтали x = (1280 - 200) / 2 = 540 и по вертикали y = (720 - 200) / 2 = 260.
Соответственно значение фильтра “overlay=540:260”.
Однако удобнее написать универсальную команду, чтобы ffmpeg посчитал все за нас.
Размер видео получим из параметров main_w и main_h, а водяного знака из overlay_w и overlay_h.
Далее ту формулу, по которой мы вычисляли координаты запишем в значение фильтра “overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2”.
Готово, мы получили команду для наложения водяного знака по центру:
- ffmpeg -i source_video.mp4 -i watermark.png
-filter_complex “overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2”
-codec:a copy video_protected.mp4
удаление звуковой дорожки в mp4
ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
удаление звуковой дорожки в mkv
Вы удаляете аудио с помощью флага -an.
ffmpeg -i example.mkv -c copy -an example-nosound.mkv
Вероятно, вы не хотите перекодировать видео (медленный и потерянный процесс), поэтому попробуйте:
ffmpeg -i [input_file] -vcodec copy -an [output_file]
вставка звуковой дорожки в mp4
ffmpeg -i input.mp4 -i input.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4
вставка звуковой дорожки в mkv или другой видеофайл
ffmpeg -i “videoFile.mp4” -i “audioFile.mp3” -shortest outPutFile.mp4
конвертировать видео без каких-либо ограничений ffmpeg
- ffmpeg -i video_origine.avi video_finale.mp4
ffmpeg_thumbnailer
FFmpeg thumbnailer
Создание миниатюр файлов видео с использованием библиотеки FFmpeg
ffmpeg_конвертер_команды
Конвертируйте видео файлы в вашей системе Linux с помощью FFmpeg.
Шаг 1
Откройте Терминал.
Шаг 2
Введите “ffmpeg -i” без кавычек.
Шаг 3
Введите имя файла MOV с указанием пути к файлу, например «/home/user/Desktop/sample.mov».
Шаг 4
Введите имя выходного файла MP4 с указанием пути к файлу назначения, например «/home/user/Desktop/sample.mp4». Вся команда в этом примере выглядит так: «ffmpeg -i /home/user/Desktop/sample.mov /home/user/Desktop/sample.mp4» без кавычек.
Шаг 5
Нажмите клавишу «Ввод», чтобы начать кодирование видео. Новый файл MP4 появится в папке, используемой в пути к целевому файлу, после завершения кодирования.
Шаг 6
Введите «выход» и нажмите «Enter», чтобы закрыть терминал после завершения преобразования видео. ** Converting video and audio ffmpeg ffmpeg -i input.mp4 output.avi ** ffmpegthumbnailer ffmpegthumbnailer для показа эскизов картинок,видео,pdf in ranger
Конвертирование файлов формата .mp3 в файлы форматов .wav и .ogg из командной строки
Установка
Так как мы для конвертации будем использовать командную строку, мы будем и устанавливать этот инструментарий из командной строки. Дистрибутив, которым я пользуюсь в примерах, основывается на последней стабильной версии Debian. Вам не потребуется добавлять какие-либо репозитарии в ваш файл /etc/apt/sources.list, поскольку все, что нам нужно, можно найти в стандартном репозитарии. Для того, чтобы установить этот инструментарий, выполните следующие действия:
-
Откройте терминальное окно
-
Если нужно, то с помощью команды su перейдите в режим суперпользователя root (если вместо root вы используете sudo, то просто добавьте sudo перед командой установки, указанной ниже)
-
Выполните следующую команду:
apt-get install mpg123 mpg321 vorbis-tools
Это все. Теперь давайте посмотрим, как пользоваться этим инструментарием. Конвертируем файлы .mp3 в .wav
Первое преобразование сделаем в формат .wav. Зачем использовать формат .wav? Первое и самое главное, файлы в формате .wav не сжаты и не имеют потерь, так что звук будет лучше. Единственный недостаток в том, что эти файлы намного больше. Таким образом, если у вас есть конкретный файл и вы хотите, чтобы качество звука сохранилось настолько высоким, насколько это возможно, то следует использовать формат .wav. Конечно, в данном случае мы преобразует файл того типа, в котором уже есть потери (.mp3), так что качество звука уже снижено. Но зачем снижать его дальше? Для того чтобы выполнить это преобразование, нужно использовать следующую команду:
mpg123 -w output_file.wav input_file.mp3
Где output_file — имя файла в формате .wav, который будет сконвертирован из файла с именем input_file в формате mp3. Итак, давайте сконвертируем, скажем, файл Rush_Tom_Sawyer.mp3 (“Приключения Тома Сойера”) в формат .wav. Это делается с помощью следующей команды:
mpg123 -w Rush_Tom_Sawyer.wav Rush_Tom_Sawyer.mp3
Конвертируем файлы .mp3 в .ogg
Формат .ogg является open source эквивалентом формата .mp3 и поддерживается многими плейерами. Формат .ogg является хорошим форматом, когда создаются сборники записей на CD (мне много лет и я все еще хочу сказать — сборники на кассете), поскольку вы сможете разместить больше файлов на CD, чем если бы вы использовали формат .wav. Команда для конвертации формата .mp3 в формат .ogg выглядит следующим образом:
mpg321 Input_File.mp3 -w raw && oggenc raw -o Output_file.ogg
Давайте сконвертируем тот же самый файл, который был преобразован в формат .wav. Команда преобразования в формат .ogg из формата .mp3 должна выглядеть следующим образом:
mpg321 Rush_Tom_Sawyer.mp3 -w raw && oggenc raw -o Rush_Tom_Sawyer.ogg
Запись звука с микрофона
Способ 1
Вы можете использовать sox для записи своего голоса, его можно установить из программного обеспечения Ubuntu Software Center. Просто введите соответствующее слово в приложении системы.
Или установите его с терминала с помощью этой команды:
- sudo apt-get install sox
Чтобы начать запись голоса, введите следующую команду:
- sox -t alsa default output.wav
output.wav — это имя создаваемого аудиофайла, вы можете переименовать его во все, что хотите.
Способ 2
Вы также можете использовать «arecord» для захвата входа микрофона. Его можно установить по той же схеме что и вариант выше, через Ubuntu Software Update.
Или с терминала с помощью этой команды:
- sudo apt-get install alsa-utils
Чтобы начать запись голоса, выполните следующую команду:
- iscord output.wav
Чтобы прервать запись, нажмите:
- CTRL + C.
Запись звука с микрофона в Linux
Утилита arecord поставляется вместе с набором утилит alsa-utils, которые используются для управления звуковой подсистемой ALSA.
Обычно она уже установлена в вашей системе, но если нет то вы можете ее очень просто установить.
Для установки в Ubuntu/Debian выполните:
- sudo apt install alsa-utils
Утилита arecord позволяет захватывать звук с микрофона в формате wav. Чтобы убедится что микрофон успешно распознается в системе наберите:
- arecord -l
Как видите, у нас есть один микрофон, теперь можно выполнить запись звука arecord linux. Для этого выполните команду передав ей в параметрах только имя файла для сохранения:
- arecord output.wav ___________________________________________
Если другие параметры не заданы arecord будет записывать одноканальный звук с частотой 8000 Гц и глубиной 8 бит. Запись звука arecord будет продолжаться пока вы не остановите ее сочетанием клавиш Ctrl+C.
Параметры записи можно настроить с помощью дополнительных опций, например:
-
arecord -f cd output_stereo.wav
-
arecord -r 16000 -f S16_LE output2.wav
Чтобы воспроизвести записанный фрагмент можно воспользоваться утилитой из того же пакета -
aplay linux:
- aplay output.wav
Запись видео при помощи ffmpeg
-
sh -c “ffmpeg -f alsa -i default -c:a libmp3lame -acodec mp3 -s 1920x1080 -f x11grab -i :0.0 -vcodec libx264 -preset ultrafast -s 1920x1080 screencast.mp4” # запись видео со звуком
-
sh -c “killall ffmpeg” # остановить запись
-
sh -c “ffmpeg -s 1920x1080 -f x11grab -i :0.0 -vcodec libx264 -preset ultrafast -s 1920x1080 screencast.mp4” # без звука