J'utilise cette commande pour convertir un fichier vidéo AVI, MOV, M4V au format FLV via FFMPEG
/usr/local/bin/ffmpeg -i '/home/public_html/files/video_1355440448.m4v' -s '640x360' -sameq -ab '64k' -ar '44100' -f 'flv' -y /home/public_html/files/video_1355440448.flv
[flv @ 0x68b1a80] requested bitrate is too low
Output #0, flv, to '/home/files/1355472099-50cadce349290.flv':
Stream #0.0: Video: flv, yuv420p, 640x360, q=2-31, pass 2, 200 kb/s, 90k tbn, 25 tbc
Stream #0.1: Audio: adpcm_swf, 44100 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
-------------------------------
RESULT
-------------------------------
Execute error. Output for file "/home/public_html/files/video_1355472099.avi" was found, but the file contained no data. Please check the available codecs compiled with FFmpeg can support this type of conversion. You can check the encode decode availability by inspecting the output array from PHPVideoToolkit::getFFmpegInfo().
Mais si j'utilisais manuellement cette commande, alors son fonctionnement
/usr/local/bin/ffmpeg -i '/home/public_html/files/video_1355440448.m4v' -s '640x360' -sameq -ab '64k' -ar '44100' -f 'flv' -y /home/public_html/files/video_1355440448.flv
En effet, vous avez deux flux et la sortie sera encodée puis redimensionnée, consultez vos messages de sortie:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
... vous utilisez adpcm_swf
audio et yuv420p
video
La réponse est très simple, vous devez utiliser copy
comme codec audio ...
Voir mon exemple avec la vidéo mpeg4, yuv420p et audio ac3 ...
ffmpeg -i input.mkv -vf scale=720:-1 -acodec copy -threads 12 output.mkv
cela changera la première taille = 720 avec le rapport de format = -1 (inconnu). Aussi, vous devez utiliser:
-acodec copy -threads 12
Si vous ne l'utilisez pas, vous aurez une erreur . Par exemple: Quand je l'utilisais, les messages d'encodage en sortie me montraient ceci et cela fonctionnait bien:
[h624 @ 0x874e4a0] missing picture in access unit93 bitrate=1034.4kbits/s
Last message repeated 1163 times5974kB time=53.47 bitrate= 915.3kbits/s
Vous devez utiliser pour un fichier au format flv, quelque chose comme ceci:
ffmpeg -i input.mp4 -c:v libx264 -crf 19 output.flv
Vous recevez un message d'erreur
[flv @ 0x68b1a80] requested bitrate is too low
Vous devez changer le débit en un valide. C'est mieux si vous utilisez un codec différent
-acodec libmp3lame
Et supprimez l'option -sameq
. Cette option ne signifie PAS «même qualité». Vraiment signifie «mêmes quantificateurs»!
J'ai eu un problème similaire en raison de contraintes de taille. La taille de l'image d'origine était étrange (largeur = 1343), ce qui signifie que lorsque j'ai essayé de spécifier une nouvelle taille avec -s, l'erreur d'arrondi tout posait problème. Assurez-vous que la nouvelle taille d'image peut avoir exactement le même rapport d'aspect!
J'ai le même problème
- requested bitrate is too low
et vient de résoudre ce problème en abaissant le débit
by adding -b:a 32k