我有一个midi文件,我想在网页上播放该文件,目前我正在使用midi.js播放器播放,但它不能在移动浏览器上工作。
请指导我如何播放该文件,否则我如何播放midi或将其转换为mp3
我的代码
$data = fopen ($midi, 'rb');
$size= filesize($midi);
$contents = fread ($data, $size);
fclose($data);
$encoded= base64_encode($contents);
$encode = "'data:audio/midi;base64,".$encoded."=='";
最后传递base64值给midi.js
猜你在linux机器上…最简单的方法是小心翼翼地使用管道输出ffmpeg:
timidity song.mid -Ow -o - | ffmpeg -i - -acodec libmp3lame -ab 64k song.mp3
如果您使用的是Linux,请使用avconv而不是ffmpeg,因为ffmpeg已被弃用:
timidity input.midi -Ow -o - | avconv -i - -acodec libmp3lame -b 64k output.mp3
或蹩脚的:
timidity -Ow -o - input.midi | lame - output.mp3
编辑
FFmpeg从未被"弃用"
FluidSynth + FFmpeg
替代胆怯:
sudo apt install fluidsynth ffmpeg
fluidsynth -a alsa -T raw -F - /usr/share/sounds/sf2/FluidR3_GM.sf2 MIDI_sample.mid |
ffmpeg -f s32le -i - MIDI_sample.mp3
在Ubuntu 20.04, FluidSynth 2.1.1-2和这个MIDI文件上测试:https://en.wikipedia.org/wiki/File:MIDI_sample.mid
相关:https://softwarerecs.stackexchange.com/questions/10915/automatically-turn-midi-files-into-wav-or-mp3/76955 # 76955
我遇到了MIDI.js不能在移动浏览器中工作的类似问题。原来我已经包含了ogg文件,但是缺少了mp3文件(由于某种原因,MIDI.js只提供了synth_drum的ogg版本)。
所有128个通用MIDI声音的乐器文件可以在https://github.com/gleitz/midi-js-soundfonts找到。
首先安装胆怯包,在Ubuntu中只需运行:
sudo apt-get install -y timidity
然后执行以下命令:
timidity input.mid -Ow -o out.mp3
您可以将格式更改为WAV
或其他格式
这对我有用:
timidity my_midi_file.mid -Ow -o - | lame - -b 64 my_converted_midi.mp3
运行于ubuntu 18.04
Audacity是一个开源的音频转换器。