Preciso codificar um vídeo curto em um formato que possa 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.
Eu já tentei o msmpeg4v2
codec, 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 imediatamente e que tenham pelo menos a qualidade "ok".
Como os comentários indicam que pode não ser o codec, mas um problema de taxa de bits, eis o comando que eu usei:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Resultado:
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
fonte
fonte
Respostas:
Como você não especifica mais nada, seu fluxo de vídeo está definido para uso
q=2-31, 200 kb/s
. Isso resulta em673.5kbits
média, o que não é muito, pelo menos não para codecs não h.264.Tente forçar
-b:v 1000K
por exemplo. Com versões mais antigas do FFmpeg, você só pode usar-b
.-qscale 2
por exemplo. Aqui, o valor pode variar de 1 a 31. Os valores sãos paraqscale
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 estes :
Consulte também os tipos de arquivo multimídia suportados pelo Windows Media Player para obter mais informações.
Com o FFmpeg, você pode tentar
mpeg1video
(MPEG-1) oumpeg2video
(MPEG-2) oumsmpeg4
(MPEG-4 Parte II), mas não tenho certeza se o último é universalmente suportado. Se você quiser jogar pelo seguro, é obrigado a usar o MPEG-1 ou MPEG-2.fonte
Eu tive um problema semelhante com um arquivo .ac4 aac / h264 que originalmente era bom no Windows Media Player (Windows 7). Depois que editei no VirtualDub e salvei no formato .avi e depois converti 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 havia sido usado e configurações diferentes de subamostragem de croma (4: 2: 0, final 4: 4: 4). Recodificando-o com ffmpeg usando a seguinte opção, o WMP conseguiu reproduzir o arquivo corretamente:
fonte
-pix_fmt yuv420p
e suporta essa ideia.-pix_fmt yuv420p
, consegui abrir o mp4 em aplicativos da Microsoft (tanto o player embutido quanto o Movie Maker).O wiki do FFMPEG recomenda o seguinte :
fonte
Como os dois codecs já são suportados pelo contêiner AVI, você pode fazer
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 fornecer uma qualidade quase idêntica à original:
fonte
-sameq
não deve ser usado para converter formatos que não compartilham uma escala quantizante semelhante. Esta opção não significa "mesma qualidade" que a documentação usada para implicar. Além disso, o H.264 no AVI não é recomendado (embora o H.264 sem perdas [sem quadros b] deva ser bom).