web-dev-qa-db-fra.com

Comment obtenir la durée, la taille et la taille de la vidéo en PHP?

Je veux savoir comment obtenir la durée, la dimension et la taille du fichier vidéo téléchargé en PHP. Le fichier peut être dans n'importe quel format vidéo.

37
Chandan

getID3 prend en charge les formats vidéo. Voir: http://getid3.sourceforge.net/

Edit: Donc, en format de code, ce serait comme:

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 />");

Note: Vous devez inclure les classes getID3 avant que cela fonctionne! Voir le lien ci-dessus.

Edit: Si vous avez la possibilité de modifier l’installation de PHP sur votre serveur, une extension PHP à cette fin est ffmpeg-php. Voir: http://ffmpeg-php.sourceforge.net/

61
aendrew

Si FFMPEG est installé sur votre serveur ( http://www.mysql-Apache-php.com/ffmpeg-install.htm ), il est possible d’obtenir les attributs de votre vidéo à l’aide de la commande "-vstats "et en analysant le résultat avec une expression rationnelle - comme indiqué dans l'exemple ci-dessous. Ensuite, vous avez besoin de la fonction PHP filesize () pour obtenir la taille.

$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

Si vous utilisez Wordpress, vous pouvez simplement utiliser la fonction de construction de Wordpress avec l’identifiant vidéo fourni wp_get_attachment_metadata ($ videoID):

wp_get_attachment_metadata($videoID);

m'a beaucoup aidé ... c'est ce pourquoi je l'affiche, bien que la question ait été posée en 2011.

5
Timotheus Triebl

https://github.com/JamesHeinrich/getID3 Téléchargez getid3 Zip et ne faites que copier le dossier nommé getid3 dans le dossier du projet et utilisez-le comme suit:.

<?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