好的,我有一个周末项目的想法,我想将 flv/mp4 流直接转码为 mp3 格式。
我如何在 CentOS 服务器上通过 PHP/Apache 轻松做到这一点?(希望不像 FFMPEG 那样占用大量 CPU)任何想法都值得赞赏!
:)
答案1
首先,ffmpeg
这是为此选择的工具。它是 CPU 密集型的,因为这是视频或音频编码的本质。
您可以简单地从轨道中翻录流(假设原始 mp3 音频在流中)并保存它。我bash
之前曾将此代码片段用于文件目录*.flv
:
#!/bin/bash
for i in *.flv;
do ffmpeg -i "$i" -acodec copy `basename $i .flv`-`date +%H%M%S%N`.mp3;
done
如果流本身不是 mp3 格式,则需要重新编码。或者您可能需要不同的比特率等。此任务肯定会比前者消耗更多的 CPU:
ffmpeg -i "$file" -f mp3 -vn -acodec libmp3lame -ab 192 `basename $file .flv`-`date +%H%M%S%N`.mp3;
编辑:限制为一个核心:taskset 1 ffmpeg <rest of args>
--taskset
是 Debian 系统软件包的一部分util-linux
。您可能还想将renice
进程的优先级值设置为正范围内的某个值(听起来倒退了,但较低的值nice
= 更多的 CPU 时间)。一如既往man taskset
,,,man renice
。man nice
这就是您如何从 shell 使用 ffmpeg 执行您想要执行的操作 - 在 PHP 中实现留给读者作为练习。