Мне нужно закодировать короткое видео в формате, который можно воспроизвести с помощью Windows Media Player на Windows XP без установки каких-либо дополнительных кодеков. Для процесса перекодирования я использую ffmpeg.
Я уже пробовал msmpeg4v2
кодек, но качество ужасное (по сравнению с оригинальным видео вы видите большие "блоки"), поэтому я ищу другие кодеки, которые работают из коробки и имеют по крайней мере "нормальное" качество.
Поскольку комментарии указывали, что это может быть не кодек, а проблема с битрейтом, вот команда, которую я использовал:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Выход:
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
источник
источник
Ответы:
Поскольку вы ничего не указали, ваш видеопоток настроен на использование
q=2-31, 200 kb/s
. В результате получается673.5kbits
среднее значение, что немного, по крайней мере, для кодеков, отличных от h.264.Попробуй заставить
-b:v 1000K
например. С более старыми версиями FFmpeg вы можете использовать только-b
.-qscale 2
например. Здесь значение может находиться в диапазоне от 1 до 31. Значения вменяемого значенияqscale
находятся в диапазоне от 2 до 5 или около того. Просто попробуйте и посмотрите, что дает лучший результат.Кодеки, которые действительно поддерживаются в Windows по умолчанию , таковы :
Также см. Мультимедийные типы файлов, которые поддерживает проигрыватель Windows Media, для получения дополнительной информации.
С FFmpeg вы можете попробовать
mpeg1video
(MPEG-1) илиmpeg2video
(MPEG-2), илиmsmpeg4
(MPEG-4 Part II), но я не уверен, поддерживается ли последний вообще универсально. Если вы хотите быть в безопасности, вы должны использовать MPEG-1 или MPEG-2.источник
У меня была похожая проблема с файлом aac / h264 .mp4, который изначально нормально воспроизводился в проигрывателе Windows Media (Windows 7). После того как я отредактировал в VirtualDub и сохранил в формате .avi, а затем преобразовал обратно в aac / h264 .mp4 с использованием параметров по умолчанию ffmpeg, он больше не будет воспроизводиться в проигрывателе Windows Media.
Используя MediaInfo для сравнения исходного и конечного файлов, я заметил, что использовался другой профиль кодирования и разные настройки подвыборки цветности (4: 2: 0, окончательный 4: 4: 4). Перекодировав его с помощью ffmpeg, используя следующую опцию, WMP смог правильно воспроизвести файл:
источник
-pix_fmt yuv420p
и поддерживается эта идея.-pix_fmt yuv420p
я смог открыть mp4 в приложениях Microsoft (как встроенный плеер, так и Movie Maker).Вики FFMPEG рекомендует следующее :
источник
Поскольку оба кодека уже поддерживаются контейнером AVI, вы можете просто сделать
это предполагает, что ваша XP поддерживает h.264, в противном случае я бы пошел с файлом wmv, тем же квантователем, и позволил бы ffmpeg заполнить кодеки. Это должно дать вам почти такое же качество, как оригинал:
источник
-sameq
не должен использоваться для преобразования форматов, которые не разделяют подобный масштаб квантователя. Этот параметр не означает «то же качество», что и подразумеваемая документация. Кроме того, H.264 в AVI не рекомендуется (хотя H.264 без потерь [без b-кадров] подойдет).