Selon les codecs utilisés dans votre FLV, vous pourrez peut-être vous en sortir en le reconditionnant simplement dans un conteneur mp4. Vous aurez besoin H.264
ou MPEG4 simple profile
vidéo et AAC
audio. Vous pouvez trouver des informations sur votre fichier source avecffmpeg -i input.flv
Je ne sais pas si le simple fait d'avoir H.264 / MPEG4 Simple + AAC est suffisant ou s'il existe des options spécifiques aux codecs pris en charge. Il est assez facile de tester:
Essayez d'utiliser
ffmpeg -i input.flv -c copy -copyts output.mp4
-copyts
est- copy timestamps
ce que cela aidera la synchronisation audio.
Si cela ne fonctionne pas, essayez de forcer les codecs audio et vidéo. Cela ré-encodera le fichier:
ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4
Pour améliorer la qualité vidéo, vous pouvez utiliser une valeur CRF inférieure, par exemple n'importe quoi jusqu'à 18. Pour obtenir un fichier plus petit, utilisez un CRF supérieur, mais notez que cela dégradera la qualité.
Pour améliorer la qualité audio, utilisez une valeur de qualité supérieure. Pour FAAC, 100
c'est la valeur par défaut.
Voici quelques réflexions sur la commande ffmpeg suggérée dans la question.
-ar
fait référence à la fréquence d'échantillonnage audio. Je recommanderais de ne pas jouer avec ça jusqu'à ce que vous compreniez mieux. Si vous souhaitez jouer avec l'encodage audio, ajustez le débit binaire (par exemple, -b:a 128k
) et laissez l'encodeur choisir quoi faire en fonction de cela.
Si vous finissez par emprunter cette voie ...
La qualité CD est un échantillonnage de 44100 Hz; la vidéo typique utilise 48000Hz.
Vous pouvez noter que 22050 dans l'exemple de la question d'origine est la moitié de la fréquence d'échantillonnage de qualité cd. si vous convertissez du matériel CD, c'est un bon choix. Si vous commencez avec une source 48KHz (ce que vous êtes probablement; encore une fois, c'est beaucoup plus courant que 44100 dans les fichiers vidéo), j'utiliserais 24Khz à la place. Cela n'aura probablement pas beaucoup d'importance, mais cela peut sembler un peu meilleur et utiliser un peu moins de CPU pour effectuer la conversion.
ffmpeg
prise en charge était interrompuelibaac
. Cette question suggère d'utiliser soitffmpeg
le codeur AAC natif de via,-c:a aac
soit le codec Fraunhofer FDK AAC via-c:a libfdk_aac
(qui nécessitent une compilationffmpeg
avec prise en charge delibfdk_aac
).