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