2

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

4

5 回答 5

2

试过FFmpeg 模块吗?该transcode()方法看起来会做你想做的事。

于 2009-04-28T20:12:26.447 回答
1

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

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

所以我会把问题转回给你:你不想使用的原因是什么system()

于 2009-04-28T20:43:31.333 回答
0

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

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

于 2009-04-28T20:16:53.363 回答
0

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

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

于 2009-04-29T14:29:29.073 回答
0

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

于 2009-04-29T14:40:57.640 回答