我有一个 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);
除了转换为 ASCII 编码的二进制文件是无用的,只会使事情变得更加复杂(我不知道有任何程序可以读取这种格式),MIDI 包含事件(音符、乐器等),而MP3 文件包含压缩的采样声音。因此,要将 MIDI 转换为 MP3,您需要使用合成器从 MIDI 源生成采样声音,然后将采样音频数据压缩为 MP3 格式。
要将 MIDI 合成为音频,您可以查看诸如 Timidity++ (http://timidity.sourceforge.net/) 之类的东西。要将音频压缩为 MP3,您可以使用 LAME (http://lame.sourceforge.net/)。这两个程序都可以在许多 Linux 发行版上作为可安装包找到(在 Ubuntu 上,包名称为 timidity 和 lame;两者都在 Universe 包存储库中)。
首先查看您将 MIDI 转换为二进制的情况。第二件事是你尝试将其直接转换为 mp3。
这件事是不可能这样的。 Mp3 是编码压缩格式,无法以这种方式创建。有时甚至尝试在记事本中打开 mp3,然后不进行任何更改另存为,将 .mp3 放在末尾,使用新名称。将创建与原始数据相同的 mp3 扩展名的文件,但播放器不会播放该文件。
所以我的观点是你必须研究一种编码方法来将MIDI转换为mp3。
00111100 0001 0111111 00111011 0001 0111111 00111101 0001 0111111 00111110 0001 0111111
00111011 0001 0111111 00111101 0001 0111111 00111110 0001 0111111 00111100 0001 0111111
00111111 0010 0111111 00111011 0010 0111111 00111100 0001 0111111 00111111 0001 0111111
00111110 0001 0111111 00111011 0001 0111111 00111101 0001 0111111 00111011 0001 0111111
00111110 0001 0111111 00111111 0001 0111111