it-swarm.com.de

Wie bekomme ich Videodauer, -größe und -größe in PHP?

Ich möchte wissen, wie man die Dauer, die Größe und die Größe der hochgeladenen Videodatei in PHP erhält. Die Datei kann in einem beliebigen Videoformat vorliegen.

37
Chandan

getID3 unterstützt Videoformate. Siehe: http://getid3.sourceforge.net/

Edit: Im Code-Format wäre das also so:

include_once('pathto/getid3.php');
$getID3 = new getID3;
$file = $getID3->analyze($filename);
echo("Duration: ".$file['playtime_string'].
" / Dimensions: ".$file['video']['resolution_x']." wide by ".$file['video']['resolution_y']." tall".
" / Filesize: ".$file['filesize']." bytes<br />");

Hinweis: Sie müssen die getID3-Klassen einschließen, bevor dies funktioniert! Siehe den obigen Link.

Bearbeiten: Wenn Sie die Installation von PHP auf Ihrem Server ändern können, ist die Erweiterung PHP für diesen Zweck ffmpeg-php. Siehe: http://ffmpeg-php.sourceforge.net/

61
aendrew

Wenn Sie FFMPEG auf Ihrem Server installiert haben ( http://www.mysql-Apache-php.com/ffmpeg-install.htm ), können Sie die Attribute Ihres Videos mit dem Befehl "-vstats "und analysieren das Ergebnis mit etwas Regex - wie im folgenden Beispiel gezeigt. Dann benötigen Sie die Funktion PHP fileize (), um die Größe zu ermitteln.

$ffmpeg_path = 'ffmpeg'; //or: /usr/bin/ffmpeg , or /usr/local/bin/ffmpeg - depends on your installation (type which ffmpeg into a console to find the install path)
$vid = 'PATH/TO/VIDEO'; //Replace here!

 if (file_exists($vid)) {

    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime_type = finfo_file($finfo, $vid); // check mime type
    finfo_close($finfo);

    if (preg_match('/video\/*/', $mime_type)) {

        $video_attributes = _get_video_attributes($vid, $ffmpeg_path);

        print_r('Codec: ' . $video_attributes['codec'] . '<br/>');

        print_r('Dimension: ' . $video_attributes['width'] . ' x ' . $video_attributes['height'] . ' <br/>');

        print_r('Duration: ' . $video_attributes['hours'] . ':' . $video_attributes['mins'] . ':'
                . $video_attributes['secs'] . '.' . $video_attributes['ms'] . '<br/>');

        print_r('Size:  ' . _human_filesize(filesize($vid)));

    } else {
        print_r('File is not a video.');
    }
} else {
    print_r('File does not exist.');
}

function _get_video_attributes($video, $ffmpeg) {

    $command = $ffmpeg . ' -i ' . $video . ' -vstats 2>&1';
    $output = Shell_exec($command);

    $regex_sizes = "/Video: ([^,]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; // or : $regex_sizes = "/Video: ([^\r\n]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; (code from @1owk3y)
    if (preg_match($regex_sizes, $output, $regs)) {
        $codec = $regs [1] ? $regs [1] : null;
        $width = $regs [3] ? $regs [3] : null;
        $height = $regs [4] ? $regs [4] : null;
    }

    $regex_duration = "/Duration: ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).([0-9]{1,2})/";
    if (preg_match($regex_duration, $output, $regs)) {
        $hours = $regs [1] ? $regs [1] : null;
        $mins = $regs [2] ? $regs [2] : null;
        $secs = $regs [3] ? $regs [3] : null;
        $ms = $regs [4] ? $regs [4] : null;
    }

    return array('codec' => $codec,
        'width' => $width,
        'height' => $height,
        'hours' => $hours,
        'mins' => $mins,
        'secs' => $secs,
        'ms' => $ms
    );
}

function _human_filesize($bytes, $decimals = 2) {
    $sz = 'BKMGTP';
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
}
17
F3L1X79

Wenn Sie Wordpress verwenden, können Sie einfach die Wordpress-Build-Funktion mit der angegebenen Video-ID verwenden: wp_get_attachment_metadata ($ videoID):

wp_get_attachment_metadata($videoID);

hat mir sehr geholfen . deshalb poste ich es, obwohl die Frage 2011 gestellt wurde.

5

https://github.com/JamesHeinrich/getID3 download getid3 Zip und dann nur getid3 benannte Ordner kopieren in Projektordner einfügen und wie folgt verwenden: show ...

<?php
        require_once('/fire/scripts/lib/getid3/getid3/getid3.php');
        $getID3 = new getID3();
        $filename="/fire/My Documents/video/ferrari1.mpg";
        $fileinfo = $getID3->analyze($filename);

        $width=$fileinfo['video']['resolution_x'];
        $height=$fileinfo['video']['resolution_y'];

        echo $fileinfo['video']['resolution_x']. 'x'. $fileinfo['video']['resolution_y'];
        echo '<pre>';print_r($fileinfo);echo '</pre>';
?>
1
Manthan Patel