2009-09-10 99 views
17

有什么方法可以自动修剪上传到网站的MP3到30秒(或其他长度)在PHP中?如果没有,是否有任何可以集成的良好第三方服务(对用户透明)以达到相同的效果?在PHP中自动修剪mp3

谢谢。

回答

19

您可以尝试PHPClasses上的MP3 Class。它提供了以下示例:

require_once './class.mp3.php'; 
$mp3 = new mp3; 
$mp3->cut_mp3('input.mp3', 'output.mp3', 0, -1, 'frame', false); 

在这种情况下,该“框架”可以用“第二”的取代,以基部的时间帧上的切口。

2

在于Debian/Ubuntu尝试安装mpgtx

apt-get install mpgtx 

mptsplit input.mp3 [00:00:00-00:00:30] -o output.mp3 

我敢肯定,你会发现在其他精细Linux发行版mpgtx获得过,或者直接从源只安装。

2

我在用MP3 Class和mpgtx处理一些mp3时遇到了问题。我认为最好的选择是ffmpeg。 This page在使用ffmpeg分割媒体文件方面有一些很好的例子。

3

我把一个脚本输出一个30秒的MP3文件在飞行中的脚本。如果你想保存文件,使用类/库的其他选项之一可能是最好的。但是,如果您只想播放/下载预览,则可能会更好。它一定会为您节省硬盘空间。

检查出来http://www.stephenwalcher.com/2013/06/17/how-to-extract-and-play-part-of-an-mp3-in-php/

下面是代码,但更深的解释可以在我的博客上找到。

$getID3 = new getID3(); 

$id3_info = $getID3->analyze($filename); 

list($t_min, $t_sec) = explode(':', $id3_info['playtime_string']); 
$time = ($t_min * 60) + $t_sec; 

$preview = $time/30; // Preview time of 30 seconds 

$handle = fopen($filename, 'r'); 
$content = fread($handle, filesize($filename)); 

$length = strlen($content); 

if (!$session->IsLoggedIn()) { 
    $length = round(strlen($content)/$preview); 
    $content = substr($content, $length/3 /* Start extraction ~10 seconds in */, $length); 
} 

header("Content-Type: {$id3_info['mime_type']}"); 
header("Content-Length: {$length}"); 
print $content; 
+2

或我don'y知道某些东西在getID3 LIB改变它'您的代码中存在一个错误:id3_info数组中没有长度元素。它应该是playtime_string。 – latata 2013-01-30 16:00:31

+0

链接被打破。 – 2018-01-10 12:36:06

+0

修复了链接。现在应该很好走。 – 2018-01-24 03:45:18

0

我用PHP MP3为我的项目。

<?php 
//Extract 30 seconds starting after 10 seconds. 
$path = 'path.mp3'; 
$mp3 = new PHPMP3($path); 
$mp3_1 = $mp3->extract(10,30); 
$mp3_1->save('newpath.mp3'); 
?> 

对于你的情况,你可以使用extract(0,30)extract(30,60)

+0

这很好,因为我知道它可以在LGPL下使用,我不认为它比其他许可更灵活。 – Antony 2017-09-04 14:12:09

+0

@Antony,LGPL非常灵活,除非你改变库本身的东西,除了使用包分发许可文本文件外,你不需要做任何特别的事情。你也可以在商业项目中使用它。 – 2017-09-15 15:04:38

0

https://github.com/falahati/PHP-MP3

PHP-MP3是用于读取和处理MPEG音频 (MP3)一个简单的库。

安装:

composer require falahati/php-mp3 

剪切MPEG音频:

\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3"); 
0
//Merge two files 
$path = 'path.mp3'; 
$path1 = 'path1.mp3'; 
$mp3 = new PHPMP3($path); 

$newpath = 'path.mp3'; 
$mp3->striptags(); 

$mp3_1 = new PHPMP3($path1); 
$mp3->mergeBehind($mp3_1); 
    $mp3->striptags(); 

$mp3->setIdv3_2('01','Track Title','Artist','Album','Year','Genre','Comments','Composer','OrigArtist','Copyright','url','encodedBy'); 

$mp3->save($newpath); 

//Extract 30 seconds starting after 10 seconds. 
    $path = 'path.mp3'; 
$mp3 = new PHPMP3($path); 
$mp3_1 = $mp3->extract(10,30); 
$mp3_1->save('newpath.mp3'); 

//Extract the exact length of time 
$path = 'path.mp3'; 
$mp3 = new PHPMP3($path); 
$mp3->setFileInfoExact(); 
echo $mp3->time; 
//note that this is the exact length! 

来源:https://github.com/thegallagher/PHP-MP3/blob/master/README.md