FFmpeg

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, поскольку все, что нам нужно, можно найти в стандартном репозитарии. Для того, чтобы установить этот инструментарий, выполните следующие действия:

  1. Откройте терминальное окно

  2. Если нужно, то с помощью команды su перейдите в режим суперпользователя root (если вместо root вы используете sudo, то просто добавьте sudo перед командой установки, указанной ниже)

  3. Выполните следующую команду:

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” # без звука