質問
PHPでWebサイトにアップロードされたMP3を30秒(またはその他の長さ)に自動的にトリミングする方法はありますか?そうでない場合、同じ効果を達成するために(ユーザーに対して透過的に)統合できる優れたサードパーティサービスはありますか?
ありがとう。
解決
PHPClassesで MP3クラスを試すことができます。次の例が特徴です:
require_once './class.mp3.php';
$mp3 = new mp3;
$mp3->cut_mp3('input.mp3', 'output.mp3', 0, -1, 'frame', false);
この場合、「frame」を「second」に置き換えて、時間枠に基づいてカットを作成できます。
他のヒント
すぐに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;
Debian / ubuntuで mpgtx をインストールしてみてください:
apt-get install mpgtx
mptsplit input.mp3 [00:00:00-00:00:30] -o output.mp3
他の優れたLinuxディストリビューションでもmpgtxを利用できるか、ソースからインストールするだけです。
MP3クラスとmpgtxの両方でいくつかのmp3を処理する際に問題が発生しました。ここでの最良の選択肢は、私が思うにffmpegです。 このページには、ffmpegでメディアファイルを分割する良い例がいくつかあります。 。
プロジェクトに 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)
を使用できます。
//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!
source: https://github.com/thegallagher/PHP -MP3 / blob / master / README.md
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");