PHP implémente la méthode d'interception d'images vidéo spécifiées en images

墨辰丷
Libérer: 2023-03-29 13:26:01
original
2279 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes de php pour intercepter les images spécifiées de la vidéo en images. Les amis qui en ont besoin peuvent se référer à

Pour intercepter les images spécifiées de la vidéo en images, le php ffmpeg. L'extension a été parfaitement implémentée :

$movie = new ffmpeg_movie($video_filePath);
$ff_frame = $movie->getFrame(1);
$gd_image = $ff_frame->toGDImage();
$img="./test.jpg";
imagejpeg($gd_image, $img);
imagedestroy($gd_image);
Copier après la connexion

Cependant, il y a un problème. En raison des différentes directions de prise de vue, la vidéo sera pivotée avec la rotation des méta-informations. Lorsque vous capturez l'image du cadre par rapport à la vidéo, s'il y a des informations de rotation, l'image de la vidéo est également pivotée, vous devez donc faire pivoter l'image capturée en conséquence.

Ensuite, l'extension php ffmpeg ne peut pas obtenir les informations de rotation (document d'extension php ffmpeg), mais elles peuvent être obtenues via la ligne de commande ffmpeg :

/usr/local/ffmpeg/ bin/ffprobe test .mp4 -show_streams | grep rotateUtilisez PHP pour l'encapsuler simplement comme suit :

function get_video_orientation($video_path) {
  $cmd = "/usr/local/ffmpeg/bin/ffprobe " . $video_path . " -show_streams 2>/dev/null";
  $result = shell_exec($cmd);
 
  $orientation = 0;
  if(strpos($result, 'TAG:rotate') !== FALSE) {
    $result = explode("\n", $result);
    foreach($result as $line) {
      if(strpos($line, 'TAG:rotate') !== FALSE) {
        $stream_info = explode("=", $line);
        $orientation = $stream_info[1];
      }
    }
  }
  return $orientation;
}
Copier après la connexion

Utilisez la fonction imagerotate() pour faire pivoter la capture d'écran :

$movie = new ffmpeg_movie($video_filePath);
$frame = $movie->getFrame(1);
$gd = $frame->toGDImage();
if ($orientation = $this->get_video_orientation($video_filePath)) {
  $gd = imagerotate($gd, 360-$orientation, 0);
}
$img="./test.jpg";
imagejpeg($gd, $img);
imagedestroy($gd_image);
Copier après la connexion

Enfin, il y a un problème. Oui, tous les lecteurs et navigateurs ne peuvent pas reconnaître l'orientation de la vidéo et la faire pivoter automatiquement. Si vous souhaitez faire pivoter la vidéo, vous pouvez utiliser la commande ffmpeg :

. /usr/local /ffmpeg/bin/ffmpeg -i input.mp4 -vf 'transpose=3' -metadata:s:v:0 rotate=0

Résumé : Ce qui précède représente tout le contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

Recommandations associées :

phpUn exemple simple de partage d'ajout de données à des fichiers XML

Basé sur PHP Exemple d'outil d'indexation d'analyse d'annuaire de site Web

Analyse de la méthode d'implémentation des requêtes de bloc PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal