Automatically trimming an mp3 in PHP

前端 未结 7 2238
太阳男子
太阳男子 2020-12-04 22:15

Are there any ways to automatically trim an MP3 uploaded to a website to 30 seconds (or some other length) in PHP? If not, is there any good 3rd party services that could b

相关标签:
7条回答
  • 2020-12-04 22:55

    I put together a script that outputs a 30 second clip of an MP3 file on the fly. If you're looking to save the file, one of the other options using a class/library will probably be best. But, if you just want to play/download the preview, on the fly might be better. It will definitely save you hard drive space.

    Check it out at http://www.stephenwalcher.com/2013/06/17/how-to-extract-and-play-part-of-an-mp3-in-php/.

    Here's the code, but a deeper explanation can be found on my blog.

    $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;
    
    0 讨论(0)
  • 2020-12-04 22:58

    I used PHP MP3 for my project.

    <?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');
    ?>
    

    For your case you can use extract(0,30) or extract(30,60).

    0 讨论(0)
  • 2020-12-04 22:59

    You could try the MP3 Class on PHPClasses. It features the following example:

    require_once './class.mp3.php';
    $mp3 = new mp3;
    $mp3->cut_mp3('input.mp3', 'output.mp3', 0, -1, 'frame', false);
    

    In this case, the 'frame' can be substituted with 'second' to base the cut on a time-frame.

    0 讨论(0)
  • 2020-12-04 23:03

    https://github.com/falahati/PHP-MP3

    PHP-MP3 is a simple library for reading and manipulating MPEG audio (MP3).

    Install:

    composer require falahati/php-mp3:dev-master
    

    Cut MPEG Audio:

    \falahati\PHPMP3\MpegAudio::fromFile("old.mp3")->trim(10, 30)-saveFile("new.mp3");
    
    0 讨论(0)
  • 2020-12-04 23:09

    I had problems processing some mp3s with both MP3 Class and mpgtx. The best option here is ffmpeg I think. This page has some good examples on splitting media files with ffmpeg.

    0 讨论(0)
  • 2020-12-04 23:12
    //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

    0 讨论(0)
提交回复
热议问题