如何在 CentOS 上将 FLV 视频直接转码为 mp3?

如何在 CentOS 上将 FLV 视频直接转码为 mp3?

好的,我有一个周末项目的想法,我想将 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 reniceman nice

这就是您如何从 shell 使用 ffmpeg 执行您想要执行的操作 - 在 PHP 中实现留给读者作为练习。

相关内容