Я бы хотел конвертировать mp3 в более низкие битрейты, а также, возможно, конвертировать видео в mp3 с помощью Perl. Я просмотрел модуль ffmpeg, но не кажется, что он поддерживает преобразование файлов, единственный пример, который я видел, - это захват изображений из видеопотока. Есть ли способ сделать это в Perl, используя систему() для вызова ffmpeg?Могу ли я использовать ffmpeg внутри скрипта Perl без системного вызова?
ответ
Пробовано the FFmpeg module? Метод transcode()
выглядит так, как будто он будет делать то, что вы хотите.
Если вы находитесь на платформе, основанной на UNIX, я бы изучил использование Gstreamer. Он имеет привязки perl, и довольно просто настроить конвейер Gstreamer для преобразования аудио-видеоданных.
См. Например, Gstreamer perl bindings and converting ogg to mp3.
Существует проект под названием pacpl
, который выполняет широкий спектр аудио и по меньшей мере некоторые видеоконверсии. Рассматривая источник, он использует команду system()
для запуска сторонних утилит, таких как ffmpeg
. Я заинтересован в том, чтобы делать конверсии, похожие на то, о чем вы просили, и я планирую попробовать pacpl
.
До сих пор кажется, что нет чистых ответов на Perl. Все методы используют другое программное обеспечение для преобразования. Который говорит мне, что, вероятно, более эффективно использовать какую-то другую программу, написанную на C.
Итак, я вернул бы вопрос к вам: в чем причина, по которой вы не хотите использовать system()
?
Почему вы хотите избежать другого процесса? У меня есть сценарий Perl, который делает это для меня, и я развиваю процесс для каждого видео, которое я хочу преобразовать. Таким образом, я могу одновременно конвертировать несколько видеороликов, и моя главная программа Perl сделает все, что нужно.
Вам не нужно использовать систему, которая блокируется до ее завершения. Существует много других способов общения с внешними процессами. Подробнее см. Документацию perlipc.
См. Ответы на вопросы Perl backtics vs system vs exec для просмотра способов взаимодействия с внешними программами. Если вы ищете интерфейс Perl для этой программы, я бы предложил посмотреть на CPAN.
Вы не хотите использовать систему, потому что она блокируется, пока она не будет выполнена. Это может быть долгое время, если вы конвертируете видео. –