使用PHP在服务器上合并/连接MP3

使用PHP在服务器上合并/连接MP3,php,mp3,Php,Mp3,我有一个网站,将托管小MP3文件 我想创建一个实用程序,将允许我结合起来创建一个单一的mp3文件的mp3文件 我对PHP有点陌生,但对编程并不陌生 理想情况下,我会有一个函数,让我指定一个起始文件,然后将第二个文件附加到现有文件中 function appendMP3(originalMP3, newChunk){ originalMP3 = originalMP3 + newChunk; return newMP3 } compilation = append(compilato

我有一个网站,将托管小MP3文件

我想创建一个实用程序,将允许我结合起来创建一个单一的mp3文件的mp3文件

我对PHP有点陌生,但对编程并不陌生

理想情况下,我会有一个函数,让我指定一个起始文件,然后将第二个文件附加到现有文件中

function appendMP3(originalMP3, newChunk){
   originalMP3 = originalMP3 + newChunk;
   return newMP3
}

compilation = append(compilaton, "sound.mp3");

我从哪里开始?是否有任何现有资源?

如果您可以在您的环境中从PHP中访问shell,我只需要调用shell(使用)并使用

我建议看一下PHP fopen函数。如果将两个MP3文件连接起来就像将位串在一起一样简单,那么您应该能够使用fopen(不要忘记二进制的“b”标志)和fwrite从一个文件读入数据并将其附加到另一个文件。

不确定它的工作效果如何,但本博客可能会对您有所帮助


此外,根据它所在的服务器,您可能可以访问诸如使用system()调用之类的工具。

有一个名为的库。它能够将多个MP3文件合并为一个文件,尽管我从未使用过此功能。在getID3的SourceForge站点上有一个演示。它似乎可以在不使用任何命令行系统调用的情况下工作

我使用这个库从各种媒体格式获取长度和其他数据。它就像一个符咒。但是,如前所述,我还没有测试其中的CombineMultiple3sTo()函数


你应该测试它,就好像它对你有用一样。它比LAME(在我看来,LAME功能强大,但使用起来相当复杂)简单得多。

它不是那么简单,你需要从声音流的末尾去掉IDv3标签等。。。另外,如果它们的比特率不同,您可能会遇到一些小问题。@gnarf:在我开始进行Drupal文件上传之前,我遇到了b/c方面的麻烦,我甚至从未听说过IDv3标记。或者充其量,我听说了他们,然后就忘了。关于字节率,我将是网站管理员,我可以要求它在相同的比特率。我需要弄清楚最优利率是多少……我想试试这个。如果编码器设置匹配,那么这可能会工作,并且是一个非常轻量级的解决方案。我想我应该去做一些关于最佳压缩和编码设置的研究?嗯……这是个很好的问题,伙计+1感谢所有快速回复。我将评估其中的每一项。不幸的是,我不得不回到我的日常工作…@Scott我知道这是一个老问题,但仍然是:你是如何解决这个问题的?使用Sox和exec作为例外答案?这也是我唯一能找到的。让我紧张的是,开发它的人说它会很慢,而且会占用大量的记忆。也许不管发生什么事情都会很慢,而且会占用大量内存。我不知道,当你使用php做一些非php的事情时,“缓慢且内存密集”是绝对不可避免的。我的建议是-使用它,我做,它的工作,我有我的托管戈达迪。我以前从未真正弄乱过Linux。我可以学习,如果我需要的话,它是有效的。你知道戈达迪会允许你用什么吗?