J'essaie d'extraire "exactement 1 image sur 10" d'une vidéo (c'est-à-dire extraire 1, laisser 9 puis répéter) à des fins scientifiques. La vidéo est de 105 images, 3,5 secondes, 29,97 ips (h.264, .mov, produite par Nikon D3100).
Je l'ai téléchargé ici .
VLC
La commande ci-dessous devrait produire 10 images, mais elle ne produit que 6 images. J'ai essayé différents rapports de scène et aucun d'eux ne produit le nombre correct d'images (pas même près de corriger).
vlc 1.mov --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=img- --scene-path=. vlc://quit
Quelqu'un pourrait-il me dire quel est le problème?
FFmpeg
FFmpeg ne semble pas avoir de commande exactement pour mon but. La commande ci-dessous extrait 3 images par seconde, mais comme le FPS n'est pas exactement 30 (plutôt 2,97), cela ne produira pas de résultats corrects pour moi.
De plus, même FFmpeg ne donne pas le nombre correct d'images avec même cette commande. Pour 3,5 secondes de vidéo, j'attends au plus 10 images, mais ce que j'obtiens, c'est 12 images!
ffmpeg -i 1.mov -y -an -sameq -r 3 -f image2 -vcodec mjpeg %03d.jpg
Comment puis-je réaliser ce que je veux?
-sameq
ne fait pas ce que vous pensez probablement qu'il a fait, et a été supprimé de la version actuelle (le vrai ffmpeg c'est-à-dire, je ne sais pas si c'est dans le faux ffmpeg d'Ubuntu). Utilisez plutôt qscale.Réponses:
Sélectionnez 1 image sur 10 images
Pour ce faire, vous pouvez utiliser le
select
filtre vidéoffmpeg
:Pour la sortie JPG, vous pouvez varier la qualité avec
-q:v
. La plage efficace est de 2 (meilleure qualité) à 31 (pire qualité). Vous n'avez pas besoin de cette option si vous souhaitez plutôt exporter en PNG.Ceci affichera
img_001.jpg
,img_002.jpg
,img_003.jpg
, etc.la source
unrecognized option '-filter:v'
J'obtiens " " avec "FFmpeg version SVN-r0.5.1-4: 0.5.1-1ubuntu1.3" (--enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable -libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect - -enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static)"
.L'aspect le plus important de votre question est le fait que la vidéo utilise 29,97 images par seconde, pas 30. Pesky NTSC.
Quoi qu'il en soit, je pense qu'il serait plus facile d'extraire simplement chaque image , puis de supprimer celles dont vous n'avez pas besoin:
Ensuite, supprimez ceux dont vous n'avez pas besoin. Puisque chaque dixième cadre se terminera par un
1.jpg
, nous pouvons simplement prendre tous les autres…… Et une fois que vous êtes sûr que ce sont ceux que vous souhaitez supprimer:
Si vous pouvez utiliser
mencoder
, vous pouvez essayer l'framestep
option, comme expliqué dans la documentation , commeframestep=10
dans votre cas. Personnellement, je n'ai pas pu l'installer / l'essayer.la source
Si vous deviez d'abord convertir la vidéo en une série d'images rgb24 ou rgb32 brutes, vous pourriez peut-être obtenir le bon nombre d'images car, sous sa forme originale, il semble y avoir des types de trame inhabituels qui peuvent ne pas être du tout des images ?? ?
Dans les disques laser originaux, la vidéo entière était composée d'une série d'images avec des numéros d'image individuels de 1 à 100 000 ou plus, et comme cela est vraiment la bonne façon d'établir une ligne de base pour de futures conversions ou manipulations.
L'industrie est passée à cette étrange idée de compression simplement pour réduire les sommes dépensées et corrompre les véritables formes scientifiques de traitement des nombres.
Vous devez d'abord extraire tout audio sous forme de fichier wave afin de ne pas perdre complètement l'audio. Il semble que FFMPEG place les informations d'identification dans chaque image extraite, car si vous essayez de chaîner des images à partir de celles que vous venez d'extraire, et que vous mélangez d'autres images d'autres sources avec la même extension, ffmpeg ignorera les images que vous avez essayé de reconstituer au milieu de tout. .
Avec le format de disque laser, la fréquence d'images est simplement dictée par la fréquence à laquelle vous présentez les images séquentielles et n'est en aucun cas contrôlée par les images elles-mêmes.
FFMPEG peut prendre une leçon de la science au lieu de l'art pour une manipulation et un affichage corrects des images de toute nature. Ou peut-être l'ensemble de l'industrie audiovisuelle elle-même. L'industrie a vraiment besoin d'améliorer les capacités du matériel et d'utiliser des données brutes qui nécessitent beaucoup de mémoire / stockage. Rien ne vaut les données brutes pour la précision et l'exactitude.
la source