Какие кодеки наиболее подходят для воспроизведения с помощью проигрывателя Windows Media на Windows XP?

16

Мне нужно закодировать короткое видео в формате, который можно воспроизвести с помощью 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%
ThiefMaster
источник
3
Возможно, проблема в битрейте, а не в кодеке. Предпочтительным кодеком для систем Windows, скорее всего, является своего рода WMV .
Der Hochstapler
Смотрите мой ответ там для ссылки на официальный Microsoft FAQ. Но, по сути, вы застряли с Windows Media Video - который FFmpeg не будет производить. Так что либо это, либо те, которые вы пробовали. Как уже сказал @Oliver, попробуйте более высокую скорость передачи данных или настройку качества. Я предполагаю, что он просто использует по умолчанию.
slhck
Преимущество кодека MPEG заключается не в размере, а в том, что он не является контейнером, подобным AVI, а представляет собой потоковый файл, который может быть записан с помощью аппаратного кодера и используется на носителях DVD для автономных проигрывателей, и это может быть легко отредактировано. Итак, чтобы быть ясным, то, о чем вы спрашиваете, - это формат фильма, который вы можете кодировать с помощью FFMPEG, который будет производить размер, который вам удобен, и будет работать с Windows Media Player без каких-либо дополнительных загрузок. Верный?
Бон Гарт
Да. WMV тоже хорошо. там я получаю то же качество - так что, возможно, что-то не так с битрейтом.
ThiefMaster

Ответы:

12

Поскольку вы ничего не указали, ваш видеопоток настроен на использование q=2-31, 200 kb/s. В результате получается 673.5kbitsсреднее значение, что немного, по крайней мере, для кодеков, отличных от h.264.

Попробуй заставить

  • определенный битрейт с -b:v 1000Kнапример. С более старыми версиями FFmpeg вы можете использовать только -b.
  • фиксированный уровень качества, -qscale 2например. Здесь значение может находиться в диапазоне от 1 до 31. Значения вменяемого значения qscaleнаходятся в диапазоне от 2 до 5 или около того. Просто попробуйте и посмотрите, что дает лучший результат.

Кодеки, которые действительно поддерживаются в Windows по умолчанию , таковы :

Сегодня используются сотни аудио и видео кодеков. Некоторые из них были созданы Microsoft, но подавляющее большинство кодеков было создано другими компаниями, организациями или частными лицами. По умолчанию операционная система Windows и проигрыватель содержат ряд наиболее популярных кодеков, таких как Windows Media Audio, Windows Media Video и MP3.

Также см. Мультимедийные типы файлов, которые поддерживает проигрыватель Windows Media, для получения дополнительной информации.

С FFmpeg вы можете попробовать mpeg1video(MPEG-1) или mpeg2video(MPEG-2), или msmpeg4(MPEG-4 Part II), но я не уверен, поддерживается ли последний вообще универсально. Если вы хотите быть в безопасности, вы должны использовать MPEG-1 или MPEG-2.

slhck
источник
да ... это был довольно низкий битрейт для файла MPEG.
Бон Гарт
Хех. Я должен сказать, что мы действительно благословлены h.264 в эти дни.
slhck
особенно учитывая, что вы смотрите 4k на 5k в течение 2 хороших часов на DVD (конечно, вы можете пойти выше, но это всегда оставляет мне большой запас на диске для включения файла AVI и изображений и тому подобного)
Bon Gart
7

У меня была похожая проблема с файлом aac / h264 .mp4, который изначально нормально воспроизводился в проигрывателе Windows Media (Windows 7). После того как я отредактировал в VirtualDub и сохранил в формате .avi, а затем преобразовал обратно в aac / h264 .mp4 с использованием параметров по умолчанию ffmpeg, он больше не будет воспроизводиться в проигрывателе Windows Media.

Используя MediaInfo для сравнения исходного и конечного файлов, я заметил, что использовался другой профиль кодирования и разные настройки подвыборки цветности (4: 2: 0, окончательный 4: 4: 4). Перекодировав его с помощью ffmpeg, используя следующую опцию, WMP смог правильно воспроизвести файл:

ffmpeg  -i edited.avi -pix_fmt yuv420p fixed.mp4
Annihilannic
источник
1
См. Trac.ffmpeg.org/wiki/Encode/H.264#Encodingfordumbplayers, в котором упоминается использование -pix_fmt yuv420pи поддерживается эта идея.
Пользователь
Я только что проверил это на Windows 10. Просто добавив, -pix_fmt yuv420pя смог открыть mp4 в приложениях Microsoft (как встроенный плеер, так и Movie Maker).
Nux
0

Поскольку оба кодека уже поддерживаются контейнером AVI, вы можете просто сделать

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

это предполагает, что ваша XP поддерживает h.264, в противном случае я бы пошел с файлом wmv, тем же квантователем, и позволил бы ffmpeg заполнить кодеки. Это должно дать вам почти такое же качество, как оригинал:

ffmpeg -i x.flv -sameq x.wmv
Джастин Бузер
источник
2
Я почему-то сомневаюсь, что простая XP поддерживает
h.264
2
-sameqне должен использоваться для преобразования форматов, которые не разделяют подобный масштаб квантователя. Этот параметр не означает «то же качество», что и подразумеваемая документация. Кроме того, H.264 в AVI не рекомендуется (хотя H.264 без потерь [без b-кадров] подойдет).
Llogan