1

我有一个midi文件,将其转换为二进制

知道我想使用该二进制文件制作 mp3 我该怎么做。

我使用 php 作为我的脚本语言

这是我将midi转换为二进制的代码

$filename = "flute.mid";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
for ($i = 0; $i < strlen($contents); $i++) {
$binary = sprintf("%08d", base_convert(ord($contents[$i]), 10, 2));
echo $binary;
}
fclose($handle);
4

2 回答 2

1

看看你将 MIDI 转换为二进制的第一件事。您尝试将其直接转换为 mp3 的第二件事。

这种事情是不可能的。Mp3 是编码压缩格式,不能以这种方式创建。甚至有时尝试在记事本中打开一个 mp3,然后在不做任何更改的情况下,通过将 .mp3 放在末尾,以新名称另存为。将创建具有与原始数据相同的 mp3 扩展名的文件,但播放器不会播放。

所以我的观点是你必须研究一种编码方法来将 MIDI 转换为 mp3。

于 2013-05-05T18:04:26.953 回答
1

除了转换为无用且只会使事情变得更加复杂的 ASCII 编码二进制之外(我不知道有任何程序可以读取这种格式),MIDI 包含事件(音符、乐器等),而 MP3文件包含压缩的采样声音。因此,要将 MIDI 转换为 MP3,您需要使用合成器从 MIDI 源生成采样声音,然后将采样音频数据压缩为 MP3 格式。

要将 MIDI 合成为音频,您可以查看诸如 Timidity++(http://timidity.sourceforge.net/)之类的内容。要将音频压缩为 MP3,您可以使用例如 LAME ( http://lame.sourceforge.net/ )。这两个程序都可以在许多 Linux 发行版上作为可安装包找到(在 Ubuntu 上,包名是timiditylame;两者都在 Universe 包存储库中)。

于 2013-04-29T08:41:19.477 回答