Могу ли я использовать ffmpeg из скрипта Perl без системного вызова? - PullRequest
2 голосов
/ 28 апреля 2009

Я бы хотел конвертировать mp3 в более низкие битрейты, а также, возможно, конвертировать видео в mp3, используя Perl. Я посмотрел на модуль ffmpeg, но, похоже, он не поддерживает преобразование файлов, единственный пример, который я видел, это захват изображений из видеопотока. Есть ли способ сделать это в Perl без использования system () для вызова ffmpeg?

Ответы [ 5 ]

2 голосов
/ 29 апреля 2009

Пробовали модуль FFmpeg ? Метод transcode() выглядит так, как будто он будет делать то, что вы хотите.

0 голосов
/ 29 апреля 2009

См. Ответы на Perl backtics vs system против exec для получения списка способов взаимодействия с внешними программами. Если вы ищете Perl-интерфейс для этой программы, я бы посоветовал посмотреть CPAN .

0 голосов
/ 29 апреля 2009

Почему вы хотите избежать другого процесса? У меня есть Perl-скрипт, который делает это для меня, и я разрабатываю процесс для каждого видео, которое я хочу конвертировать. Таким образом, я могу конвертировать несколько видео одновременно и сделать так, чтобы моя основная программа на Perl делала все, что ей нужно.

Вам не нужно использовать систему, которая блокирует, пока это не будет сделано. Есть много других способов общения с внешними процессами. Подробнее см. Документацию perlipc .

0 голосов
/ 29 апреля 2009

Существует проект под названием pacpl, который выполняет широкий спектр аудио и, по крайней мере, некоторые преобразования видео. Глядя на источник, он использует команду system() для запуска сторонних утилит, таких как ffmpeg. Я заинтересован в том, чтобы сделать конверсии, аналогичные тем, о которых вы спрашивали, и я планирую попробовать pacpl.

Пока что похоже, что нет ответов на чистом Perl. Все методы используют другое программное обеспечение для преобразования. Что говорит мне, что, вероятно, более эффективно использовать какую-то другую программу, написанную на C.

Так что я хотел бы вернуться к вам: почему вы не хотите использовать system()?

0 голосов
/ 29 апреля 2009

Если вы работаете на платформе Unix, я бы хотел использовать Gstreamer. Он имеет привязки perl, и довольно просто настроить конвейер Gstreamer для преобразования аудио-видео данных.

См. Привязки Perl Gstreamer и преобразование ogg в mp3 в качестве примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...