Ceci est mon code en utilisant ffmpeg, je veux avoir une vignette vidéo, mais je ne suis pas familier avec ffmpeg, quelqu'un peut-il connaître l'erreur que j'ai reçue.
[swscaler @ 0x7ff8da028c00] deprecated pixel format used, make sure you did set range correctly
Output #0, mjpeg, to 'image.jpg':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf56.36.100
Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 320x240 [SAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc (default)
Metadata:
creation_time : 2016-11-06 09:40:22
handler_name : ISO Media file produced by Google Inc.
encoder : Lavc56.41.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=4.8 Lsize= 16kB time=00:00:01.00 bitrate= 129.5kbits/s
video:16kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
C'est aussi mon code:
$video_url ='https://URL/upload/4b8acab123563649f19e07450d810df6.mp4';
$ffmpeg = '/opt/local/bin/ffmpeg';
$image = 'image.jpg';
$interval = 5;
$size = '320x240';
Shell_exec($tmp = "$ffmpeg -i $video_url -deinterlace -an -ss $interval -f mjpeg -t 1 -r 1 -y -s $size $image 2>&1");
Selon le forum ffmpeg, cela peut être ignoré lorsqu'il est appelé à partir de la ligne de commande et je l'ai toujours ignoré. Une chose que vous pouvez essayer (testez avec un fichier factice S'IL VOUS PLAÎT) est d'ajouter -pix_fmt yuvj422p
à votre dernière ligne pour qu'elle ressemble à ceci:
Shell_exec($tmp = "$ffmpeg -i $video_url -pix_fmt yuvj422p -deinterlace -an -ss $interval -f mjpeg -t 1 -r 1 -y -s $size $image 2>&1");
Comme je l'ai dit, testez-le s'il vous plaît car je ne peux pas garantir les résultats mais en ce qui me concerne, j'ai utilisé ffmpeg des milliers de fois et tout semble très bien même avec l'avertissement.
https://lists.ffmpeg.org/pipermail/ffmpeg-user/2014-F February/020151.html
Afaict, l'avertissement est principalement destiné aux utilisateurs de la bibliothèque, les utilisateurs de ffmpeg ne devraient pas être affectés.
OK, je l'ignorerai alors.
Je change juste le chemin de la destination de l'image:
# path of image on the server
$image = '/users/xx/xxxx/sample/upload/image.jpg';
Ensuite, j'ai utilisé ce qui suit:
# $ffmpeg - path of ffmpeg on the server
# $video_url - path of the video file on the server
Shell_exec($tmp = "$ffmpeg -i $video_url -pix_fmt yuvj422p -deinterlace -an -ss $interval -f mjpeg -t 1 -r 1 -y -s $size $image 2>&1");