7.8. Использование MEncoder для создания VCD/SVCD/DVD-совместимых файлов.

7.8.1. Ограничения формата

MEncoder способен создавать MPEG файлы VCD, SCVD и DVD формата, используя библиотеку libavcodec. Эти файлы затем могут быть использованы совместно с vcdimager или dvdauthor для создания дисков, которые будут воспроизводиться на стандартном видео проигрывателе.

DVD, SVCD, и VCD форматы обладают жесткими ограничениями. Доступен только небольшой выбор размеров и пропорций кодируемого изображения. Если Ваш фильм пока не удовлетворяет этим ограничениям, придется изображение масштабировать, обрезать или добавлять к нему черные полосы, чтобы добиться совместимости.

7.8.1.1. Ограничения форматов

ФорматРазрешениеВид. КодекВид. БитпотокДискретизацияАуд. КодекАуд. БитпотокFPSПропорции
NTSC DVD720x480, 704x480, 352x480, 352x240MPEG-29800 кбит/с48000 ГцAC-3,PCM1536 кбит/с (макс.)30000/1001, 24000/10014:3, 16:9 (только для 720x480)
NTSC DVD352x240[a]MPEG-11856 кбит/с48000 ГцAC-3,PCM1536 кбит/с (макс.)30000/1001, 24000/10014:3, 16:9
NTSC SVCD480x480MPEG-22600 кбит/с44100 ГцMP2384 кбит/с (макс.)30000/10014:3
NTSC VCD352x240MPEG-11150 кбит/с44100 ГцMP2224 кбит/с24000/1001, 30000/10014:3
PAL DVD720x576, 704x576, 352x576, 352x288MPEG-29800 кбит/с48000 ГцMP2,AC-3,PCM1536 кбит/с (макс.)254:3, 16:9 (только для 720x576)
PAL DVD352x288[a]MPEG-11856 кбит/с48000 ГцMP2,AC-3,PCM1536 кбит/с (макс.)254:3, 16:9
PAL SVCD480x576MPEG-22600 кбит/с44100 ГцMP2384 кбит/с (макс.)254:3
PAL VCD352x288MPEG-11152 кбит/с44100 ГцMP2224 кбит/с254:3

[a] Эти разрешения редко используются для DVD, поскольку имеют довольно низкое качество.

Если Ваш фильм имеет пропорции 2.35:1 (большинство современных фильмов с обилием движения), для создания DVD или VCD придется добавить черные полосы или обрезать фильм до 16:9. Добавляя черные полосы, пытайтесь выровнять их размеры на границу в 16 пикселов, чтобы минимизировать влияние на производительность кодирования. К счастью, DVD имеет достаточно избыточный битпоток, чтобы не сильно беспокоиться об эффективности кодирования, но SVCD и VCD весьма ограничены в битпотоке и требуют определенных усилий для достижения приемлемого качества.

7.8.1.2. Ограничения на размер GOP

DVD, VCD, и SVCD также ограничивают Вас относительно низкими размерами GOP (Group of Pictures, Группа Изображений). Для материала с 30 fps максимальный допустимый размер GOP равен 18. Для 25 или 24 fps, максимум равен 15. Размер GOP устанавливается опцией keyint.

7.8.1.3. Ограничения на битпоток

VCD видео должно быть CBR с 1152 кбит/с. Это сильное ограничение усугубляется, к тому же, чрезвычайно низким размером vbv буфера, равным 327 килобит. SVCD допускает различные значения видео битпотока вплоть до 2500 кбит/с и не так сильно стесняющий размер vbv буфера, равный 917 килобит. У DVD видео битпоток может свободно меняться вплоть до 9800 kbps (хотя обычный поток равен примерно половине этого значения), а размер vbv буфера равен 1835 килобит.

7.8.2. Опции вывода

У MEncoder есть опции, управляющие выходным форматом. Используя их, можно дать указание создать файл корректного типа.

Для VCD и SVCD опции называются xvcd и xsvcd, потому что они являются расширенными форматами. Они не полностью совместимы, в основном, потому что не содержат смещений развёртки. Если нужно создать образ SVCD, следует передать выходной файл программе vcdimager.

VCD:

-of mpeg -mpegopts format=xvcd

SVCD:

-of mpeg -mpegopts format=xsvcd

DVD (с временными метками на каждом кадре, если возможно):

-of mpeg -mpegopts format=dvd:tsaf

DVD с NTSC Pullup:

-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001

Это делает возможным кодирование 24000/1001 fps построчного содержимого с частотой 30000/1001 fps, с одновременным сохранением совместимости с DVD.

7.8.2.1. Пропорции

Аргумент aspect в -lavcopts используется для кодирования коэффициента пропорций файла. Коэффициент пропорций используется в процессе воспроизведения для восстановления правильного размера видео.

16:9 or "Широкоэкранный"

-lavcopts aspect=16/9

4:3 or "Полноэкранный"

-lavcopts aspect=4/3

2.35:1 or "Кинематографический" NTSC

-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9

Для вычисления правильного размера масштабирования используйте расширенную ширину NTSC 854/2.35 = 368

2.35:1 or "Кинематографический" PAL

-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9

Для вычисления правильного размера масштабирования используйте расширинную ширину PAL 1024/2.35 = 432

7.8.2.2. Сохранение A/V синхронизации

Для того, чтобы сохранять аудио/видео синхронизацию на протяжении всего кодирования, MEncoder должен выбрасывать или дублировать кадры. Это довольно неплохо работает при мультиплексировании в AVI файл, но с другими мультиплексорами, такими как MPEG, почти гарантировано приведет к нарушению A/V синхронизации. Для избежания подобных проблем, необходимо добавить видео фильтр harddup в конец цепочки фильтров. Дополнительную техническую информацию о harddup можно найти в разделе Улучшение мультиплексирования и надежности A/V синхронизации или в man руководстве.

7.8.2.3. Преобразование частоты дискретизации

Если частота дискретизации в оригинальном файле не совпадает с требуемой в целевом формате, необходимо преобразование. Его можно осуществить, совместно используя опцию -srate и аудио фильтр-af lavcresample.

DVD:

-srate 48000 -af lavcresample=48000

VCD и SVCD:

-srate 44100 -af lavcresample=44100

7.8.3. Использование libavcodec для VCD/SVCD/DVD кодирования

7.8.3.1. Введение

Используя соответствующие опции, можно применять libavcodec для создания VCD/SVCD/DVD совместимого видео.

7.8.3.2. lavcopts

Это список полей в -lavcopts, которые может потребоваться изменить, чтобы создать совместимый фильм для VCD, SVCD или DVD:

  • acodec: mp2 для VCD, SVCD, или PAL DVD; ac3 наиболее часто используется для DVD. Для DVD также может использоваться PCM, но это, по большей части, бесполезная трата свободного места. Имейте в виду, что MP3 аудио не совместимо ни с одним из этих форматов, но, как бы то ни было, часто проигрыватели не испытывают никаких проблем с его воспроизведением.

  • abitrate: 224 для VCD; вплоть до 384 для SVCD; вплоть до 1536 для DVD, но распространенным является диапазон значений от 192 кбит/с для стерео до 384 кбит/с для 5.1 звука.

  • vcodec: mpeg1video для VCD; mpeg2video для SVCD; mpeg2video обычно используется для DVD, но Вы также можете использовать mpeg1video для CIF разрешений.

  • keyint: Используется для установки размера GOP. 18 для 30fps материала или 15 для 25/24 fps материала. Коммерческие изготовители, похоже, предпочитают значение интервала ключевых кадров, равное 12. Можно значительно увеличить это значение и все еще сохранять совместимость с большинством проигрывателей. keyint равное 25 не должно вызывать никаких проблем.

  • vrc_buf_size: 327 для VCD, 917 для SVCD и 1835 ддя DVD.

  • vrc_minrate: 1152 для VCD. Может не указываться для SVCD и DVD.

  • vrc_maxrate: 1152 для VCD; 2500 для SVCD; 9800 для DVD. Для SVCD и DVD Вы, возможно, пожелаете использовать меньшие значения в зависимости от Ваших личных требований и предпочтений.

  • vbitrate: 1152 для VCD; вплоть до 2500 для SVCD; вплоть до 9800 для DVD. Для двух последний форматов, vbitrate следует установить на основании личных предпочтений. Например, если Вы настаиваете на размещении 20 или около того часов видео на DVD, можете использовать vbitrate=400. Качество получившегося видео, возможно, будет довольно плохим. Если Вы пытаетесь выжать максимально возможное качество на DVD, используйте vbitrate=9800, но имейте в виду, что это ограничит Вас менее чем одним часом видео на однослойном DVD.

  • vstrict: vstrict=0 следует использовать для создания DVD. Без этой опции MEncoder создает поток, который не может быть корректно декодирован некоторыми аппаратными DVD проигрывателями.

7.8.3.3. Примеры

Это обычный минимальный набор -lavcopts для кодирования видео:

VCD:

-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2

SVCD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
keyint=15:acodec=mp2

DVD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3

7.8.3.4. Расширенные опции

Для достижения более высокого качества кодирования, Вы также можете добавить опции lavcopts, улучшающие качество, такие как trell, mbd=2 и другие. Обратите внимание, что qpel и v4mv, часто полезные с MPEG-4, не применимы к MPEG-1 или MPEG-2. Также, если Вы хотите выполнить очень высококачественное кодирование DVD, может быть полезным добавление dc=10 в lavcopts. Это может помочь подавить появление блоков в однородно окрашенных областях. Подводя итог, вот пример настроек lavcopts для высококачественного DVD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
vqmin=1:lmin=1:dc=10:vstrict=0

7.8.4. Кодирование звука

VCD и SVCD поддерживают звук MPEG-1 layer II, используя одну из toolame, twolame, или MP2 libavcodec кодировщик. libavcodec MP2 не так хорош, как остальные две библиотеки, однако, он должен быть всегда доступен для использования. VCD поддерживает только звук с постоянным битпотоком (CBR), в то время как SVCD также поддерживает и переменный (VBR). Будьте осторожны, используя VBR, поскольку некоторые плохие аппаратные проигрыватели могут не очень хорошо его поддерживать.

Для DVD звука используется AC-3 кодек из libavcodec.

7.8.4.1. toolame

Для VCD и SVCD:

-oac toolame -toolameopts br=224

7.8.4.2. twolame

Для VCD и SVCD:

-oac twolame -twolameopts br=224

7.8.4.3. libavcodec

Для 2 канального DVD звука:

-oac lavc -lavcopts acodec=ac3:abitrate=192

Для DVD с 5.1 звуком:

-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384

Для VCD и SVCD:

-oac lavc -lavcopts acodec=mp2:abitrate=224

7.8.5. Собирая все вместе

Этот раздел демонстрирует некоторые полные команды для создания VCD/SVCD/DVD совместимого видео.

7.8.5.1. PAL DVD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
  -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 \
  -o фильм.mpg фильм.avi

7.8.5.2. NTSC DVD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
  -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \
  -o фильм.mpg фильм.avi

7.8.5.3. PAL AVI, содержащий AC-3 звук, в DVD

Если исходный материал уже содержит AC-3 звук, используйте -oac copy вместо перекодирования.

mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
  -vf scale=720:576,harddup -ofps 25 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:aspect=16/9 -o фильм.mpg фильм.avi

7.8.5.4. NTSC AVI, содержащий AC-3 звук, в DVD

Если исходный материал уже содержит AC-3 звук и является NTSC @ 24000/1001 fps:

mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \
  -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
  vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \
  -o фильм.mpg фильм.avi

7.8.5.5. PAL SVCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
    scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224:aspect=16/9 -ofps 25 \
    -o фильм.mpg фильм.avi

7.8.5.6. NTSC SVCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd  -vf \
    scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224:aspect=16/9 -ofps 30000/1001 \
    -o фильм.mpg фильм.avi

7.8.5.7. PAL VCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
    scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:\
vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224:aspect=16/9 -ofps 25 \
    -o фильм.mpg фильм.avi

7.8.5.8. NTSC VCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
    scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:\
vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224:aspect=16/9 -ofps 30000/1001 \
    -o фильм.mpg фильм.avi