2009-09-10 3 views
17

PHP에서 웹 사이트에 업로드 된 MP3 파일을 30 초 (또는 다른 길이)로 자동자를 수있는 방법이 있습니까? 그렇지 않은 경우, 동일한 효과를 얻기 위해 (사용자에게 투명하게) 통합 될 수있는 우수한 제 3 자 서비스가 있습니까?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

는/우분투는 mpgtx를 설치하려고 :

apt-get install mpgtx 

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

난 당신이 너무 다른 좋은 리눅스 배포판에서 mpgtx 사용할 수 발견, 아니면 그냥 소스에서 설치할 수 있습니다 확신합니다.

2

MP3 클래스와 mpgtx로 일부 mp3를 처리하는 데 문제가있었습니다. 가장 좋은 옵션은 내가 생각하는 ffmpeg입니다. This page에는 ffmpeg로 미디어 파일을 분할하는 좋은 예가 있습니다.

3

나는 MP3 파일의 30 초 클립을 즉시 출력하는 스크립트를 작성했습니다. 파일을 저장하려는 경우 클래스/라이브러리를 사용하는 다른 옵션 중 하나가 가장 적합 할 것입니다. 그러나 미리보기를 재생/다운로드하고 싶다면 즉시 작동하는 것이 좋습니다. 그것은 확실히 당신에게 하드 드라이브 공간을 저장합니다.

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

뭔가가 getID3의 lib에 변경된 경우 알거나 don'y '당신의 코드 버그 : id3_info 배열에는 길이 요소가 없습니다. playtime_string이어야합니다. – latata

+0

링크가 끊어졌습니다. –

+0

링크가 수정되었습니다. 지금 가는게 좋을거야. –

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

+0

@Antony, LGPL은 매우 유연하며 라이브러리 자체에서 무언가를 변경하지 않으면 패키지와 함께 라이선스 텍스트 파일을 배포하는 것 외에는 특별한 작업을 수행 할 필요가 없습니다. 그리고 상업용 프로젝트에서도 사용할 수 있습니다. –

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

관련 문제