Монтаж и работа с контейнерами (avi, mkv, mp4, ts) [инструкция]

Ответить на тему
 
Автор Сообщение

admin ®

Пол: Мужской

Стаж: 7 лет 5 месяцев

Сообщений: 28

Создавать темы 04-Авг-2017 14:54

[Цитировать]

Последнее обновление: 2017-02-26В данной инструкции описаны типичные монтажные операции над видеофайлами, такие как:
  • склеика/разрезание.
  • извлечение/вставка звуковой дорожки или субтитров.
  • создание сэмпла для раздачи.
  • создание глав и ссылок (для контейнера mkv).

Операции монтажа никак не влияют на качество дорожек, т.к. не происходит никакой обработки.Программа MediaInfo в некоторых случаях высчитывает битрейт не правильно. Поэтому ориентироваться по ней не надо.

ЧИТАТЬ В ПЕРВУЮ ОЧЕРЕДЬ!

Для монтажа есть некоторые ограничения:
1. Резать без пересжатия можно только начиная с ключевого кадра. Соответственно вырезать кусок точно так как хочется не получится, если начало фрагмента не является ключевым кадром. Заканчиваться фрагмент может либо ключевым кадром, либо P-кадром (который не использует информацию из последующего кадра в отличие от B-кадров).
2. Определять границы для форматов MKV, MP4 и TS придется либо на ощупь, либо через создание простенького avs-скрипта, чтобы можно было его открыть в редакторе VirtualDub и спокойно определить границы вырезаемых фрагментов визуально. Создание скрипта описано ниже в разделе "Получение информации о типе каждого кадра сжатого видеопотока".
3. Звук в формате AC3 резать в произвольном месте так же нельзя. Он состоит из фрагментов по 32мс. Соответственно, если длина куска видео не кратна 32мс, то аудиопоток будет заканчиваться чуть раньше. При добавлении к такому фрагменту следующего фрагмента можно получить рассинхрон, т.к. аудиодорожка от второго фрагмента пойдет следом за аудиодорожкой из первого, без учета разницы в продолжительности потоков первого фрагмента. Т.е. маленький зазор, который должен быть, просто исчезнет. Решить эту проблему можно путем распаковки звука всех фрагментов, соединения их в любом аудиоредакторе с добавлением зазоров и последующим сжатием в нужный формат уже цельной дорожки, которую и прикрепляем к склеенным видеофрагментам.

Иллюстрация


Поэтому надо учитывать это при условии, что длина кадра для PAL равна 40мс, для NTSC - 1001/24мс.
4. Все эти форматы не созданы для редактирования, это как правило форматы конечного этапа хранения. Поэтому грамотное редактирование доступно лишь через полное или частичное пересжатие. С желанием вырезать один кадр вообще выхода кроме как пересжимать не остается.
5. Черные полосы можно убрать только при полном пересжатии видео. Исключение составляет формат mkv, в котором есть параметры позволяющие указывать границы отображаемой области. Но поддержка этих опций плеерами практически отсутствует.

Структура сжатого видеопотока (теория)

Как устроена видеопоследовательность
При сжатии видео используется 3 типа кадров: I, P и B.
I-кадр - это кадр, который не зависит от других кадров и сжат с очень небольшим коэффициентом. Его так же называют ключевым кадром. При просмотре сжатого видео вся навигация осуществляется через ключевые кадры. В результате приходится распаковать лишь кусок от ближайшего ключевого кадра чтобы попасть в нужное место видео.
После I-кадров следует последовательность P-кадров, которые имеют гораздо большую степень сжатия, т.к. сохраняют лишь отличия от предыдущего кадра. Последовательность видео в этом случае может выглядеть так: IPPPPPPPPPPPPPPPPIPPPPPPP...
Для дальнейшего увеличения сжатия были введены B-кадры. Они ставятся между двумя менее сжатыми кадрами (I/P или P/P). Последовательность получается такой: IPBPBPBPBPBPBPIPBPBPBP… (или IBPBPBPBPBPBPBPIPBPBPBP…).
Коэффициент сжатия B-кадров больше, чем коэффициент сжатия P-кадров, т.к. сохраняются лишь отличия от соседних кадров. Но вместе с этим накладывается определённые ограничения. Например, вырезаемый фрагмент видео не может заканчиваться B-кадром.

Иллюстрация


В случае, если фрагмент видео заканчивается B-кадром и нельзя отступить в сторону чтобы попасть на P- или I-кадр, то придется пересжимать часть фрагмента начиная с последнего I-кадра и до конца (т.е. нужного кадра).

Контейнеры (теория)

Контейнер AVI

Описание

Компания Microsoft впервые выпустила пакет Video for Windows для операционной системы Windows 3.1 в ноябре 1992 года, и с тех пор формат AVI (Audio Video Interleave) является основным для хранения видео в операционных системах семейства Windows.
Основное преимущество универсального формата AVI (и, кстати, «секрет» его долголетия), в отличие от потоковых форматов типа MPEG, а тем более от таких специализированных разновидностей, как MP3 (MPEG Audio Layer 3), в том, что «стандартных» AVI-файлов практически не существует: AVI — фактически не более чем «контейнер», который содержит общее описание содержимого в стандартизованном виде.
Таким образом, AVI-файлы только внешне выглядят одинаково, но внутри они могут сильно различаться, и, в то время как MPEG-, MP3- и MJPEG-файлы содержат потоки только определенного вида сжатия (компрессии), AVI может содержать много различных видов компрессии в любых сочетаниях. Однако работать с AVI-файлом можно будет только пока необходимый кодек доступен для кодирования/декодирования.
Серьезным недостатком AVI-формата является то, что аудио- и видеофрагменты не содержат никаких меток времени или индексов кадра. Данные упорядочиваются по времени последовательно, в порядке поступления. Приложение для захвата или проигрывания видео должно само позаботиться о синхронизации видео- и аудиопотоков. Но если деление видео на кадры совершенно естественно, то звук представляет собой непрерывный поток, который приходится искусственно расчленять на фрагменты, соответствующие кадрам (из-за этого точная синхронизация изображения и звука часто отсутствует и звук может 'расходиться' с изображением). В простейшем случае каждому кадру видео соответствует кусок звукового сопровождения, но далеко не все AVI-файлы делаются по этой простой схеме.
Недостаток временных меток был устранен в расширении AVI-формата - OpenDML AVI (поддержанный затем в DirectShow и в ActiveMovie), которое добавляет новые куски по меткам времени.
Контейнер уже давно устарел и все никак не хочет уходить на пенсию, причем подавляющая часть медиа контента в сети до сих пор распространяется именно в нем. Минусы:
  • Для каждой цепочки AVI-файла теряется 24 байта на заголовки и индекс. Это приводит к потерям чуть более 5МБ/час.
  • Может быть сохранено только содержимое с фиксированной частотой кадров. Т.е. не возможно поместить в AVI смешанный материал, например, смесь NTSC видео и киноматериала. В действительности, есть хаки, позволяющие сохранять содержимое с переменным fps в AVI, но они увеличивают (и без того большую) избыточность впятеро или более того и поэтому непрактичны.
  • Аудио в AVI-файлах должно быть или с постоянным битпотоком (CBR) или с постоянным размером кадра (т.е. все кадры декодируются в одно и то же число выборок).
  • AVI не способен отличить P-кадр от B-кадра. Не предусмотрено спецификацией. DivX / Xvid решают эту проблему в обход спецификации, что тоже не совсем хорошо и может создавать проблемы.
  • Контейнер AVI создавался для работы через интерфейс VfW (Video for Windows) и как раз VirtualDub является программой, использующей исключительно VfW. Поскольку VfW является сильно устаревшим и не гибким, современные программы используют DS (DirectShow). Программы использующие DS замечательно работают с контейнерами под DS заточенными, но вот с VfW возникают проблемы в виде расхождения аудио и видеодорожек. Поэтому не следует использовать для работы с AVI-файлами программы, работающие не через VfW.
  • Отсутствует поддержка современных кодеков.

Структура

В соответствии с общей структурой RIFF-типа, AVI-файл должен иметь следующий вид:
RIFF 'AVI '     // четырехбуквенный идентификатор файла (в RIFF-формате)
LIST 'hdrl'     // список заголовков блоков, определяющих форматы потоков
LIST 'movi'     // блоки данных (потоков) AVI-файла
     'idx1'     // необязательный блок, определяющий размещение блоков данных внутри AVI-файла <AVI Index>
То есть в AVI-файле должно быть по крайней мере два обязательных блока: заголовка и данных, которые, в свою очередь, могут содержать подблоки. Первый блок будет содержать общую информацию о видеоролике: разрешение кадров и их частоту, формат аудио и т.д. Сначала в заголовке для записи длины потока отводилось 32 байт, поскольку в файловой системе FAT 16 максимальный раздел диска не мог превышать 2 Гбайт, поэтому и максимальный кусок видео, который можно было записывать в AVI-файле, не мог превышать 2 Гбайт (с учетом знака переменной размера). Во времена возникновения формата казалось естественным, что длина файла не может превышать размер логического диска. С появлением файловых систем FAT 32 и NTFS верхняя граница размера раздела значительно отодвинулась, однако потребовалось еще немало времени, чтобы ввести расширение формата и дождаться программ, способных это ограничение обходить.
Список 'hdrl' может состоять из подсписков:
LIST 'hdrl'     // список заголовков блоков, определяющих форматы потоков
     'avih'     // главный заголовок AVI-файла
LIST 'strl'
     'strh'     // заголовок потока
     'strf'     // формат потока
     'strd'     // дополнительный заголовок данных

Список 'movi', в свою очередь, состоит из подблоков:
LIST 'movi'                                          // блоки данных (потоков) AVI-файла
SubChunk | LIST 'rec '                               // подблок | список записей
                '##wb' (размер блока 4 байта) (data) // звуковые данные (блок)
                '##dc' (размер блока 4 байта) (data) // видеоданные (блок)
                '##db' (размер блока 4 байта) (data) // видеоданные (блок)
Таким образом, подблок данных организован в виде последовательности записей, каждая из которых состоит из одного кадра видео и соответствующего звукового сопровождения. Первоначально ##dc-блок был предназначен для хранения сжатого изображения, а ##db-блок - для несжатого DIB (Device Independent Bitmap). Но фактически они оба могут содержать сжатые данные.

Контейнер MKV

Описание

Современный, отвечающий всем потребностям, отличный контейнер.
Matroska (так по-английски пишется русское слово Матрёшка) — проект, нацеленный на создание открытого гибкого кросс-платформенного (включая аппаратные платформы) стандарта форматов мультимедийных контейнеров и набора инструментов и библиотек для работы с данными в этом формате. Этот проект является развитием проекта MCF, но значительно отличается тем, что основан на EBML (Extensible Binary Meta Language — расширяемый двоичный метаязык) — двоичном аналоге языка XML. Использование EBML позволяет расширять формат без потери совместимости со старыми программами.
Возможности формата, закладываемые в Matroska:
  • трансляция по Интернету (протоколы HTTP и RTP);
  • быстрая перемотка в файле;
  • устойчивость к ошибкам;
  • разбиение файла на главы (Chapters);
  • переключаемые на лету субтитры (с возможностью добавлять свои шрифты прямо в контейнер - без необходимости их отдельной установки в ОС);
  • переключаемые звуковые дорожки;
  • модульная расширяемость;
Следует отметить, что проект аудио/видео контейнера не включает в себя форматов сжатия видео и кодеков (таких, как MP3 или JPEG). Это упаковка, которая может содержать большое число потоков аудио, видео, субтитров и других медиа-данных (картинки, шрифты и т.д.), позволяя пользователю хранить в одном файле несколько вариантов фильма и проигрывать его мультимедиа-проигрывателем в необходимой конфигурации.
Matroska является открытым проектом (open standard). Это означает, что для персонального использования она абсолютно бесплатна, а техническая спецификация формата битового потока доступна любому, даже компаниям, желающим встроить поддержку формата в свои продукты (для этого потребуется специальная лицензия). Исходный код всех библиотек, созданных группой разработчиков проекта Matroska распространяется на условиях LGPL (библиотека для проигрывания, написанная на C с использованием целочисленной арифметики, распространятся также на условиях лицензии BSD).
Matroska является прямой открытой альтернативой контейнерам AVI, ASF video, MOV, RealMedia, MP4, MPG. Существует поддержка адаптации и реализации библиотек Matroska для OpenBeOS Mediakit и GStreamer (англ.) (мультимедийной среды ОС GNU/Linux, похожей на Microsoft DirectShow для Windows) и набора фильтров DirectShow для воспроизведения и создания файлов Matroska в ОС Windows.

Контейнер MP4

Описание

Контейнер, который является стандартом для MPEG-4.
Имеет ограничения: не может содержать внутри видео в форматах: WMV, MPEG1, MPEG2, и не может содержать внутри звук в форматах: AC3, MP2, WMA.

Контейнер TS, M2TS

Описание

Целью создания контейнера TS является мультиплексирование аудио и видео данных и синхронизация их выхода. Т.е. основное назначение - трансляция по сетям передачи данных. Для этих целей в контейнере хранится очень много служебной информации. Например, при объемах ~30Gb служебная информация будет занимать ~2Gb.
Поток транслируется пакетами по 188 байт, в которых содержится вся необходимая служебная информация (флаги, заголовки, идентификаторы, данные синхронизации и прочее). В m2ts пакет уже не 188 байт, а 192 байта. Добавляется информация о тайм-кодах для организации произвольного доступа к потоку.

Сравнение различных контейнеров (англ.)

Получение информации о типе каждого кадра сжатого видеопотока

Способ через ffmpeg

Устанавливаем последнюю версию фрейм-серера AviSynth.
Качаем последнюю версию ffmpeg. Из этого архива в папку "C:\Program Files\AviSynth 2.5\plugins\" копируем файл ffms2.dll. Если в архиве есть файл ffms2.avsi, то его копируем тоже. Файл содержит готовые полезные функции. В частности там описана используемая далее функция FFInfo. При наличии этого файла её не надо будет вставлять в скрипт.
Создаем текстовый файл с расширением *.avs и следующим содержимым:

Cкрипт (без использования файла ffms2.avsi&#41;

function FFInfo(clip c, bool "framenum", bool "frametype", bool "cfrtime", bool "vfrtime")
{
framenum = default(framenum,true)
frametype = default(frametype,true)
cfrtime = default(cfrtime,true)
vfrtime = default(vfrtime,true)
global fftempclip = c
fftempclip = frameevaluate(fftempclip, """ fftempstring = "" """)
fftempclip = framenum ? frameevaluate(fftempclip, """fftempstring = fftempstring + "Frame Number: " + string(current_frame) + " of " + string(fftempclip.framecount) + "\n" """, after_frame=true) : fftempclip
fftempclip = frametype ? frameevaluate(fftempclip, """fftempstring = fftempstring + "Picture Type: " + chr(FFPICT_TYPE) + "\n" """, after_frame=true) : fftempclip
fftempclip = cfrtime ? frameevaluate(fftempclip, """fftempstring = fftempstring + "CFR Time: " + FFFormatTime(int((current_frame * 1000) / fftempclip.framerate)) + "\n" """, after_frame=true) : fftempclip
fftempclip = vfrtime ? frameevaluate(fftempclip, """fftempstring = fftempstring + "VFR Time: " + FFFormatTime(FFVFR_TIME) + "\n" """, after_frame=true) : fftempclip
return scriptclip(fftempclip, "subtitle(fftempclip, fftempstring, lsp = 1)", after_frame=true)
}


LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\ffms2.dll")
FFVideoSource("C:\Film.avi")
FFInfo(cfrtime = false, vfrtime = false)

Cкрипт (если используется файл ffms2.avsi&#41;

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\ffms2.dll")
FFVideoSource("C:\Film.avi")
FFInfo(cfrtime = false, vfrtime = false)
Открываем его в любом проигрывателе или редакторе вроде VirtualDub / VirtualDubMod или AvsP / AvsPmod.
Сначала придется подождать, это нормально. Видео индексируется.
Видим результат:

Иллюстрация



Способ через ffdshow

Устанавливаем последнюю версию фрейм-серера AviSynth.
Ставим последнюю версию ffdshow. Во время установки никакие опции трогать не надо. После установки заходим в меню "Пуск->Программы->ffdshow->Конфигурация видеодекодера". В списке слева отмечаем пункт "OSD", в открывшемся списке справа отмечаем пункт "Тип кадра" и подтверждаем изменения нажатием кнопки "OK".

Иллюстрация

Создаем текстовый файл с расширением *.avs и следующим содержимым:

Cкрипт

DirectShowSource("c:\film.avi")
Открываем его в любом проигрывателе или редакторе вроде VirtualDub / VirtualDubMod.
Видим результат:

Иллюстрация



Программы для работы с контейнерами


При перепаковке из одного контейнера в другой рекомендуется работать с чистыми потоками. Т.е сначала извлечь потоки из одного контейнера, потом собрать их в нужный формат. Для извлечения и сборки потоков использовать родные форматам утилиты.

Как наглядный пример к чему может привести перепаковка из одного контейнера в другой на прямую.

58028182
Категорически не рекомендуется использовать tsMuxeR для прямого перемуксивания из контейнера mkv в контейнер m2ts (BDAV). В результате таких действий в некоторых случаях при проигрывании таким способом полученного m2ts возникают глюки в виде притормаживаний и кратковременного зависания изображения. При демуксе такого m2ts прогой Eac3to обнаруживаются ошибки типа таких:
eac3to v3.27
command line: "G:\1\eac3to.exe" 00000.m2ts -demux -keepdialnorm
------------------------------------------------------------------------------
M2TS, 1 video track, 7 audio tracks, 2 subtitle tracks, 1:46:08, 24p /1.001
1: Chapters, 12 chapters
2: h264/AVC, 1080p24 /1.001 (16:9)
3: AC3, Russian, 5.1 channels, 384kbps, 48kHz, dialnorm: -27dB
4: DTS Master Audio, Russian, 5.1 channels, 24 bits, 48kHz
(core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)
5: AC3, Russian, 5.1 channels, 384kbps, 48kHz, dialnorm: -27dB
6: AC3, Russian, 5.1 channels, 384kbps, 48kHz, dialnorm: -27dB
7: AC3, Russian, 2.0 channels, 192kbps, 48kHz, dialnorm: -27dB
8: AC3, Russian, 2.0 channels, 192kbps, 48kHz, dialnorm: -27dB
9: DTS Master Audio, English, 5.1 channels, 24 bits, 48kHz
(core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)
10: Subtitle (PGS), Russian
11: Subtitle (PGS), English
Creating file "00000 - Chapters.txt"...
[v02] Extracting video track number 2...
[a04] Extracting audio track number 4...
[a06] Extracting audio track number 6...
[a08] Extracting audio track number 8...
[a07] Extracting audio track number 7...
[a03] Extracting audio track number 3...
[s10] Extracting subtitle track number 10...
[a05] Extracting audio track number 5...
[a09] Extracting audio track number 9...
[s11] Extracting subtitle track number 11...
[a09] Creating file "00000 - 9 - DTS Master Audio, English, 5.1 channels, 24 bits, 48kHz.dtsma"...
[a04] Creating file "00000 - 4 - DTS Master Audio, Russian, 5.1 channels, 24 bits, 48kHz.dtsma"...
[v02] Creating file "00000 - 2 - h264, 1080p24.h264"...
[a03] Creating file "00000 - 3 - AC3, Russian, 5.1 channels, 384kbps, 48kHz.ac3"...
[a06] Creating file "00000 - 6 - AC3, Russian, 5.1 channels, 384kbps, 48kHz.ac3"...
[a05] Creating file "00000 - 5 - AC3, Russian, 5.1 channels, 384kbps, 48kHz.ac3"...
[a07] Creating file "00000 - 7 - AC3, Russian, 2.0 channels, 192kbps, 48kHz.ac3"...
[a08] Creating file "00000 - 8 - AC3, Russian, 2.0 channels, 192kbps, 48kHz.ac3"...
[s10] Creating file "00000 - 10 - Subtitle (PGS), Russian.sup"...
[s11] Creating file "00000 - 11 - Subtitle (PGS), English.sup"...
[v02] Video overlaps for 14 frames at playtime 0:47:10. <WARNING>
[v02] Video overlaps for 14 frames at playtime 1:16:11. <WARNING>
[v02] Video overlaps for 14 frames at playtime 1:25:10. <WARNING>
[v02] Video overlaps for 14 frames at playtime 1:28:39. <WARNING>
[v02] Video overlaps for 15 frames at playtime 1:34:35. <WARNING>

Video track 2 contains 152693 frames.
Subtitle track 10 contains 863 captions.
Subtitle track 11 contains 1063 captions.
eac3to processing took 26 minutes, 43 seconds.
Done.
Правильный способ заключается в отдельном демуксе матрешки на голые потоки, например прогой Eac3to, и затем только замуксивание этих голых потоков в m2ts прогой tsMuxeR. В этом случае проигрывание происходит без глюков, демукс такого m2ts больше никаких ошибок не показывает:
eac3to v3.27
command line: "G:\1\eac3to.exe" 00000.m2ts -demux -keepdialnorm
------------------------------------------------------------------------------
M2TS, 1 video track, 7 audio tracks, 2 subtitle tracks, 1:46:08, 24p /1.001
1: Chapters, 12 chapters
2: h264/AVC, 1080p24 /1.001 (16:9)
3: AC3, Russian, 5.1 channels, 384kbps, 48kHz, dialnorm: -27dB
4: DTS Master Audio, Russian, 5.1 channels, 24 bits, 48kHz
(core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)
5: AC3, Russian, 5.1 channels, 384kbps, 48kHz, dialnorm: -27dB
6: AC3, Russian, 5.1 channels, 384kbps, 48kHz, dialnorm: -27dB
7: AC3, Russian, 2.0 channels, 192kbps, 48kHz, dialnorm: -27dB
8: AC3, Russian, 2.0 channels, 192kbps, 48kHz, dialnorm: -27dB
9: DTS Master Audio, English, 5.1 channels, 24 bits, 48kHz
(core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)
10: Subtitle (PGS), Russian
11: Subtitle (PGS), English
Creating file "00000 - Chapters.txt"...
[a05] Extracting audio track number 5...
[a07] Extracting audio track number 7...
[a09] Extracting audio track number 9...
[a06] Extracting audio track number 6...
[s11] Extracting subtitle track number 11...
[s10] Extracting subtitle track number 10...
[a04] Extracting audio track number 4...
[a08] Extracting audio track number 8...
[v02] Extracting video track number 2...
[a03] Extracting audio track number 3...
[a09] Creating file "00000 - 9 - DTS Master Audio, English, 5.1 channels, 24 bits, 48kHz.dtsma"...
[a04] Creating file "00000 - 4 - DTS Master Audio, Russian, 5.1 channels, 24 bits, 48kHz.dtsma"...
[v02] Creating file "00000 - 2 - h264, 1080p24.h264"...
[a03] Creating file "00000 - 3 - AC3, Russian, 5.1 channels, 384kbps, 48kHz.ac3"...
[a05] Creating file "00000 - 5 - AC3, Russian, 5.1 channels, 384kbps, 48kHz.ac3"...
[a06] Creating file "00000 - 6 - AC3, Russian, 5.1 channels, 384kbps, 48kHz.ac3"...
[a08] Creating file "00000 - 8 - AC3, Russian, 2.0 channels, 192kbps, 48kHz.ac3"...
[a07] Creating file "00000 - 7 - AC3, Russian, 2.0 channels, 192kbps, 48kHz.ac3"...
[s10] Creating file "00000 - 10 - Subtitle (PGS), Russian.sup"...
[s11] Creating file "00000 - 11 - Subtitle (PGS), English.sup"...
Video track 2 contains 152688 frames.
Subtitle track 10 contains 863 captions.
Subtitle track 11 contains 1063 captions.
eac3to processing took 28 minutes, 11 seconds.
Done.
152688 - правильное количество кадров.

-

AviInfo (AVI Tags&#41;

Скачать
Запускаем программу и указываем AVI-файл, тэги которого нужно отредактировать.
Выбираем пункт меню "Options -> Edit AVI Tags".

Иллюстрация

Редактируем информацию о фильме и нажимаем кнопку "Done".

Иллюстрация

VirtualDub (AVI&#41;

Для работы с контейнером AVI нет ничего лучше, чем многофункциональный VirtualDub. Лучше всего использовать его модификацию VirtualDubMod. Скачивать надо версию "All inclusive". Операции монтажа достаточно удобно сделаны, хоть иногда и косячат. Последнее выражается в том, что программа отображает не тот кадр на котором стоит курсор. Поэтому осуществляя операции монтажа надо четко представлять что делаете.

Ввод данных

Видео фрагмент открывается через пункт меню "File -> Open video file".
Остальные данные - в процессе работы.

Вырезать фрагмент / удалить фрагмент

В нижней части окна программы при помощи бегунка находим начало нужного сегмента и в меню выбираем "Edit -> Set selection start", либо используем клавишу "Home" на клавиатуре. Под полосой прокрутки размещены панель навигации и информация о времени, номере кадра и объеме фрагмента в мегабайтах от начала до текущей позиции. Если при этом рядом со счетчиком времени будет буковка [K], то можно считать, что ваши пожелания совпали с вашими возможностями. Потому как это обозначение ключевого кадра. Для перемещения строго по ключевым кадрам нужно зажать "Shift".

Иллюстрация

Если же такого счастья не случилось, то есть два варианта:
1. Сдвинуть бегунок влево до ближайшего ключевого кадра. Впрочем программа сделает это сама, если вы ничего не будете менять.
2. Сдвинуть бегунок вправо до ближайшего ключевого кадра. Вырезать фрагмент, а недостающую часть потом пересжать.
Чтобы указать конец фрагмента, нужно так же поставить бегунок на нужный кадр и в меню выбрать "Edit -> Set selection end", либо воспользоваться клавишей "End" на клавиатуре.

Иллюстрация

Как только указали начало и конец, то сразу на полосе прокрутки фрагмент будет отмечен выделением.
Теперь выставляем обязательно опцию "Video -> Direct stream copy" чтобы программа ничего не пересжимала.
Для того чтобы вырезать фрагмент просто сохраняем его в отдельный файл при помощи команды меню "File -> Save as".
Для того чтобы удалить фрагмент нужно нажать кнопку "Del", тем самым удалив фрагмент, и сохранить оставшееся в отдельный файл при помощи команды меню "File -> Save as".

Склеить два фрагмента

Чтобы склеить два фрагмента должны выполняться следующие условия:
1. Должно совпадать разрешение обоих фрагментов.
2. Должна совпадать частота кадров обоих фрагментов.
3. Должны совпадать потоки аудио дорожек.
4. Должен совпадать битрейт аудио дорожек.
5. Фрагменты не должны содержать пустот в потоках аудио дорожек в начале (задержка дорожки) и в конце (дорожка короче видео) фрагмента. Иначе все может покоситься. VirtualDub совершенно не умеет обрабатывать подобные моменты.
Для того чтобы склеить два фрагмента достаточно открыть первый фрагмент обычным способом через пункт меню "File -> Open video file" и добавить второй фрагмент через пункт меню "File -> Append segment". Если все нормально, то никаких сообщений не будет и останется только сохранить результат через команду в пункте меню "File -> Save as", не забыв при этом выставить опцию "Video -> Direct stream copy".
Если же вылезла какая либо ошибка, значит технические характеристики фрагментов не идентичны.
При склеивании фрагментов с fps не являющимся целыми числами могут возникнуть проблемы - VirtualDub будет выдавать ошибку несовпадения fps у фрагментов на тысячные доли. В этом случае можно сделать так:
- разобрать оба фрагмента на видео и аудио
- выставить у видео обоих фрагментов fps равный 25
- склеить фрагменты видео и сохранить
- открыть полученный файл, изменить fps на исходный и пересохранить
- склеить аудиодорожки фрагментов (но надо учитывать, что в этом случае может что то съехать, если аудиодорожки фрагментов не совпадают по продолжительности с продолжительностью своих видеопотоков)
- осталось соединить вместе получившиеся видеопоток и аудиодорожки.
Если в фрагментах звук в формате mp3 с переменным битрейтом, то может потребоваться раздельная склейка видео и аудио.

Добавить аудио дорожку

Вот тут как раз и проявляется все удобство VirtualDubMod по сравнению с оригинальным VirtualDub. Удобно работать с потоками и расширенный список поддерживаемых аудио-форматов.
Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек. Чтобы добавить дорожку жмем на кнопку "add" и выбираем файл со звуковой дорожкой. Кнопками "Move up / Move down" можно переместить её на нужную позицию, например, на первую (если добавляем перевод).
Так же здесь можно задать сдвиг дорожки в миллисекундах. Для этого щелкаем правой кнопкой мышки по нужной дорожке и выбираем пункт меню "Interleaving...". Здесь, в поле "Delay audio track by..." выставляем положительное значения для задержки звука или отрицательное для опережения.

Иллюстрация

Иллюстрация

Здесь так же не забываем выставить "Video -> Direct stream copy". Далее сохраняем результат через "File -> Save as".

Удалить аудио дорожку

Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек.

Иллюстрация

Чтобы удалить дорожку выделяем её и жмем кнопку "Disable".

Иллюстрация

Далее сохраняем результат через "File -> Save as". Не забываем выставить опцию "Video -> Direct stream copy".

Вырезать аудио дорожку

Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек.

Иллюстрация

Выделяем нужную и жмем кнопку "Demux".

Иллюстрация

Дать имя аудиодорожке

Переходим в меню "Streams -> Stream list". Видим окно со списком аудио дорожек.

Иллюстрация

Выделяем нужную дорожку и жмем кнопку "Comments".

Иллюстрация

Слева в выпадающем списке выбираем "Title", в поле "Value" вписывем как хотим обозвать дорожку. Это может быть что угодно, т.е. не обязательно язык дорожки. Нажимаем кнопку "Add", после чего комментарий будет добавлен. Если понадобилось отредактировать комментарий, нужно выделить его, поправить значение поля "Value" и нажать кнопку "Edit". Осталось нажать кнопку "OK" чтобы закрыть текущее окно и вернуться к списку дорожек.

Иллюстрация

Выглядеть будет, например, в Media Player Classic Homecinema так:

Иллюстрация


К сожалению другие свойства аудиодорожек, доступные в VirtualDub, кроме "Title" не работают.
Есть возможность добавить несколько комментариев, но это не имеет смысла, т.к. отображается только первый.
Так же надо заметить, что VirtualDubMod при открытии файла эти поля не считывает, поэтому надо это учитывать.

Разрезать фильм на равные части

В меню "Save As" ставим галочку на "Segment output file", в поле "Limit size (in MegaBytes) of each segment to" выставляем на части какого объема резать. Ниже не забываем выставить значение "Video mode" в "Direct Stream Copy". Теперь жмем "Сохранить" и получаем файл в нарезке.

Иллюстрация

Определить задержку аудио дорожки

Часто у аудиодорожек задают положительный сдвиг - задержку. Определить её можно следующим образом: извлекаем аудио дорожку и снова её прикрепляем. Высчитываем разницу между продолжительностью родной дорожки и прикрепленной. Это и есть задержка. Т.е. VirtualDubMod показывает продолжительность дорожки вместе с задержкой, а извлекается дорожка, естественно, без задержки.

Замена идентификатора XviD &lt;-&gt; DivX (FourCC&#41;

Кодеки XviD и DivX хоть и развиваются не зависимо, но имеют общие корни. В результате чего создаваемый ими код совместим. Многие бытовые плееры, которые проигрывают DivX не воспринимают XviD. В основном это основано именно на идентификаторе. Если его заменить, то и фильм сжатый при помощи XviD будет воспроизводится без проблем.
Поправить идентификатор очень просто. Для этого понадобится либо оригинальный VirtualDub, либо VirtualDubMod, главное - при открытии файла в "Hex editor" снять в самому низу галочку "Только чтение".
Запускаем VirtualDub или VirtualDubMod и вызываем утилиту "Tools -> Hex editor".

Иллюстрация

Открываем нужное видео через меню "File -> Open".

Иллюстрация

Перед нами откроется содержимое файла как оно есть.
Находим в колонке справа надпись "XVID" большими буквами.

Иллюстрация

Ставим курсор на первую букву этой надписи и вписываем как в любом текстовом редакторе надпись "DX50".

Иллюстрация

Остается только сохранить результат через меню "File -> Save".

Иллюстрация

Результат можно проверить сразу в VirtualDub в свойствах файла через меню "File -> File Information".
Предварительно видео нужно открыть в VirtualDub через меню "File -> Open Video file".

Иллюстрация

Иллюстрация

Иллюстрация (было&#41;

Иллюстрация (стало&#41;

Сохранение AVI без поддержки Open-DML для совместимости с бытовыми DVD проигрывателями

При сохранении файла достаточно выставить галочку на "Save AVI in old 1.0 (VfW 1.1e) format (Compatibility mode)".

Иллюстрация

MKVToolNix (MKV&#41;

Для работы с контейнером MKV существует родная для формата утилита MKVToolNix.

Важные изменения

4.0.0

Предупреждение: С версии 4.0.0 обновилась библиотека libMatroska, что может привести к проблемам с воспроизведением на бытовых проигрывателях выпущенных ранее. Поэтому рекомендуется в случае необходимости проигрывания на бытовых устройствах использовать более ранние версии.
Комментарий: Уже не актуально. Начиная с версии 6.0.0 сжатие заголовков по умолчанию отключено, пункт из меню настроек программы исключен.

4.1.0

Предупреждение: С версии 4.1.0 по умолчанию для всех потоков выставлено сжатие заголовков, что может быть причиной отсутствия видео и звука при проигрывании на бытовых медиапроигрывателях. Чтобы этого избежать надо выставить опцию сжатия в "None" для каждой из дорожек на вкладке "Extra options -> Compression".

Отключение сжатия заголовков

Заходим в настройки программы через меню "File -> Options"

Иллюстрация


Отмечаем пункт "Disable header removal compression for audio and video tracks by default".

Иллюстрация

5.9.0

Предупреждение: С версии 5.9.0 добавляются новые опции в структуру контейнера. Согласно спецификации mkv проигрыватель наткнувшись на не знакомые элементы должен их просто проигнорировать. Но не все проигрыватели следуют спецификации. Поэтому могут возникнуть проблемы с воспроизведением файлов созданных этой и последующими версиями сборщика. Чтобы отключить добавление дополнительной информации надо использовать параметры командной строки "--engage no_cue_duration" и "--engage no_cue_relative_position".

Отключение добавления дополнительной информации в структуру контейнера

Заходим в меню "Muxing -> Add command line options".

Иллюстрация


В появившемся окне, в нижней части вставляем параметры --engage no_cue_duration и --engage no_cue_relative_position и нажимаем "Ok".

Иллюстрация

Либо - что проще и удобнее - выбираем поочередно эти параметры из выпадающего списка "Available options" и добавляем кнопкой "Add" справа.
Чтобы эти параметры программа запомнила и использовала в дальнейшем нужно поставить галочку "Save as default for new jobs".

Иллюстрация


Проверить можно через меню "Muxing -> Show the command line".

Иллюстрация


В появившемся окне должны присутствовать параметры --engage no_cue_duration и --engage no_cue_relative_position.

Иллюстрация

7.0.0

В версии программы MKVToolNix v7.0.0 появилась новая функция (читайте ChangeLog-файл описания изменений), автоматически генерирующая и добавляющая в контейнер технические данные о каждой его основной дорожке в виде файлов Тегов при очередном мультиплексировании.

Иллюстрация

По заявлению разработчика включение данной функции обусловлено необходимостью более легкого получения данной информации для других программ.
Теги дорожек на сегодняшний день включают следующие параметры (возможно, их список будет расширяться):
  • BPS – средний битрейт (скорость передачи);
  • DURATION – продолжительность;
  • NUMBER_OF_FRAMES – количество кадров/пакетов для видео/аудио или количество записей для субтитров;
  • NUMBER_OF_BYTES – размер дорожки в Байтах;
  • _STATISTICS_WRITING_APP – информация о программе при помощи, которой был создан данный контейнер MKV;
  • _STATISTICS_WRITING_DATE_UTC – дата и время по UTC создания/обработки контейнера;
  • _STATISTICS_TAGS – информация о содержании данного файла тегов.
В MKVMergeGUI эта функция включена по умолчанию, но вы всегда можете ее отключить при помощи одного из параметров командной строки:

Иллюстрация

Перейдите в пункт меню Обработка (Muxing) --> Добавить параметры командной строки (Add command line options).
В открывшемся окне в разделе Доступные параметры: (Available options:) выберите "--disable-track-statistics-tags" и нажмите кнопку Добавить (Add).

Иллюстрация

Этот параметр пропишется в поле Параметры командной строки: (Command line options:). При желании можете Сохранить как параметры по умолчанию для новых заданий (Save as default for new jobs) и далее жмите OK.
Автор комментария - Alofa

Рекомендация: Если нужно поменять какие то атрибуты вроде названия потоков или их языка, это можно сделать без пересборки контейнера. Для этих целей есть редактор заголовков.

Использование редактора заголовков

Редактор заголовка запускается через меню "MKVToolNix GUI -> Header editor" утилиты "mkvmerge GUI".

Иллюстрация

Чтобы открыть в нем редактируемый файл можно воспользоваться пунктом меню "File -> Open" или просто перетащить нужный файл из проводника операционной системы в окно программы.
После анализа файла в левой части окна программы будет вы
[Профиль] [ЛС]
Показать сообщения:    
Ответить на тему

Текущее время: 12-Дек 08:13

Часовой пояс: UTC ± 0



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы