我可以在没有系统调用的情况下在Perl脚本中使用ffmpeg吗?

时间:2009-04-28 13:42:02

标签: perl video audio ffmpeg

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

5 个答案:

答案 0 :(得分:2)

试过了the FFmpeg moduletranscode()方法看起来会做你想做的事。

答案 1 :(得分:0)

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

请参阅Gstreamer perl bindings and converting ogg to mp3作为示例。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

为什么要避免另一个进程?我有一个Perl脚本,它为我做这个,我为每个要转换的视频分叉一个进程。这样我就可以同时转换几个视频,并让我的主Perl程序做任何其他需要做的事情。

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

答案 4 :(得分:0)

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