J'essaie de convertir une vidéo de .raw en .mp4. Pour cette raison, j'ai téléchargé, construit et installé à la fois x264 et ffmpeg. Cependant, commande:
ffmpeg -f h264 -i output.raw -vcodec copy output.mp4
échoue avec une erreur (illustré dans l'image ci-dessous). Est-ce qu'il y a un moyen de réparer ceci?
Commandes que j'exécute également:
1
root@beagleboard:/# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
2
root@beagleboard:/dev# v4l2-ctl --set-fmt-video=pixelformat=0
ffmpeg -i output.raw
:, en supposant que vous essayez de convertiroutput.raw
. Aussi, si vous essayezffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4
quelle est la sortie de la console?output.raw
et comment l'avez-vous créé?./capture -f -c 100 -o > output.raw
. capture.c téléchargé depuis: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .Réponses:
Votre entrée n'est tout simplement pas un flux h264, mais vous dites à ffmpeg qu'il en est un.
Vous devez indiquer à ffmpeg ce qu'il est réellement: un flux v4l2 au format mjpeg ou yuyv (selon le format de votre caméra au moment de la capture, des deux répertoriés par
v4l2-ctl --list-formats
). Si vous voulez que ffmpeg le transcode en h264, vous devez également le lui dire.Si l'entrée est des trames YUYV brutes, vous voulez:
Remplacez 640x480 et 25 par les dimensions et la fréquence d'images de votre vidéo.
Si l'entrée est MJPEG, vous devriez pouvoir laisser de côté le
-f
et ffmpeg devrait le comprendre:Soit dit en passant, vous n'avez pas besoin d'un autre outil de capture; ffmpeg peut très bien capturer à partir d'appareils v4l2:
la source