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