2009-09-10 27 views
17

PHPでウェブサイトにアップロードされたMP3を30秒(またはその他の長さ)に自動的にトリミングする方法はありますか?そうでない場合、同じ効果を達成するために(ユーザーに透過的に)統合できる良いサードパーティのサービスはありますか?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); 

この場合、「フレーム」は、時間枠でカットをベースにするために「秒」で置き換えることができます。 Debianに

2

/Ubuntuはmpgtxをインストールしてみてください:

apt-get install mpgtx 

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

私はあなたがあまりにも他の罰金のLinuxディストリビューションで利用可能なmpgtxを見つけるか、単にソースからインストールすると確信しています。

2

MP3クラスとmpgtxの両方でいくつかのmp3を処理する際に問題が発生しました。ここで最高のオプションは私が思うffmpegです。 This pageにはffmpegでメディアファイルを分割する良い例がいくつかあります。

3

私は、オンザフライでMP3ファイルの30秒クリップを出力するスクリプトをまとめました。ファイルを保存する場合は、クラス/ライブラリを使用する他のオプションの1つが最適でしょう。しかし、プレビューを再生/ダウンロードしたいだけなら、オンザフライでの方が良いかもしれません。それは間違いなくハードドライブのスペースを節約します。

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配列にはlength要素はありません。 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

関連する問題