我可以在 Perl 脚本中使用 ffmpeg 而不需要系统调用吗?

问题描述 投票:0回答:5

我想将 mp3 转换为较低的比特率,并可能使用 Perl 将视频转换为 mp3。我查看了 ffmpeg 模块,但它似乎不支持转换文件,我看到的唯一示例是从视频流中抓取图片。有没有办法在 Perl 中做到这一点,而不使用 system() 调用 ffmpeg?

perl video audio ffmpeg
5个回答
2
投票

尝试过FFmpeg模块吗?

transcode()
方法看起来会做你想做的事。


1
投票

有一个名为

pacpl
的项目可以进行各种音频和至少一些视频转换。查看源代码,它确实使用
system()
命令来运行第三方实用程序,例如
ffmpeg
。我有兴趣进行与您询问的类似的转换,并且我计划亲自尝试
pacpl

到目前为止,似乎还没有纯粹的 Perl 答案。所有方法都使用一些其他转换软件。这告诉我使用用 C 编写的其他程序可能会更有效。

所以我会把问题转回给你:你不想使用

system()
的原因是什么?


0
投票

为什么要避免另一个过程?我有一个 Perl 脚本可以为我执行此操作,并且我为每个要转换的视频分叉一个进程。这样我就可以同时转换多个视频,并让我的 Perl 主程序执行它需要执行的任何其他操作。

您不需要使用系统,它会阻塞直到完成。还有许多其他方法可以与外部进程进行通信。有关详细信息,请参阅 perlipc 文档。


0
投票

请参阅 Perl backtics vs system vs exec 的答案,获取与外部程序交互的方法列表。如果您正在寻找该程序的 Perl 接口,我建议您查看 CPAN


0
投票

如果您使用的是基于 UNIX 的平台,我会考虑使用 Gstreamer。它具有 Perl 绑定,并且设置用于转换音频视频数据的 Gstreamer 管道相当简单。

请参阅 Gstreamer perl 绑定和将 ogg 转换为 mp3 作为示例。

© www.soinside.com 2019 - 2024. All rights reserved.