J'ai besoin d'encoder une courte vidéo dans un format qui peut être lu avec Windows Media Player sur Windows XP sans installer de codecs supplémentaires. Pour le processus de recodage, j'utilise ffmpeg.
J'ai déjà essayé le msmpeg4v2
codec mais la qualité est horrible (par rapport à la vidéo d'origine, vous voyez de gros "blocs"), donc je cherche d'autres codecs qui fonctionnent hors de la boîte et ont au moins une qualité "ok".
Étant donné que les commentaires indiquent qu'il ne s'agit peut-être pas du codec mais d'un problème de débit, voici la commande que j'ai utilisée:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Production:
Input #0, flv, from 'x.flv':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
Duration: 00:06:19.52, start: 0.000000, bitrate: 836 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac, 48000 Hz, stereo, s16
w:702 h:396 pixfmt:yuv420p tb:1/1000000 sar:2596/3679 sws_param:
Output #0, avi, to 'x.avi':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
ISFT : Lavf53.32.100
Stream #0:0: Video: msmpeg4v2 (MP42 / 0x3234504D), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0:1: Audio: adpcm_ima_wav ([17][0][0][0] / 0x0011), 48000 Hz, stereo, s16, 384 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> msmpeg4v2)
Stream #0:1 -> #0:1 (aac -> adpcm_ima_wav)
Press [q] to stop, [?] for help
frame= 9485 fps=436 q=31.0 Lsize= 31197kB time=00:06:19.48 bitrate= 673.5kbits/s
video:12628kB audio:17913kB global headers:0kB muxing overhead 2.149820%
ffmpeg
codec
video-codecs
ThiefMaster
la source
la source
Réponses:
Comme vous ne spécifiez rien d'autre, votre flux vidéo est configuré pour être utilisé
q=2-31, 200 kb/s
. Il en résulte une673.5kbits
moyenne, ce qui n'est pas beaucoup, du moins pas pour les codecs non h.264.Essayez de forcer
-b:v 1000K
par exemple. Avec les anciennes versions de FFmpeg, vous ne pouvez utiliser que-b
.-qscale 2
par exemple. Ici, la valeur peut aller de 1 à 31. Les valeurs correctes pourqscale
sont comprises entre 2 et 5 environ. Essayez simplement de voir ce qui donne le meilleur résultat.Les codecs qui sont vraiment pris en charge par défaut sur Windows sont les suivants :
Consultez également les types de fichiers multimédias pris en charge par le Lecteur Windows Media pour plus d'informations.
Avec FFmpeg, vous pouvez essayer
mpeg1video
(MPEG-1) oumpeg2video
(MPEG-2), oumsmpeg4
(MPEG-4 Part II), mais je ne sais pas si ce dernier est même universellement pris en charge. Si vous voulez jouer en toute sécurité, vous êtes obligé d'utiliser MPEG-1 ou MPEG-2.la source
J'ai eu un problème similaire avec un fichier aac / h264 .mp4 qui fonctionnait correctement à l'origine dans Windows Media Player (Windows 7). Après avoir édité dans VirtualDub et enregistré au format .avi, puis reconverti en aac / h264 .mp4 en utilisant les valeurs par défaut ffmpeg, il ne serait plus lu dans Windows Media Player.
En utilisant MediaInfo pour comparer les fichiers originaux et finaux, j'ai remarqué qu'un profil d'encodage différent avait été utilisé et différents paramètres de sous-échantillonnage de chrominance (4: 2: 0, 4: 4: 4 final). En le ré-encodant avec ffmpeg en utilisant l'option suivante, WMP a pu lire le fichier correctement:
la source
-pix_fmt yuv420p
et soutient cette idée.-pix_fmt yuv420p
j'ai pu ouvrir le mp4 dans les applications Microsoft (à la fois le lecteur intégré et Movie Maker).Le wiki FFMPEG recommande ce qui suit :
la source
Étant donné que les deux codecs sont déjà pris en charge par le conteneur AVI, vous pouvez simplement le faire
c'est en supposant que votre XP prend en charge h.264, sinon j'irais avec un fichier wmv, le même quantificateur, et je laisserais ffmpeg remplir les codecs. Cela devrait vous donner une qualité presque identique à l'original:
la source
-sameq
ne doit pas être utilisé pour convertir des formats qui ne partagent pas une échelle de quantification similaire. Cette option ne signifie pas "la même qualité" que la documentation utilisée pour impliquer. De plus, le format H.264 en AVI n'est pas recommandé (bien que le format H.264 sans perte [pas de trames b] devrait convenir).