web-dev-qa-db-fra.com

Erreur lors de l'ouverture du codeur pour le flux de sortie # 0.0 - des paramètres incorrects tels que débit_ bits, débit, largeur ou hauteur

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
11
Pradeep Singh
  1. 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 
    
  2. 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»!

2
pogorskiy

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!

1
elena

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
0
Ahmad Arslan