February 9, 2021

Швейцарский нож для обработки мультимедиа

Исследование  такой области, как обработка мультимедиа, предполагает наличие  инструмента, позволяющего осуществлять самые разные манипуляции с аудио и  видео. В этой статье я познакомлю вас с одним таким волшебным  средством.

Это утилита ffmpeg, обладающая огромными возможностями по обработке мультимедиа, поэтому мы ограничимся перечислением некоторых из них.

Начну может и не с наиболее распространенных, но важных для исследователя сигналов функций.

Генерация синусоидального звукового сигнала

Да, с помощью ffmpeg  можно сгенерировать  аудиосигнал с заданной частотой, длительностью,  частотой дискретизации, битрейтом. Для этого можно применить команду:

ffmpeg -f lavfi  -i "sine=frequency=частота:sample_rate=частота_дискретизации:duration=длительность" -b:a битрейт имя_выходного_файла

Например,  чтобы создать синусоидальный сигнал частотой 1000 Гц, частотой  дискретизации 44100 Гц, битрейтом 128 кб/с, длительностью
10 с, потребуется набрать:

ffmpeg -f lavfi  -i "sine=frequency=1000:sample_rate=44100:duration=10"  -b:a 128k sound.wav

Разбить файл на несколько частей

Для  моделей машинного обучения в различных ситуациях может потребоваться   разбить сигнал на несколько фрагментов (например, для увеличения размера  выборки). В этом может помочь следующая команда:

ffmpeg -i путь_к_первоисточнику -f segment -segment_time время_одного_фрагмента шаблон_имени_фрагментов

Следующей командой разобьем файл s.wav на части по 10 с, с именами, начинающимися с символа s и цифрами порядкового номера во фрагменте, дополняемыми нулями до двух:

ffmpeg -i s.wav -f segment -segment_time 10 s%02d.wav

Теперь перечислим команды для осуществления наиболее распространенных действий с мультимедиа.

Просмотр информации о файле

Для этого можно воспользоваться следующей командой (флаг hide_banner предназначен для фильтрации не относящейся к файлу служебной информации):

ffmpeg -i путь_к_файлу -hide_banner

Конвертация видео в другой формат

Для конвертации видео из одного формата в другой набираем команду вида:

ffmpeg -i путь_к_первоисточнику путь_к_целевому_файлу

Следует отметить, что утилита сама определяет формат по расширению файлов.

Конвертация аудио в другой формат

Этот процесс происходит аналогично видео:

ffmpeg -i путь_к_первоисточнику путь_к_целевому_файлу

Получение аудиодорожки из видео

Для этого следует набрать команду:

ffmpeg -i путь_к_видеофайлу -vn путь_к_аудиофайлу

Также можно изменить битрейт в ходе извлечения аудио.

ffmpeg -i путь_к_видеофайлу -vn -ab битрейт путь_к_аудиофайлу

Обрезка файлов

Операция  применима и для видео-, и для аудиофайлов. Опять указываются входной и  выходной файл,  а также в зависимости от потребности - длительность  (флаг t), время старта (ss) и время окончания (to):

ffmpeg -i путь_к_первоисточнику -ss время_с -to время_с путь_к_целевому_файлу

или

ffmpeg -i путь_к_первоисточнику -ss время_с -t продолжительность путь_к_целевому_файлу

Вот такими командами ffmpeg обычно пользуюсь я. А какие аналогичные инструменты используете вы?