我想将 mp3 转换为较低的比特率,以及可能使用 Perl 将视频转换为 mp3。我查看了 ffmpeg 模块,但它似乎不支持转换文件,我看到的唯一示例是从视频流中抓取图片。有没有办法在 Perl 中做到这一点而不使用 system() 来调用 ffmpeg?
5 回答
试过FFmpeg 模块吗?该transcode()
方法看起来会做你想做的事。
有一个名为的项目pacpl
可以进行各种音频和至少一些视频转换。查看源代码,它确实使用该system()
命令来运行第三方实用程序,例如ffmpeg
. 我有兴趣进行类似于您所询问的转换,并且我计划pacpl
自己尝试。
到目前为止,似乎还没有纯粹的 Perl 答案。所有方法都使用其他一些转换软件。这告诉我使用其他用 C 编写的程序可能更有效。
所以我会把问题转回给你:你不想使用的原因是什么system()
?
如果您在基于 unix 的平台上,我会考虑使用 Gstreamer。它具有 perl 绑定,并且设置用于转换音频视频数据的 Gstreamer 管道相当简单。
请参阅Gstreamer perl 绑定和将 ogg 转换为 mp3作为示例。
为什么要避免另一个过程?我有一个 Perl 脚本可以为我执行此操作,并且我为每个要转换的视频创建一个进程。这样我就可以同时转换多个视频,让我的 Perl 主程序做它需要做的任何事情。
你不需要使用系统,它会阻塞直到它完成。还有许多其他方式可以与外部进程进行通信。有关详细信息,请参阅perlipc文档。
有关与外部程序交互的方法列表,请参阅Perl backtics vs system vs exec的答案。如果您正在寻找该程序的 Perl 接口,我建议您查看CPAN。