ffmpeg: impossible de trouver les paramètres du codec pour le flux 0 (vidéo: h264) taille non spécifiée

9

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?

entrez la description de l'image ici

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
dempap
la source
pourriez-vous simplement publier la sortie de ceci ffmpeg -i output.raw:, en supposant que vous essayez de convertir output.raw. Aussi, si vous essayez ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4quelle est la sortie de la console?
Rajib
Merci pour votre réponse. Les deux sorties sont exactement les mêmes, comme édité ci-dessus. Pensez-vous qu'il y a un problème d'encodage ou de fichier lors de la capture vidéo?
dempap
D'où venez-vous output.rawet comment l'avez-vous créé?
slhck
En exécutant ./capture -f -c 100 -o > output.raw. capture.c téléchargé depuis: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .
dempap

Réponses:

0

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:

ffmpeg -f rawvideo -pix_fmt yuyv422 -s:v 640x480 -r 25 -i output.raw -c:v libx264 output.mp4

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 -fet ffmpeg devrait le comprendre:

ffmpeg -i output.raw -c:v libx264 output.mp4

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:

ffmpeg -f v4l2 -r 25 -s:v 640x480 -i /dev/video0 -c:v libx264 output.mp4
tgies
la source