Quels codecs conviennent le mieux à la lecture avec Windows Media Player sur Windows XP?

16

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 msmpeg4v2codec 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%
ThiefMaster
la source
3
Peut-être que le problème est votre débit binaire, pas votre codec. Le codec préféré pour les systèmes Windows est, très probablement, une sorte de WMV .
Der Hochstapler
Voir ma réponse ici pour un lien vers la FAQ officielle de Microsoft. Mais essentiellement, vous êtes coincé avec Windows Media Video - que FFmpeg ne produira pas. Donc soit ça, soit ceux que vous avez essayés. Comme @Oliver l'a déjà dit, essayez un débit binaire plus élevé ou un paramètre de qualité. Je suppose qu'il utilise simplement celui par défaut.
slhck
L'avantage du codec MPEG n'est pas la taille, mais plutôt le fait qu'il ne s'agit pas d'un conteneur comme un AVI, et c'est un fichier basé sur le flux qui peut être enregistré via un encodeur matériel, utilisé sur un support DVD pour les lecteurs autonomes, et il peut être facilement édité. Donc, pour être clair, ce que vous demandez, c'est un format de film que vous pouvez encoder en utilisant FFMPEG qui produira une taille avec laquelle vous êtes à l'aise et fonctionnera avec Windows Media Player sans aucun téléchargement supplémentaire. Correct?
Bon Gart
Oui. WMV est très bien aussi. là, j'obtiens la même qualité - alors peut-être qu'il y a effectivement un problème avec le débit binaire.
ThiefMaster

Réponses:

12

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 une 673.5kbitsmoyenne, ce qui n'est pas beaucoup, du moins pas pour les codecs non h.264.

Essayez de forcer

  • un certain débit avec -b:v 1000Kpar exemple. Avec les anciennes versions de FFmpeg, vous ne pouvez utiliser que -b.
  • un niveau de qualité fixe avec -qscale 2par exemple. Ici, la valeur peut aller de 1 à 31. Les valeurs correctes pour qscalesont 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 :

Il existe aujourd'hui des centaines de codecs audio et vidéo. Certains ont été créés par Microsoft, mais la grande majorité des codecs ont été créés par d'autres sociétés, organisations ou particuliers. Par défaut, le système d'exploitation Windows et le lecteur incluent un certain nombre des codecs les plus populaires, tels que Windows Media Audio, Windows Media Video et MP3.

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) ou mpeg2video(MPEG-2), ou msmpeg4(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.

slhck
la source
oui ... c'était un débit binaire assez faible pour un fichier mpeg.
Bon Gart
Il h. Je dois dire que nous sommes vraiment bénis avec h.264 ces jours-ci.
slhck
surtout si vous regardez de 4k à 5k pendant 2 bonnes heures sur un DVD (vous pouvez aller plus haut bien sûr, mais cela me laisse toujours une belle marge sur un disque pour inclure un fichier AVI et des images et autres)
Bon Gart
7

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:

ffmpeg  -i edited.avi -pix_fmt yuv420p fixed.mp4
Annihilannic
la source
1
Voir trac.ffmpeg.org/wiki/Encode/H.264#Encodingfordumbplayers qui mentionne l'utilisation -pix_fmt yuv420pet soutient cette idée.
Utilisateur
Je viens de tester cela sur Windows 10. En ajoutant simplement, -pix_fmt yuv420pj'ai pu ouvrir le mp4 dans les applications Microsoft (à la fois le lecteur intégré et Movie Maker).
Nux
0

Étant donné que les deux codecs sont déjà pris en charge par le conteneur AVI, vous pouvez simplement le faire

ffmpeg -i x.flv -vcodec copy -acodec copy x.avi

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:

ffmpeg -i x.flv -sameq x.wmv
Justin Buser
la source
2
Je doute que XP ordinaire
prenne en
2
-sameqne 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).
llogan