Necesito codificar un video corto en un formato que pueda reproducirse con Windows Media Player en Windows XP sin instalar ningún códec adicional. Para el proceso de recodificación estoy usando ffmpeg.
Ya probé el msmpeg4v2
códec, pero la calidad es horrible (en comparación con el video original, ve "bloques" grandes), así que estoy buscando otros códecs que funcionen de fábrica y que tengan al menos una calidad "aceptable".
Dado que los comentarios indicaron que podría no ser el códec sino un problema de velocidad de bits, aquí está el comando que utilicé:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Salida:
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
fuente
fuente
Respuestas:
Como no especificas nada más, tu transmisión de video está configurada para usarse
q=2-31, 200 kb/s
. Resulta en673.5kbits
promedio, que no es mucho, al menos no para códecs que no son h.264.Intenta forzar
-b:v 1000K
por ejemplo. Con versiones anteriores de FFmpeg, solo puede usar-b
.-qscale 2
por ejemplo. Aquí el valor puede variar de 1 a 31. Los valores correctos paraqscale
están en el rango de 2 a 5 más o menos. Solo intenta ver qué logra el mejor resultado.Los códecs que realmente son compatibles con Windows de forma predeterminada son estos :
Consulte también los tipos de archivos multimedia que admite Windows Media Player para obtener más información.
Con FFmpeg, puede probar
mpeg1video
(MPEG-1) ompeg2video
(MPEG-2), omsmpeg4
(MPEG-4 Parte II), pero no estoy seguro de si este último es universalmente compatible. Si quieres jugar a lo seguro, estás obligado a usar MPEG-1 o MPEG-2.fuente
Tuve un problema similar con un archivo .mp4 aac / h264 que originalmente jugó bien en Windows Media Player (Windows 7). Después de editarlo en VirtualDub y guardarlo en formato .avi, y luego convertirlo nuevamente a aac / h264 .mp4 usando los valores predeterminados de ffmpeg, ya no se reproduciría en Windows Media Player.
Al usar MediaInfo para comparar los archivos originales y finales, noté que se había utilizado un perfil de codificación diferente y diferentes configuraciones de submuestreo de croma (4: 2: 0, final 4: 4: 4). Al volver a codificarlo con ffmpeg con la siguiente opción, WMP pudo reproducir el archivo correctamente:
fuente
-pix_fmt yuv420p
y apoya esta idea.-pix_fmt yuv420p
pude abrir el mp4 en las aplicaciones de Microsoft (tanto el reproductor incorporado como el Movie Maker).La wiki de FFMPEG recomienda lo siguiente :
fuente
Dado que ambos códecs ya son compatibles con el contenedor AVI, simplemente podría hacer
eso supone que su XP es compatible con h.264, de lo contrario, iría con un archivo wmv, el mismo cuantificador, y dejaría que ffmpeg complete los códecs. Esto debería darle una calidad casi idéntica a la original:
fuente
-sameq
no debe usarse para convertir formatos que no comparten una escala de cuantificador similar. Esta opción no significa "la misma calidad" que implica la documentación utilizada. Además, no se recomienda H.264 en AVI (aunque H.264 sin pérdida [sin b-frames] debería estar bien).