有没有办法在PHP上自动将上传到网站的MP3修剪到30秒(或其他长度)?如果没有,是否有任何良好的第三方服务可以集成(对用户透明)以达到同样的效果?
感谢。
答案 0 :(得分:20)
您可以在PHPClasses上试用MP3 Class。它具有以下示例:
require_once './class.mp3.php';
$mp3 = new mp3;
$mp3->cut_mp3('input.mp3', 'output.mp3', 0, -1, 'frame', false);
在这种情况下,'frame'可以用'second'代替,以便在时间范围内进行剪切。
答案 1 :(得分: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 :(得分:2)
在Debian / ubuntu中尝试安装mpgtx:
apt-get install mpgtx
mptsplit input.mp3 [00:00:00-00:00:30] -o output.mp3
我相信你也会在其他精美的Linux发行版中找到mpgtx,或者只是从源代码安装。
答案 3 :(得分:2)
我在使用MP3 Class和mpgtx处理一些mp3时遇到了问题。我认为最好的选择是ffmpeg。 This page有一些关于使用ffmpeg分割媒体文件的好例子。
答案 4 :(得分:1)
我使用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)
。
答案 5 :(得分:0)
https://github.com/falahati/PHP-MP3
PHP-MP3是一个用于读取和操作MPEG音频的简单库 (MP3)。
安装:
composer require falahati/php-mp3:dev-master
剪切MPEG音频:
\falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3");
答案 6 :(得分: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