7.8. Использование MEncoder для создания VCD/SVCD/DVD-совместимых файлов.
MEncoder способен создавать MPEG файлы VCD, SCVD
и DVD формата, используя библиотеку libavcodec
.
Эти файлы затем могут быть использованы совместно с
vcdimager
или
dvdauthor
для создания дисков, которые будут воспроизводиться на стандартном видео
проигрывателе.
DVD, SVCD, и VCD форматы обладают жесткими ограничениями. Доступен только небольшой выбор размеров и пропорций кодируемого изображения. Если Ваш фильм пока не удовлетворяет этим ограничениям, придется изображение масштабировать, обрезать или добавлять к нему черные полосы, чтобы добиться совместимости.
Формат | Разрешение | Вид. Кодек | Вид. Битпоток | Дискретизация | Ауд. Кодек | Ауд. Битпоток | FPS | Пропорции |
---|---|---|---|---|---|---|---|---|
NTSC DVD | 720x480, 704x480, 352x480, 352x240 | MPEG-2 | 9800 кбит/с | 48000 Гц | AC-3,PCM | 1536 кбит/с (макс.) | 30000/1001, 24000/1001 | 4:3, 16:9 (только для 720x480) |
NTSC DVD | 352x240[a] | MPEG-1 | 1856 кбит/с | 48000 Гц | AC-3,PCM | 1536 кбит/с (макс.) | 30000/1001, 24000/1001 | 4:3, 16:9 |
NTSC SVCD | 480x480 | MPEG-2 | 2600 кбит/с | 44100 Гц | MP2 | 384 кбит/с (макс.) | 30000/1001 | 4:3 |
NTSC VCD | 352x240 | MPEG-1 | 1150 кбит/с | 44100 Гц | MP2 | 224 кбит/с | 24000/1001, 30000/1001 | 4:3 |
PAL DVD | 720x576, 704x576, 352x576, 352x288 | MPEG-2 | 9800 кбит/с | 48000 Гц | MP2,AC-3,PCM | 1536 кбит/с (макс.) | 25 | 4:3, 16:9 (только для 720x576) |
PAL DVD | 352x288[a] | MPEG-1 | 1856 кбит/с | 48000 Гц | MP2,AC-3,PCM | 1536 кбит/с (макс.) | 25 | 4:3, 16:9 |
PAL SVCD | 480x576 | MPEG-2 | 2600 кбит/с | 44100 Гц | MP2 | 384 кбит/с (макс.) | 25 | 4:3 |
PAL VCD | 352x288 | MPEG-1 | 1152 кбит/с | 44100 Гц | MP2 | 224 кбит/с | 25 | 4:3 |
[a] Эти разрешения редко используются для DVD, поскольку имеют довольно низкое качество. |
Если Ваш фильм имеет пропорции 2.35:1 (большинство современных фильмов с обилием движения), для создания DVD или VCD придется добавить черные полосы или обрезать фильм до 16:9. Добавляя черные полосы, пытайтесь выровнять их размеры на границу в 16 пикселов, чтобы минимизировать влияние на производительность кодирования. К счастью, DVD имеет достаточно избыточный битпоток, чтобы не сильно беспокоиться об эффективности кодирования, но SVCD и VCD весьма ограничены в битпотоке и требуют определенных усилий для достижения приемлемого качества.
DVD, VCD, и SVCD также ограничивают Вас относительно низкими размерами GOP (Group of Pictures, Группа Изображений). Для материала с 30 fps максимальный допустимый размер GOP равен 18. Для 25 или 24 fps, максимум равен 15. Размер GOP устанавливается опцией keyint.
VCD видео должно быть CBR с 1152 кбит/с. Это сильное ограничение усугубляется, к тому же, чрезвычайно низким размером vbv буфера, равным 327 килобит. SVCD допускает различные значения видео битпотока вплоть до 2500 кбит/с и не так сильно стесняющий размер vbv буфера, равный 917 килобит. У DVD видео битпоток может свободно меняться вплоть до 9800 kbps (хотя обычный поток равен примерно половине этого значения), а размер vbv буфера равен 1835 килобит.
У 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.
Аргумент 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
Для того, чтобы сохранять аудио/видео синхронизацию на протяжении всего кодирования, MEncoder должен выбрасывать или дублировать кадры. Это довольно неплохо работает при мультиплексировании в AVI файл, но с другими мультиплексорами, такими как MPEG, почти гарантировано приведет к нарушению A/V синхронизации. Для избежания подобных проблем, необходимо добавить видео фильтр harddup в конец цепочки фильтров. Дополнительную техническую информацию о harddup можно найти в разделе Улучшение мультиплексирования и надежности A/V синхронизации или в man руководстве.
Если частота дискретизации в оригинальном файле не совпадает с требуемой в целевом формате, необходимо преобразование. Его можно осуществить, совместно используя опцию -srate и аудио фильтр-af lavcresample.
DVD:
-srate 48000 -af lavcresample=48000
VCD и SVCD:
-srate 44100 -af lavcresample=44100
Используя соответствующие опции, можно применять
libavcodec
для создания VCD/SVCD/DVD
совместимого видео.
Это список полей в -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 проигрывателями.
Это обычный минимальный набор -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
Для достижения более высокого качества кодирования, Вы также можете добавить опции 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
VCD и SVCD поддерживают звук MPEG-1 layer II, используя одну из
toolame
,
twolame
,
или MP2 libavcodec
кодировщик.
libavcodec MP2 не так хорош, как остальные две библиотеки, однако, он должен
быть всегда доступен для использования.
VCD поддерживает только звук с постоянным битпотоком (CBR), в то время как SVCD
также поддерживает и переменный (VBR). Будьте осторожны, используя VBR,
поскольку некоторые плохие аппаратные проигрыватели могут не очень хорошо его
поддерживать.
Для DVD звука используется AC-3 кодек из libavcodec
.
Этот раздел демонстрирует некоторые полные команды для создания VCD/SVCD/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
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
Если исходный материал уже содержит 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
Если исходный материал уже содержит 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
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
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
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
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