Que codecs são mais adequados para reprodução com o Windows Media Player no Windows XP?

12

Eu preciso codificar um vídeo curto em um formato que pode ser reproduzido com o Windows Media Player no Windows XP sem instalar nenhum codec adicional. Para o processo de recodificação, estou usando o ffmpeg.

Já experimentei o codec msmpeg4v2 , mas a qualidade é horrível (em comparação com o vídeo original, você vê grandes "blocos"), então estou procurando outros codecs que funcionem fora da caixa e tenham pelo menos " ok "qualidade.

Como os comentários indicaram que pode não ser o codec, mas um problema de taxa de bits, aqui está o comando que usei:

ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi

Saída:

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%
    
por ThiefMaster 12.06.2012 / 21:17

4 respostas

11

Como você não especifica mais nada, seu fluxo de vídeo está definido para usar q=2-31, 200 kb/s . Isso resulta em 673.5kbits average, o que não é muito, pelo menos não para codecs não h.264.

Tente forçar

  • uma determinada taxa de bits com -b:v 1000K , por exemplo. Com versões mais antigas do FFmpeg, você só pode usar -b .
  • um nível de qualidade fixo com -qscale 2 , por exemplo. Aqui, o valor pode variar de 1 a 31. Os valores de qscale estão no intervalo de 2 a 5 ou mais. Apenas tente e veja o que alcança o melhor resultado.

Os codecs que são realmente suportados no Windows por padrão são :

There are hundreds of audio and video codecs in use today. Some have been created by Microsoft, but the vast majority of codecs have been created by other companies, organizations, or individuals. By default, the Windows operating system and the Player include a number of the most popular codecs, such as Windows Media Audio, Windows Media Video, and MP3.

Veja também os tipos de arquivos multimídia que o Windows Media Player suporta para obter mais informações.

Com o FFmpeg, você pode experimentar mpeg1video (MPEG-1) ou mpeg2video (MPEG-2), ou msmpeg4 (MPEG-4 Parte II), mas não tenho certeza se o último é mesmo universalmente suportado. Se você quiser jogar pelo seguro, você é forçado a usar MPEG-1 ou MPEG-2.

    
por 12.06.2012 / 21:27
5

Eu tive um problema semelhante com um arquivo .mp4 aac / h264 que originalmente reproduzido bem no Windows Media Player (Windows 7). Depois que eu editei no VirtualDub e salvei no formato .avi e depois converti de volta para aac / h264 .mp4 usando os padrões ffmpeg, ele não seria mais reproduzido no Windows Media Player.

Usando o MediaInfo para comparar os arquivos originais e finais, notei que um perfil de codificação diferente foi usado e diferentes configurações de subamostragem de croma (4: 2: 0, final 4: 4: 4). Ao recodificá-lo com o ffmpeg usando a seguinte opção, o WMP conseguiu reproduzir o arquivo corretamente:

ffmpeg  -i edited.avi -pix_fmt yuv420p fixed.mp4
    
por 15.04.2013 / 01:26
1

O wiki do FFMPEG recomenda o seguinte :

ffmpeg -r 30 -i foo.flv -codec:v mpeg4 -flags:v +qscale -global_quality:v 0 -codec:a libmp3lame foo.avi
    
por 03.03.2017 / 17:21
0

Como os dois codecs já são suportados pelo contêiner AVI, você poderia fazer

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

assumindo que o seu XP suporta h.264, caso contrário eu usaria um arquivo wmv, o mesmo quantizador, e deixaria o ffmpeg preencher os codecs. Isso deve dar a você uma qualidade quase idêntica à original:

ffmpeg -i x.flv -sameq x.wmv
    
por 13.06.2012 / 18:07