D2V Witch

D2V Witch создаёт D2V-индексы для MPEG-1 и MPEG-2, позволяет выбрать видеопоток и цветовой диапазон, извлечь нужные аудиодорожки, а в графическом интерфейсе — отметить диапазон кадров и демультиплексировать выбранную часть видеопотока для дальнейшего открытия через d2vsource.

На вход подходят элементарные MPEG-потоки, программные потоки, транспортные потоки и PVA. Результат индексирования — небольшой файл D2V с описанием структуры исходного видео и путями к входным файлам; это не перекодированная копия ролика. При необходимости программа отдельно демультиплексирует отмеченные аудиодорожки, сохраняя исходный медиапоток без этапа видеокодирования.

Работать можно через графическое окно или командную строку. В окне доступны список входных файлов, выбор видеодорожки, флажки аудиодорожек, параметр Limited или Full для поля YUVRGB_Scale, относительные пути, журнал, индикатор прогресса и режим демультиплексирования части выбранного видео; просмотр кадров появляется при доступном VapourSynth с d2vsource, но само выделение диапазона не зависит от наличия предпросмотра.

Скачать D2V Witch

Оценка 9.7Рекомендуем
  • Конвертация видео
  • Сжатие файлов
  • Просто для новичков
Скачать бесплатно на Windows
Лучшая альтернатива
D2V Witch
Оценка 8.5
  • Только MPEG-1/2
  • Нет кодирования видео
  • Предпросмотр требует VS
Скачать D2V Witch
Загрузка начнётся после нажатия

Что именно создаёт D2V Witch

Главная задача D2V Witch — пройти по MPEG-видеопотоку, зафиксировать структуру последовательности кадров и записать индекс D2V, который затем использует источник d2vsource. В этом процессе исходные видеоданные не преобразуются в другой кодек. D2V играет роль карты: в нём хранятся сведения, необходимые декодеру для предсказуемого доступа к кадрам, а также ссылки на исходные файлы. Поэтому перенос одного D2V без соответствующих MPEG-файлов не создаёт самостоятельного видео и обычно лишает индекс практического смысла.

Такое разделение важно для правильного ожидания результата. После нажатия Engage пользователь получает индекс и, если были отмечены аудиодорожки, отдельные аудиофайлы. Если включено демультиплексирование выбранной части видео, появляется ещё и выделенный MPEG-видеопоток с новым индексом. Ни один из этих шагов не означает сжатие H.264, HEVC, AV1 или выпуск MP4/MKV. Для перекодирования после индексирования нужен уже другой этап цепочки — например, скрипт VapourSynth и внешний энкодер.

Интерфейс D2V Witch: Что именно создаёт D2V Witch

Поддерживаемые контейнеры и потоки

Разбор входа ограничен четырьмя типами, которые прямо перечислены в документации: MPEG elementary stream, MPEG program stream, MPEG transport stream и PVA. Практически это покрывает отдельные MPEG-видеопотоки, VOB-подобные программные потоки DVD, транспортные TS/M2TS-потоки и PVA. Расширение имени само по себе не гарантирует совместимость: программа сначала определяет структуру потока, а затем проверяет видеокодек.

Если файл находится в привычном контейнере MP4, Matroska или другом формате, который не относится к поддерживаемым типам, D2V Witch не следует рассматривать как универсальный импортёр. Даже наличие MPEG-2 внутри неподдерживаемого контейнера не превращает такой файл автоматически в допустимый вход. В практическом DVD-процессе встречается промежуточный шаг ремультиплексирования в TS именно для того, чтобы подать индексатору структуру, которую он умеет разбирать.

Интерфейс D2V Witch: Поддерживаемые контейнеры и потоки

Ограничение по видеокодекам

Поддерживаемые видеокодеки — MPEG-1 Video и MPEG-2 Video. Это жёсткая граница назначения, а не просто набор рекомендуемых форматов. Интерфейс проверяет кодек выбранного видеопотока и сообщает об ошибке, если он не относится к MPEG-1/2. Поэтому H.264/AVC, HEVC, AV1, VP9 и современные внутриконтейнерные варианты не нужно пытаться протолкнуть сменой расширения.

Смысл ограничения хорошо виден в связке с d2vsource: D2V Witch готовит именно тот тип индекса, который нужен этому источнику MPEG-1/2. Когда исходник относится к другому семейству кодеков, корректнее выбирать индексатор и source-плагин, рассчитанные на него. Это избавляет от неоднозначных ошибок и не заставляет предварительно перекодировать материал только ради создания индекса.

Список входных файлов и порядок

В верхней части графического окна находится список входных файлов. Кнопки Add files и Remove files добавляют и удаляют элементы, а Move up и Move down меняют их порядок. Это не декоративный список: последовательность важна, когда один логический видеопоток разбит на несколько частей. Перед запуском стоит проверить, что куски идут в том же порядке, в каком должны читаться.

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

Интерфейс D2V Witch: Список входных файлов и порядок

Автоматическое продолжение последовательности VOB

В командной строке есть специальное поведение для одиночного файла с именем вида VTS_xx_y.VOB. Если передан один такой путь, D2V Witch ищет следующие части той же последовательности и индексирует их вместе; сравнение имён и сортировка выполняются без учёта регистра. При этом части, стоящие до указанной, не добавляются, а VOB из другого набора VTS не смешиваются с выбранным.

Параметр --single-input отключает это распознавание и заставляет индексировать ровно один переданный файл. Если в командной строке явно перечислено больше одного входа, программа тоже работает только с указанными путями. Это полезно, когда автоматическое продолжение DVD-набора нежелательно, например при диагностике конкретного VOB или при сознательной обработке неполного фрагмента.

Выбор видеодорожки

После разбора контейнера D2V Witch формирует список видеопотоков. В исходном интерфейсе строка содержит идентификатор потока и сведения декодера, включая название кодека, размер кадра и формат пикселей; первый найденный видеопоток выбирается изначально. Если контейнер содержит несколько видео, пользователь может переключить нужную дорожку до запуска индексирования.

В CLI та же операция задаётся через --video-id. Без параметра обрабатывается первый найденный видеопоток. Надёжный автоматизированный сценарий сначала запускает --info, сверяет идентификаторы, а затем передаёт нужный --video-id. Это особенно полезно для транспортных потоков, где номер, который кажется очевидным по другому анализатору, не обязательно совпадает с тем, как его показывает D2V Witch.

Аудиодорожки и демультиплексирование

Аудиодорожки в окне выводятся как отмечаемые элементы. Пользователь выбирает только те потоки, которые нужно демультиплексировать одновременно с созданием D2V. По умолчанию в командной строке аудио не извлекается; ключ --audio-ids принимает список идентификаторов через запятую, а значение all выбирает все аудиопотоки. Имена создаваемых аудиофайлов выводятся из имени D2V.

Это именно демультиплексирование, а не перекодирование звука. Программа не предлагает битрейт AAC, нормализацию громкости, микширование каналов или фильтрацию. Для некоторых LPCM-подобных потоков код учитывает необходимость контейнера Wave64, чтобы корректно оформить извлечённый звук. Остальная обработка аудио выполняется дальше в отдельном инструменте, если она вообще нужна.

Интерфейс D2V Witch: Аудиодорожки и демультиплексирование

Задержка аудио и имя результата

При выборе видеопотока GUI пересчитывает задержки аудиодорожек относительно первой ключевой точки видео и формирует суффиксы для имён извлекаемых файлов. Это удобно для последующей синхронизации: информация о задержке оказывается рядом с соответствующим аудиопотоком, а не теряется в журнале. Пользователю всё равно нужно сохранять D2V и аудио как связанную группу файлов.

Если изменить путь D2V в поле вывода, интерфейс обновляет производные имена аудиофайлов. Поэтому лучше сначала определить каталог и базовое имя индекса, затем отметить аудиодорожки и ещё раз посмотреть итоговые имена. Это уменьшает вероятность, что звук окажется в неожиданной папке или будет назван по старому варианту D2V.

Путь к D2V и проверка каталога

Поле D2V задаёт имя индексного файла, а Browse открывает диалог сохранения. Интерфейс проверяет существование каталога и возможность записи; пустой путь, путь к каталогу вместо файла или недоступное место делают вывод некорректным. В автоматизации имя можно задать --output; если ключ не указан, оно выводится из первого входного файла.

Особое значение - у --output отправляет D2V в стандартный вывод. В этом режиме относительные пути не применяются: ссылки на исходники записываются абсолютными. Такой вариант удобен для конвейера, который сам перенаправляет текст индекса, но он требует особенно аккуратного обращения со stderr/stdout, чтобы служебные сообщения не смешались с содержимым D2V.

Абсолютные и относительные пути

Флажок Use relative paths управляет тем, какие пути к MPEG-файлам попадут в D2V. При включении пути вычисляются относительно расположения самого индекса; при выключении записываются абсолютные. Выбор сохраняется в настройках программы, поэтому при следующем запуске GUI может восстановить прежнее состояние. В CLI этому соответствует --relative-paths yes или no.

Относительные пути удобны, если папку с исходниками и D2V планируется переносить целиком с сохранением внутренней структуры. Абсолютные пути удобнее для неизменяемого рабочего каталога, где важна однозначная привязка к конкретному месту. Нельзя считать один вариант универсально надёжнее: решение зависит от того, будет ли проект переезжать между дисками и каталогами.

Limited и Full: что меняется на самом деле

Группа Input colour range содержит два варианта: Limited (TV) и Full (PC). Выбор записывает соответствующее значение в поле YUVRGB_Scale файла D2V. Это метаданные для дальнейшего декодирования, а не фильтр цветокоррекции: D2V Witch не растягивает уровни, не меняет матрицу изображения и не пересчитывает пиксели видеопотока во время индексирования.

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

Интерфейс D2V Witch: Limited и Full: что меняется на самом деле

Запуск Engage и журнал процесса

Кнопка Engage запускает индексирование после того, как вход, видеопоток и место вывода прошли проверки. Во время работы интерфейс блокирует элементы, которые нельзя безопасно менять, показывает прогресс и пишет сообщения в журнал. Активная кнопка превращается в средство остановки выполняемой операции; после завершения управление возвращается пользователю.

Успешное завершение сопровождается записью D2V и сообщением в журнале. Если были отмечены аудиодорожки, они демультиплексируются в рамках того же рабочего шага. При ошибке программа выводит сообщение, а журнал помогает отделить проблемы контейнера, декодера и файловой системы от обычного отсутствия предпросмотра.

Интерфейс D2V Witch: Запуск Engage и журнал процесса

Режим выделения части видеопотока

Флажок Demux (part of) the selected video track меняет сценарий после первичного индексирования. Когда D2V создан, GUI переключается на страницу выбора диапазона кадров: доступны кнопки начала и конца, числовой номер кадра, ползунок и строка Demux range. После задания границ Engage запускает демультиплексирование выбранной части MPEG-видеопотока.

Полученный фрагмент остаётся MPEG-потоком, а не становится новым кодеком. После записи фрагмента D2V Witch снова индексирует уже демультиплексированное видео и создаёт для него новый D2V. Это удобно, когда нужно отделить часть большого источника до дальнейшей обработки, но не заменяет монтаж с переходами, многодорожечной временной шкалой или покадровыми эффектами.

Интерфейс D2V Witch: Режим выделения части видеопотока

Как задаются границы по кадрам

На странице демультиплексирования текущий кадр выбирается числовым полем или горизонтальным ползунком. Кнопка [ фиксирует начало диапазона, а ] — конец; подпись рядом показывает действующие границы. В момент перехода на эту страницу программа устанавливает полный диапазон от нулевого кадра до последнего, поэтому пользователь может оставить весь материал либо сузить интервал.

Такая операция не является монтажной временной шкалой. Здесь нет нескольких клипов, дорожек, маркеров переходов, ripple-edit или склейки разрозненных сцен. Инструмент решает более узкую задачу — определить один непрерывный интервал для демультиплексирования выбранного видеопотока.

Интерфейс D2V Witch: Как задаются границы по кадрам

Предпросмотр через VapourSynth и d2vsource

Для показа кадра GUI пытается загрузить VapourSynth и d2vsource, строит цепочку по созданному D2V и выводит кадр в центральной области. Это облегчает выбор границ, потому что номер можно соотнести с изображением. Но документация прямо допускает работу без найденного VapourSynth или плагина: демультиплексирование диапазона остаётся доступным, только визуального кадра не будет.

Если область просмотра пустая и в журнале сказано, что preview недоступен, сначала нужно различать две ситуации. Индексирование могло завершиться успешно, а отсутствует лишь компонент показа; тогда D2V уже пригоден для внешней цепочки. Если же есть отдельная ошибка чтения или декодирования источника, установка d2vsource не исправит неподдерживаемый контейнер или видеокодек.

Интерфейс D2V Witch: Предпросмотр через VapourSynth и d2vsource

Командная строка: базовая схема

CLI принимает один или несколько входных файлов после параметров. Минимальный вызов может состоять только из имени MPEG-файла: тогда имя D2V выводится автоматически, выбирается первый видеопоток, аудио не демультиплексируется, а цветовой диапазон считается Limited. Для повторяемых задач лучше задавать выход и идентификаторы явно, чтобы результат не зависел от порядка дорожек.

Опция --info не создаёт индекс, а выводит сведения о входе, в том числе перечень видео- и аудиодорожек и их идентификаторы. --quiet убирает сообщения прогресса и предупреждения, но фатальные ошибки всё равно печатаются. --version выводит сведения о программе и конфигурации FFmpeg; это полезно для диагностики окружения, но к содержимому готового D2V не относится.

Уровень сообщений FFmpeg

Параметр --ffmpeg-log-level принимает уровни quiet, panic, fatal, error, warning, info, verbose, debug и trace. Обычное значение программы — panic, то есть поток сообщений FFmpeg сильно сокращён. При странном контейнере или повреждённом TS временное повышение уровня помогает увидеть, на каком этапе библиотека сталкивается с проблемой.

Повышать логирование постоянно нет смысла: verbose/debug/trace быстро создают большой объём служебного текста и затрудняют поиск собственных сообщений D2V Witch. Практичная последовательность такова: сначала воспроизвести ошибку с обычным уровнем, затем повторить только проблемный файл с warning или info, а самые подробные режимы использовать для точечной диагностики.

Что записывается в D2V и что не записывается

D2V связывает индекс с исходными MPEG-файлами и содержит поля, которые d2vsource использует при чтении. При этом D2V Witch имеет документированные ограничения формата: поле skip всегда записывается как 0, а поля vob и cell тоже всегда 0, поскольку используемый через FFmpeg разбор не предоставляет структуру DVD на уровне этих полей. Для обычного открытия через d2vsource это не превращает индекс в видеофайл и не добавляет DVD-навигацию.

Эти ограничения особенно важны, если сторонний сценарий ожидает от D2V не только кадровый индекс, но и детальную информацию о VOB/cell. Такой сценарий следует проверять отдельно. Нельзя автоматически переносить все свойства D2V, созданного другими индексаторами, на файл D2V Witch только потому, что расширение одинаковое.

Функции, которых у D2V Witch нет

Узкое назначение делает программу удобной для индексирования MPEG, но одновременно задаёт ясные границы. В ней нет полноценного редактора, кодировщика или медиакомбайна. Следующая таблица помогает не искать в интерфейсе параметры, которых исходный код и документация не предусматривают.

ВозможностьЕстьЧто это означает
Перекодирование видеоНетСоздаётся D2V и при выбранном режиме демультиплексируется MPEG-поток.
H.264/HEVC/AV1 как видеокодек входаНетПоддерживаются MPEG-1 Video и MPEG-2 Video.
Обрезка кадра по краямНетЕсть только выбор непрерывного диапазона для демультиплексирования.
Склейка сцен на таймлайнеНетСписок входных частей задаёт последовательность чтения, а не монтаж.
Масштабирование и изменение разрешенияНетИндексатор сохраняет сведения об исходном потоке.
Цветокоррекция и LUTНетLimited/Full задаёт YUVRGB_Scale, пиксели не корректируются.
Эффекты и фильтрыНетФильтрация выполняется позднее в VapourSynth или другом инструменте.
СтабилизацияНетНет анализа движения для стабилизации.
Редактирование субтитровНетСубтитровых инструментов в GUI/CLI не предусмотрено.
АудиокодированиеНетВыбранные аудиодорожки демультиплексируются без настроек энкодера.
Очередь нескольких заданийНетОкно выполняет текущую операцию; пакетность делается внешним скриптом.
GPU-кодированиеНетВидеокодирование не выполняется.
Захват экрана или камерыНетВходом служат уже существующие MPEG-потоки.
ТрансляцияНетСетевого вещания в программе нет.
Запись DVD/Blu-rayНетDVD упоминается как тип программного потока, а не как авторинг диска.
Система подключаемых эффектовНетd2vsource используется для предпросмотра, но это не хост эффектов.

Диагностика: Файл сразу отклоняется как контейнер

Проверить фактический контейнер, а не расширение. D2V Witch принимает elementary, program, transport и PVA; MP4/MKV и другие контейнеры не становятся совместимыми после смены расширения. Если материал пришёл с DVD-процесса, убедиться, что на вход подаётся VOB/PS либо корректно подготовленный TS.

Если ошибка появляется сразу после добавления файла, определить реальный тип потока анализатором. Смена расширения .mp4 на .mpg ничего не меняет: D2V Witch ориентируется на распознанный demuxer, а не на суффикс. Для DVD-процесса проверить, что передан VOB/program stream либо MPEG TS. Когда контейнер принят, уже имеет смысл разбирать video ID и аудио.

Диагностика: Контейнер читается, но видеопоток не принимается

Посмотреть список видеодорожек и название кодека. Разрешены MPEG-1 и MPEG-2. Ошибка на AVC/HEVC означает не поломку декодера настроек, а выход за назначение индексатора; нужен другой source/indexer или предварительно подготовленный поддерживаемый поток.

Здесь уже известно, что оболочка файла распознана; следующий шаг — сверить строку выбранной видеодорожки. Если там AVC, HEVC или другой кодек, конвертировать его одной настройкой D2V Witch невозможно. Нужен source/indexer, рассчитанный на этот кодек, либо заранее подготовленный MPEG-1/2 поток. Если MPEG-1/2 указан, но дорожка всё равно отмечена ошибкой, проблема может быть в открытии декодера конкретной сборкой FFmpeg, и тогда полезен подробный журнал.

Диагностика: Engage неактивна

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

Проверять условия удобнее по одному. Сначала убедиться, что после добавления файлов появился список видео. Затем выбрать MPEG-1/2 дорожку и посмотреть, исчезло ли предупреждение у неё. После этого задать реальное имя .d2v в существующей папке с правом записи. Отмеченное проблемное аудио тоже лучше снять. Когда container_okay, output_okay и video_okay становятся истинными, GUI сам разрешает запуск; отдельного переключателя разблокировать нет.

Диагностика: D2V сохраняется не туда

Сначала задать поле D2V через Browse и только затем оценивать имена аудиофайлов. При изменении имени индекса GUI обновляет связанные имена аудио. В CLI использовать --output с явным путём, особенно в пакетном скрипте.

Автоматическое имя выводится из первого входного файла, поэтому при работе из разных каталогов оно может оказаться не там, где ожидается. Поле D2V следует рассматривать как окончательный путь задания, а не как подпись. После Browse полезно проверить и имена отмеченных аудиодорожек: они пересчитываются от новой базы. В CLI та же неоднозначность устраняется явным --output. Если путь меняется после предварительной настройки аудио, убедиться, что все будущие результаты теперь указывают в нужную папку.

Диагностика: После переноса проекта D2V не находит исходники

Выбрать подходящую стратегию путей. Если каталог переносится целиком, Use relative paths обычно проще; если исходники остаются на фиксированном месте, абсолютные пути предсказуемее. Простое редактирование расширения D2V проблему путей не решает.

Открыть D2V как обычный текст и проверить записанные пути к MPEG-файлам. Если они абсолютные и старый корень диска исчез, d2vsource не сможет восстановить местоположение по одному имени. Для переносимого проекта проще заново создать индекс с Use relative paths, сохранив исходники в стабильной структуре рядом. Если пути уже относительные, сравнить фактическое расположение после копирования с той структурой, относительно которой был создан D2V; изменение вложенности тоже разрывает ссылку.

Диагностика: Извлекается лишняя аудиодорожка

В GUI снять ненужный флажок перед Engage. В CLI не использовать all, а передать --audio-ids только с нужными идентификаторами. Сами номера лучше взять из --info для конкретного файла.

Сначала определить её ID по GUI или --info, затем оставить отмеченными только нужные потоки. В CLI all специально означает извлечение всех аудиодорожек и потому плохо подходит, когда нужен один язык или одна дорожка комментария. После запуска имена результатов содержат Track ID и DELAY, по ним можно проверить, какая дорожка действительно была записана. Если уже создан лишний файл, его удаление не требует переделывать D2V, когда сам индекс и нужное аудио корректны.

Диагностика: Аудио не извлекается вообще

По умолчанию CLI не демультиплексирует ни одной аудиодорожки. Нужен --audio-ids либо отметка трека в GUI. Наличие аудио в контейнере само по себе не включает извлечение.

Проверить не только наличие звука в контейнере, но и состояние флажков перед Engage. В CLI отсутствие --audio-ids является нормальным режимом только индекс. Если ID указан, а файл не создаётся, посмотреть, смог ли GUI открыть декодер этой дорожки и нет ли ошибки записи рассчитанного имени. Для PCM-подобного звука результат может быть Wave64, а не расширение, которое пользователь ожидал по исходному контейнеру. D2V при этом способен успешно создаться независимо от выбранного аудио.

Диагностика: Предпросмотр отсутствует после индексирования

Проверить VapourSynth и d2vsource отдельно от самого D2V. Документация разрешает выбор и демультиплексирование диапазона без предпросмотра, поэтому пустая картинка не равна провалу индексирования.

В журнале искать точную причину: не загрузилась библиотека VapourSynth, не найден API, не создан core, отсутствует d2vsource, resize или std, либо не удалось получить конкретный кадр. Эти случаи относятся к визуальной цепочке. Если D2V создан, номера кадров и кнопки границ остаются доступными, поэтому диапазон можно задать без картинки. На Windows дополнительно проверяют доступность d2vsource.dll через обычную загрузку, PATH или каталог исполняемого файла, которые программа пробует использовать для preview.

Диагностика: Полный диапазон вместо нужного фрагмента

После перехода на страницу демультиплексирования программа изначально ставит начало на 0, а конец на последний кадр. Нужно перейти к нужному кадру и зафиксировать [ и ], затем сверить строку Demux range перед Engage.

Перед вторым Engage посмотреть подпись Demux range: она должна содержать две установленные границы, а не 0 и последний кадр. Каждая скобка запоминает текущее число из spinbox/ползунка, поэтому сначала перейти к нужному кадру, затем нажать соответствующую кнопку. После demux фактический .m2v всё равно может включить дополнительные кадры до/после границ из-за выравнивания по GOP; их количество программа сообщает в журнале. Это не означает, что пользовательские метки были проигнорированы.

Диагностика: Нужна склейка нескольких несвязанных эпизодов

D2V Witch не предоставляет монтажную временную шкалу. Список файлов предназначен для последовательного чтения частей одного источника. Несвязанные сцены разумнее индексировать отдельно и объединять дальше в скрипте или редакторе.

Не добавлять независимые ролики в один входной список только ради получения одного D2V: порядок списка трактуется как последовательное чтение частей одного логического потока. Для двух эпизодов создать два индекса, открыть их в следующей цепочке и выполнить Trim/Splice или монтаж там, где эти операции действительно поддерживаются. Если эпизоды находятся внутри одного MPEG, можно отдельно демультиплексировать каждый непрерывный диапазон. D2V Witch не хранит проект с несколькими монтажными сегментами.

Диагностика: VOB-последовательность подхватывается автоматически

Так работает одиночный CLI-вход VTS_xx_y.VOB. Если нужен только конкретный VOB, добавить --single-input. Если требуется точный набор нескольких частей, перечислить их явно в нужном порядке.

Проверить имя первого аргумента: шаблон VTS_xx_y.VOB включает специальную логику продолжения. Если рядом лежат следующие части того же набора, одиночный CLI-вызов способен добавить их автоматически, причём сравнение имён не зависит от регистра. --single-input отключает это поведение. Альтернатива — передать несколько файлов явно; тогда программа не расширяет набор сверх перечисленного. Фактический список всегда стоит сверить, потому что число источников и их пути затем попадут в заголовок D2V.

Диагностика: Нужно увидеть идентификаторы дорожек без создания файлов

Использовать --info. Он выводит релевантные сведения о входе и ID потоков, после чего можно построить второй вызов с --video-id и --audio-ids.

Запустить --info на том же наборе входов, который планируется индексировать. Вывод даст ID видеопотоков и аудио, после чего можно составить отдельный вызов с --video-id и --audio-ids. Для TS этот шаг особенно полезен: PID не обязан совпадать с порядком дорожек. Сохранять результат --info рядом с пакетным логом удобно и для повторяемости — через время видно, почему был выбран конкретный ID. Режим предназначен для инспекции и не должен создавать D2V как побочный результат.

Диагностика: Журнал слишком короткий для диагностики

Повысить --ffmpeg-log-level с panic до warning/info, а при необходимости до debug. После выявления причины вернуть более тихий уровень, чтобы пакетные логи оставались читаемыми.

Начать с warning или info, чтобы увидеть сообщения библиотек без чрезмерного шума. Если проблема проявляется только на одном повреждённом участке, временно поднять уровень до debug; trace оставлять для точечного анализа, потому что объём текста резко растёт. --quiet, наоборот, убирает прогресс и предупреждения и поэтому мешает расследованию. Уровень FFmpeg не меняет индекс и качество — после выяснения причины его можно вернуть к спокойному значению, не опасаясь, что это изменит видео.

Диагностика: В D2V нужен полный цветовой диапазон

Выбрать Full (PC) или --input-range full только при подтверждённом full-range источнике. Этот параметр меняет поле YUVRGB_Scale; он не исправляет уровни изображения и не является фильтром.

Full (PC) следует выбирать только как описание реально full-range источника. Программа запишет соответствующее YUVRGB_Scale, но не пересчитает уровни и не исправит ошибочно сжатый или растянутый сигнал. Если после открытия через d2vsource изображение выглядит неверно, сначала проверить, какое поле попало в D2V и соответствует ли оно материалу. Для фактического преобразования limited↔full нужен фильтр в последующей цепочке. Повторное индексирование с правильной меткой безопаснее случайной компенсации несколькими фильтрами.

Диагностика: Нужен вывод индекса в stdout

Задать --output -. В таком режиме D2V записывается в стандартный вывод, а пути к исходникам становятся абсолютными независимо от --relative-paths. Скрипт должен отдельно обрабатывать служебный вывод, чтобы не повредить данные.

Вызов с --output - предназначен для текстового D2V в стандартном выводе, поэтому скрипт должен отделить этот поток от диагностических сообщений и корректно сохранить байты в нужное место. Относительные пути в таком режиме не применяются: внутри будут абсолютные ссылки на входы. Если целью была переносимость каталога, stdout не лучший вариант. Если целью является автоматическая передача индекса следующему процессу, такой режим удобен, но downstream должен понимать, что исходные MPEG всё равно остаются обязательными.

Диагностика: Программа сообщает о существующем D2V

GUI запрашивает подтверждение перезаписи, когда целевой файл уже существует. Если старый индекс нужен для сравнения, сначала выбрать другое имя вместо автоматического подтверждения.

Не подтверждать overwrite автоматически, пока не ясно, относится ли старый индекс к тем же входам и параметрам. GUI также учитывает существующие выбранные аудиофайлы, а перед demux — будущий .m2v и его D2V. Если нужен повтор для сравнения Limited/Full или другого video ID, дать новому результату отдельную базу имени. После отказа от перезаписи интерфейс возвращается к настройкам, поэтому можно изменить путь без перезапуска программы. Это безопаснее, чем сначала затереть рабочий индекс и только потом обнаружить ошибку.

Диагностика: Повреждённый источник даёт ошибку декодирования

Сначала убедиться, что тип контейнера и кодек поддерживаются. Затем увеличить лог FFmpeg и проверить тот же фрагмент отдельно. Если ошибка воспроизводится в одной части многокомпонентного набора, временно индексировать части по одной для локализации повреждения.

У многосоставного набора временно сузить вход до отдельных частей, чтобы найти файл, на котором ошибка воспроизводится. Подробный FFmpeg-log помогает отличить битый пакет от неподдерживаемого контейнера. D2V Witch умеет пропустить некоторые аномальные кадры и корректирует позиции ключевых кадров, но не восстанавливает отсутствующие данные. Если повреждение систематическое, сначала получить исправный MPEG специализированным remux/repair инструментом, затем индексировать заново. Иначе downstream может получить индекс к материалу с реальными пропусками.

Диагностика: Нужно обработать много файлов автоматически

Использовать CLI в цикле, заранее получать ID через известную структуру источников или --info и задавать уникальный --output. Встроенной очереди заданий GUI нет, поэтому планирование, повтор при ошибке и журналирование выполняет внешний скрипт.

Строить один независимый вызов на один логический источник и выдавать каждому уникальный --output. Не стоит предполагать одинаковые ID для всей коллекции: для неоднородных TS сначала собрать --info и сформировать параметры из фактических дорожек. Внешняя оболочка должна сохранять код завершения и лог, а после успешного процесса проверять наличие D2V. Отмена, повтор и параллельность — ответственность этой оболочки, поскольку GUI D2V Witch не содержит очереди. Так пакетный процесс остаётся контролируемым и воспроизводимым.

Диагностика: D2V и исходник лежат рядом, но пути неудобны для архива

Включить относительные пути до записи индекса и сохранять одинаковую структуру каталогов. Это особенно удобно для переносимого набора D2V + MPEG + демультиплексированное аудио, где все элементы перемещаются вместе.

Создать постоянную структуру до индексирования, например отдельную папку проекта с MPEG и D2V, затем включить Use relative paths. Проверить готовый индекс после копирования всей папки в другое временное место. Если d2vsource открывает его там, схема действительно переносима. Просто положить файлы рядом после создания абсолютного D2V недостаточно: записанные строки путей не переписываются автоматически. Для уже готового большого архива безопаснее переиндексировать, чем массово редактировать D2V без проверки смещений и формата.

Диагностика: Нужен кадрированный или уменьшенный файл

D2V Witch этого не делает. Сначала создать D2V, открыть его через d2vsource, а затем выполнять Crop/Resize уже средствами последующей видеоцепочки. Так сохраняется разделение индексирования и обработки пикселей.

Не искать Crop/Resize в меню D2V Witch: таких операций у него нет. Создать индекс, открыть его через d2vsource и выполнить геометрическую обработку в VapourSynth или другом редакторе, который работает с декодированными кадрами. Встроенный resize.Bicubic, используемый GUI, относится исключительно к формату изображения для предпросмотра и не изменяет MPEG. Если нужен конечный файл меньшего разрешения, после фильтрации потребуется ещё и энкодер. Так результат не будет случайно принят за функцию индексатора.

Практический сценарий: DVD/VOB без лишнего монтажа

Добавить VOB-файлы одного заголовка в правильном порядке, выбрать MPEG-2 видеопоток, при необходимости отметить AC-3/LPCM аудио, задать D2V и запустить Engage. Для CLI одиночный VTS_xx_y.VOB может автоматически продолжить последовательность; --single-input оставляет только выбранную часть. Результат используется дальше через d2vsource.

Перед Engage проверить, что VOB относятся к одному title set и стоят по порядку. Если используется одиночный CLI-вход и соседние VTS должны быть включены, оставить автопродолжение; если нужна только одна часть, применить --single-input. После Finished открыть D2V через d2vsource и посмотреть область стыка VOB. Если демультиплексировался звук, сверить ID и DELAY в именах. Такой контроль подтверждает корректность именно индекса DVD-потока, не смешивая его с последующим кодированием.

Практический сценарий: TS после ремультиплексирования DVD-источника

Практические руководства предлагают подготовить TS, затем открыть D2V Witch, нажать Add files, выбрать .ts и Engage. Важно понимать, что TS здесь является входом индексатора; дальнейшее преобразование в AVI/MOV выполняется уже другим звеном.

После remux сначала убедиться, что внутри TS остался MPEG-2, а не другой видеокодек. В D2V Witch выбрать нужный video ID, задать путь индекса и, при необходимости, аудио. Получив D2V, проверить его через d2vsource до запуска дальнейшего конвертирования. Если TS содержит несколько дорожек, --info помогает зафиксировать ID для повторного запуска. Сам remux и будущий экспорт выполняются другими инструментами; D2V Witch в этой схеме отвечает только за индекс и выбранный demux.

Практический сценарий: Телевизионный MPEG-2 transport stream

Открыть TS, сверить video ID, выбрать нужный аудиопоток и создать D2V. Если в транспортном потоке несколько программ или дорожек, --info помогает не полагаться на порядок списка. Для диагностики ошибок синхронизации полезен повышенный лог FFmpeg.

У вещательного TS полезно сохранить --info и обычный лог, потому что PID и состав дорожек могут отличаться даже у записей с одного источника. Выбрать MPEG-2 видео, нужный звук и создать D2V. После завершения просмотреть начало, середину и конец через d2vsource; при разрывах передачи дополнительно изучить предупреждения FFmpeg. Если требуется вырезать одну передачу из длинной записи, включить режим demux части и помнить, что фактические границы .m2v будут выровнены по GOP.

Практический сценарий: Элементарный .m2v поток

Добавить один видеопоток, проверить его размер кадра и MPEG-2 в списке, выбрать Limited/Full по известным характеристикам и создать D2V. Аудио при таком входе обычно отсутствует как отдельная дорожка контейнера, поэтому список может быть пустым.

Для .m2v особенно ясно видно назначение программы: контейнерных вариантов почти нет, и индекс строится непосредственно к MPEG-видео. Выбрать правильный Limited/Full, сохранить D2V рядом или в заранее выбранной папке и проверить его через d2vsource. Пустой список аудио в этом случае нормален, если звук хранится отдельным файлом. Если нужно получить фрагмент, режим demux создаст ещё один элементарный MPEG и новый индекс к нему; готовый контейнер с аудио программа из этой пары не собирает.

Практический сценарий: Выделение одного непрерывного эпизода

Включить Demux (part of) the selected video track до индексирования. После появления страницы кадров установить начало и конец, при доступном d2vsource проверить визуально, затем запустить демультиплексирование. Программа после этого индексирует выделенный MPEG-поток.

После первого индексирования перейти к нужным кадрам ползунком или числом, установить обе скобки и прочитать Demux range. Если preview доступен, визуально проверить границы; если нет, использовать известные номера. Второй Engage записывает диапазон по GOP, поэтому лог сообщит дополнительные кадры. Затем дождаться автоматического индексирования нового .m2v. Для точного покадрового начала/конца открыть новый D2V и выполнить Trim уже на декодированных кадрах.

Практический сценарий: Работа без доступного предпросмотра

Создать D2V обычным способом, перейти к диапазону, ориентироваться на номера кадров и внешнюю информацию о нужных границах. Отсутствие изображения не блокирует сам механизм выделения и демультиплексирования, но делает визуальную навигацию менее удобной.

Сначала убедиться, что сам D2V успешно создан: отсутствие картинки не должно подменять проверку индекса. Границы можно вводить по номерам, полученным из внешнего просмотра или заранее известной разметки. После demux проверить полученный .m2v и его новый D2V через рабочую VapourSynth-среду на другой машине либо после исправления d2vsource. Если нужна именно визуальная навигация, по журналу установить, какой компонент preview не загрузился; переиндексировать MPEG только из-за этой ошибки обычно не требуется.

Практический сценарий: Пакетная автоматизация нескольких источников

Для каждого файла сформировать отдельный вызов с --output, нужным --video-id, --audio-ids и --input-range. Логи хранить по заданию. Внешний скрипт может продолжать обработку следующего файла после проверки кода возврата, поскольку собственной очереди D2V Witch не предоставляет.

Для каждого задания сохранять команду, --info и отдельный лог, а также уникальное имя D2V. Явно задавать --relative-paths и --input-range, чтобы результат не зависел от пользовательской конфигурации GUI. Если нужен звук, перечислять подтверждённые ID вместо all. Внешний скрипт после каждого запуска проверяет статус и файл результата, затем переходит к следующему источнику. Такая схема заменяет отсутствующую встроенную очередь и позволяет повторить только неудачные элементы без ручной работы.

Практический сценарий: Подготовка переносимого рабочего каталога

Сложить MPEG, D2V и извлечённые аудиодорожки в предсказуемую структуру и использовать relative paths. После копирования каталога проверить открытие D2V через d2vsource до удаления исходного расположения. Это быстрее обнаруживает ошибочную ссылку на абсолютный путь.

До индексирования определить неизменяемую относительную структуру, поместить MPEG в неё и включить relative paths. После создания D2V скопировать весь каталог в другое место и открыть индекс через d2vsource. Затем сверить извлечённые аудиофайлы и, если они нужны, сохранить их рядом по той же схеме. Такой тест важнее формального наличия флажка: он доказывает, что пути внутри D2V действительно разрешаются после переноса. Абсолютные ссылки лучше оставить только для проектов, которые не будут менять корень хранения.

Параметры командной строки, которые действительно есть

Набор CLI невелик, поэтому его удобно фиксировать в рабочем скрипте без догадок. Ниже перечислены параметры из документации проекта и их практический смысл.

ПараметрЗначениеПрактический смысл
--helpПоказать справкуНе обрабатывает видео.
--versionПоказать сведения о программе и FFmpegПолезно для диагностики окружения.
--infoПоказать дорожки и их IDУдобно перед --video-id/--audio-ids.
--quietСкрыть прогресс и предупрежденияФатальные ошибки остаются.
--output <имя>Задать D2V- направляет индекс в stdout.
--audio-ids Демультиплексировать выбранное аудиоall выбирает все; по умолчанию ни одного.
--video-id Выбрать видеопотокПо умолчанию первый.
--input-range limited|fullЗаписать YUVRGB_ScaleНе выполняет цветокоррекцию.
--ffmpeg-log-level <уровень>Изменить подробность FFmpegПо умолчанию panic.
--relative-paths yes|noУправлять путями в D2VПри stdout всегда абсолютные.
--single-inputНе продолжать VTS_xx_y.VOBАктуально при одном VOB-входе.

D2V Witch конвертирует MPEG-2 в MP4?

Нет. Она индексирует MPEG-1/2 и может демультиплексировать дорожки; кодирование MP4/H.264/HEVC выполняется другим инструментом.

Можно ли открыть MKV?

Поддерживаемые контейнеры перечислены как elementary/program/transport/PVA. MKV к ним не относится, поэтому рассчитывать на него как на штатный вход не следует.

Можно ли индексировать H.264 внутри TS?

Документированная поддержка видеокодеков ограничена MPEG-1 и MPEG-2. Наличие TS-контейнера не отменяет проверку кодека.

Зачем нужен d2vsource?

Он открывает созданный D2V в VapourSynth. GUI также использует его для показа кадров при выборе диапазона, если VapourSynth и плагин доступны.

Без VapourSynth D2V не создастся?

Создание индекса не зависит от наличия предпросмотра. VapourSynth с d2vsource нужен именно для отображения кадров в GUI при работе с диапазоном.

Можно ли выбрать несколько аудиодорожек?

Да. В GUI отмечаются нужные элементы, в CLI передаётся список --audio-ids или all.

Аудио перекодируется?

Нет настроек аудиоэнкодера. Выбранные дорожки демультиплексируются; для некоторых LPCM-потоков используется подходящая оболочка Wave64.

Что делает Limited/Full?

Записывает значение YUVRGB_Scale в D2V. Это описание диапазона для дальнейшего декодирования, а не изменение уровней пикселей.

Можно ли сохранить относительные пути?

Да, через Use relative paths или --relative-paths yes. При --output - пути всё равно абсолютные.

Есть ли очередь заданий?

Встроенной очереди нет. Для множества файлов используют CLI и внешний скрипт.

Можно ли вырезать несколько несмежных участков?

GUI задаёт один непрерывный диапазон демультиплексирования. Для нескольких сцен нужны отдельные операции или следующий этап монтажа.

Есть ли таймлайн?

Нет монтажной временной шкалы. Ползунок на странице демультиплексирования только выбирает номер кадра в одном источнике.

Можно ли кадрировать изображение?

Нет. Crop/Resize и другие пиксельные операции выполняются после открытия D2V в видеосценарии.

Используется ли GPU?

D2V Witch не является видеокодировщиком и не содержит GPU-энкодера. Индексирование строится вокруг разбора MPEG/FFmpeg.

Можно ли записать DVD?

Нет. DVD фигурирует как пример MPEG program stream; функций авторинга или прожига диска нет.

Что даст --info?

Список релевантных сведений о входе, включая видео- и аудиодорожки и их ID, без запуска обычного индексирования.

Что делает --single-input?

Отключает автоматическое продолжение последовательности VTS_xx_y.VOB, если на командной строке указан один VOB.

Что происходит при существующем D2V?

GUI показывает предупреждение о перезаписи. Это повод выбрать другое имя, если старый индекс нужно сохранить.

Можно ли остановить процесс?

Во время обработки кнопка Engage используется для остановки текущей операции; в коде предусмотрены состояния cancelled для индексирования и демультиплексирования.

Почему в D2V поля vob/cell равны нулю?

Это документированное ограничение: используемый разбор через FFmpeg не предоставляет нужную DVD-структуру, поэтому эти поля записываются как 0.

Проверка перед индексированием

Перед Engage достаточно пройти короткую техническую последовательность: убедиться, что контейнер относится к поддерживаемым типам; проверить, что выбранный видеопоток MPEG-1/2; определить правильный video ID при нескольких дорожках; решить, нужны ли отдельные аудиофайлы; задать Limited/Full по характеристикам источника; выбрать стратегию путей; указать доступное место для D2V. Эти проверки соответствуют реальным точкам, которые GUI и CLI используют при запуске.

  • Входной поток действительно MPEG elementary/program/transport либо PVA.
  • Видеокодек — MPEG-1 или MPEG-2.
  • Порядок частей в списке корректный.
  • Выбран нужный видеопоток.
  • Отмечены только требуемые аудиодорожки.
  • Limited/Full отражает реальный входной диапазон.
  • Путь D2V указывает на доступный для записи каталог.
  • Relative/absolute paths выбраны с учётом будущего переноса проекта.
  • Демультиплексирование части видео включено только если оно действительно нужно.

Проверка после индексирования

После завершения нужно проверять не только наличие файла с расширением .d2v. Убедитесь, что журнал сообщает о завершённой записи, размер D2V не нулевой, пути внутри индекса соответствуют текущему расположению MPEG, а выбранные аудиодорожки появились под ожидаемыми именами. Если использовался диапазон, проверьте созданный MPEG-фрагмент и новый D2V для него. Финальная проверка — открыть индекс через d2vsource в той среде, где он будет использоваться.

  • D2V создан и относится к правильному источнику.
  • Не появилось сообщение об ошибке контейнера или видеокодека.
  • Извлечены только выбранные аудиодорожки.
  • При переносе проекта ссылки в D2V по-прежнему разрешаются.
  • При работе с диапазоном границы соответствуют задуманному отрезку.
  • d2vsource открывает индекс в целевой VapourSynth-среде.

Интерфейс: режим демультиплексирования части видео

Перед первым Engage флажок Demux (part of) the selected video track определяет, перейдёт ли GUI после индексирования к выбору кадров. Рядом остаются настройки D2V, видеодорожки, диапазона Limited/Full и аудио, поэтому режим включается до построения индекса, а не после появления кадра.

D2V Witch: режим демультиплексирования части видео

Интерфейс: ход демультиплексирования выбранного диапазона

Во время записи выбранного диапазона центральная область показывает текущий кадр и сохранённые границы, а ниже журнал сообщает о начале demux. Полоса прогресса относится к позиции внутри рассчитанного GOP-отрезка; Cancel прерывает именно выполняющуюся операцию.

D2V Witch: ход демультиплексирования выбранного диапазона

Интерфейс: завершение демультиплексирования и повторного индексирования

После записи .m2v журнал фиксирует завершение видеодемультиплексирования и запуск индексирования полученного потока. Полные 100 процентов у первого этапа ещё не заменяют финальную проверку нового D2V: цепочка заканчивается после успешной записи индекса к выделенному MPEG.

D2V Witch: завершение демультиплексирования и повторного индексирования

Технические детали и рабочие решения

Почему индекс не заменяет исходный MPEG

D2V хранит описание расположения и свойств кадров, а в заголовке перечисляет входные файлы. Поэтому после создания индекса исходный MPEG остаётся необходимой частью проекта: перенос одного файла .d2v без указанных в нём VOB, MPG, M2V, TS или PVA не превращает индекс в автономное видео. Практически это влияет на архивирование сильнее, чем размер самого D2V. Если исходники лежат на временном диске, сначала стоит определить постоянную структуру каталогов и только потом индексировать. При использовании абсолютных путей перемещение исходника потребует восстановления прежнего расположения или нового индексирования; при относительных путях переносить следует весь согласованный набор каталогов. Это отличие от конвертации объясняет, почему D2V создаётся быстро и занимает несравнимо меньше места, чем новая видеокопия.

Как D2V Witch связывает несколько входных частей

Когда в задании несколько файлов, D2V Witch рассматривает их как одну последовательность чтения, но при записи индекса сохраняет сведения о каждом реальном файле. Внутренняя позиция, полученная при общем проходе, перед финальной записью переводится в номер конкретного файла и смещение внутри него. Поэтому порядок частей — не косметическое представление списка. Если переставить элементы, изменится и смысл последующих смещений. Для набора VOB или другого действительно последовательного материала полезно заранее проверить названия и порядок, затем не менять исходники до завершения работы с D2V. Если же файлы не являются продолжением друг друга, добавлять их в один индекс не следует: список входов предназначен для частей одного логического MPEG-потока, а не для монтажа независимых роликов.

Что означает автоматическое имя D2V

После открытия входа программа предлагает имя индекса на основе первого видеофайла: существующее расширение заменяется на .d2v, а если расширения нет, .d2v добавляется. Это предложение можно изменить через поле вывода или диалог Browse. Механизм важен ещё и потому, что от базы имени D2V вычисляются имена демультиплексируемых аудиофайлов. Изменение поля до запуска меняет будущие имена этих результатов; простая смена имени уже готового D2V после завершения не изменит автоматически имя созданного рядом аудио. В пакетном сценарии поэтому полезно задавать окончательное базовое имя до Engage или явно передавать --output. Так набор D2V и выделенных дорожек получает согласованную схему имён без ручного исправления после индексирования.

Что видно в списке видеодорожек

Для каждого найденного видеопотока GUI формирует строку из идентификатора потока, длинного имени кодека, разрешения и пиксельного формата, полученных через FFmpeg. Это позволяет отличить несколько видеодорожек не только по порядку, но и по техническим признакам. Первая найденная видеодорожка выбирается автоматически, однако это не означает, что она всегда нужна пользователю. В контейнере с несколькими видеопотоками следует сверить ID и параметры, потому что именно выбранный поток определяет D2V, расчёт аудиозадержек и возможное последующее выделение фрагмента. Если выбранный кодек не MPEG-1/2 либо декодер не открывается, дорожка помечается как неподдерживаемая и Engage не становится доступной для корректного запуска.

Почему ID потока и его номер в списке нельзя смешивать

Внутри GUI Qt-группа хранит индекс AVStream, а пользователю показывает настоящий stream ID контейнера. В командной строке параметр --video-id относится именно к идентификатору потока, а не к его порядковой позиции в окне. Такое различие особенно заметно у transport stream, где PID часто выглядит как шестнадцатеричное число и не обязан совпадать с 0, 1 или 2. Для автоматизации правильный порядок действий — сначала получить сведения через --info, затем передать подтверждённый ID. Копировать значение из другого TS только потому, что оба файла записаны одним устройством, рискованно: идентификаторы являются свойством конкретного файла. GUI снижает вероятность ошибки тем, что показывает ID рядом с кодеком и размером кадра.

Почему неподдерживаемый контейнер и неподдерживаемый кодек — разные ошибки

D2V Witch проверяет две независимые вещи. Сначала FFmpeg должен распознать вход как один из разрешённых типов: элементарный MPEG, program stream, transport stream или PVA. Затем выбранная видеодорожка должна быть MPEG-1 либо MPEG-2. Поэтому TS с неподходящим видеокодеком способен пройти проверку контейнера и всё равно остановиться на проверке видео, а MP4 с MPEG-2 будет отвергнут уже на уровне контейнера. В GUI эти состояния имеют разные подсказки и визуально отмечаются отдельно. Для диагностики полезно не делать вывод по расширению: оно лишь подсказывает вероятный контейнер, но окончательное решение принимается по реально распознанному формату и параметрам потока. Такой порядок объясняет многие случаи, когда файл похож на MPEG, но Engage остаётся недоступной.

От чего зависит доступность Engage

Кнопка запуска активируется только когда одновременно выполнены три базовых условия: контейнер принят, путь вывода корректен и выбранный видеопоток поддерживается. Проверка аудиодорожек добавляет ещё одно практическое ограничение: отмеченная дорожка с неоткрывающимся декодером подсвечивается как проблема, и такой выбор следует исправить до обработки. Это полезнее, чем запуск с заведомо неполным набором параметров. Если Engage серый, нужно последовательно проверить входной список, выбранное видео и поле D2V, а не переустанавливать программу. Пустое имя индекса, каталог вместо имени файла или папка без права записи являются самостоятельными причинами ошибки вывода. После исправления параметров состояние кнопки пересчитывается автоматически.

Как программа проверяет место для результата

При изменении поля D2V GUI анализирует родительский каталог: он должен существовать, быть каталогом и разрешать запись. Само поле не должно быть пустым и не должно указывать на папку вместо файла. Эта проверка происходит до Engage и помогает отделить проблемы источника от проблем назначения. Однако доступность каталога не гарантирует достаточного свободного места для всех выбранных результатов: кроме небольшого D2V могут создаваться аудиофайлы и, в режиме выделения, MPEG-видеофайл. Поэтому при длинной записи проверять свободное место всё равно нужно отдельно. Если работа прекращается уже во время записи, журнал и сообщение об ошибке важнее цвета поля, потому что поздний сбой может быть связан с фактической операцией записи, а не с первоначальной проверкой каталога.

Что происходит при совпадении имён результатов

Перед индексированием D2V Witch собирает список уже существующих файлов, которые собирается создать: сам D2V и отмеченные аудиорезультаты. Если совпадения найдены, GUI показывает запрос на перезапись. При отказе интерфейс возвращается в рабочее состояние и обработка не стартует. Аналогичная проверка выполняется перед демультиплексированием выбранного диапазона для будущего .m2v и нового D2V к нему. Это означает, что случайный повтор Engage не обязан молча уничтожать старые результаты, но полагаться на запрос как на систему версий не стоит. Для воспроизводимого проекта удобнее давать каждому варианту уникальное базовое имя и хранить старый индекс отдельно, особенно если различались выбранная видеодорожка, диапазон цвета или состав входных частей.

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

Имя аудиофайла строится от базы D2V и содержит служебные признаки дорожки: её ID, описание каналов, значение битрейта, рассчитанную задержку в миллисекундах и подходящее расширение. Такой суффикс помогает не перепутать несколько отмеченных потоков после обработки и переносит важную для синхронизации информацию прямо в имя файла. Задержка вычисляется относительно выбранного видеопотока, поэтому смена video ID способна изменить и подписи аудио. Полезно воспринимать DELAY в имени как диагностическую метку, а не как обещание, что звук уже физически сдвинут во времени. D2V Witch извлекает выбранные данные; дальнейшее применение задержки зависит от программы, в которую аудио и видео будут переданы.

Когда аудио копируется как поток, а когда появляется Wave64

Для аудиокодеков, которые можно демультиплексировать как пакетный поток, D2V Witch записывает данные без аудиоэнкодера. Для PCM-подобных вариантов, требующих контейнера, код открывает декодер и формирует Wave64, записывая полученные аудиосэмплы в эту оболочку. Поэтому универсальное утверждение всё аудио просто копируется побайтно было бы неточным. Пользователь при этом не получает меню выбора кодека, битрейта, частоты или качества: задача программы — извлечь дорожку в пригодной форме, а не выполнить обычное аудиокодирование. Если требуется AAC, Opus, MP3 или другой целевой формат с настройками качества, это следующий этап в другом инструменте. В D2V Witch важнее выбрать правильный stream ID и проверить имя с рассчитанной задержкой.

Почему начало аудио связано с первым видеоключевым кадром

При индексировании программа отслеживает позицию первого ключевого кадра выбранного видео и не начинает записывать выбранную аудиодорожку раньше релевантной позиции потока. Эта логика нужна, чтобы результаты ориентировались на фактическое начало индексируемого видеоматериала, а не на произвольные пакеты, встреченные контейнером до него. Она же связана с расчётом задержек, которые попадают в имена аудиофайлов. Практический вывод: если в контейнере несколько видеопотоков, выбор конкретного video ID важен для аудио даже тогда, когда сами аудиодорожки одинаковы. После смены видеопотока лучше заново оценить предложенные аудиоимена и не смешивать файлы, полученные при разных вариантах выбора.

Что выдаёт журнал после нормального индексирования

GUI дополняет индикатор прогресса текстовым журналом с временными метками. После завершения индексатор сообщает имя записанного D2V и статистику просмотренных видеокадров: общее число, количество кадров с признаком progressive, top field first и repeat. Эти числа полезны как быстрая проверка природы MPEG-2 материала, но сами по себе не являются автоматическим IVTC, деинтерлейсом или исправлением полей. Программа лишь фиксирует структуру, которую обнаружила при разборе. Если результат затем обрабатывается в VapourSynth, решение о работе с полями и повторными полями принимается уже в скрипте или следующем инструменте. Сохранение журнала рядом с проектом помогает позже понять, чем отличались два индекса одного источника.

Почему индексирование может иметь второй проход по ключевым кадрам

После первичного разбора D2V Witch проверяет, сможет ли источник, использующий D2V, реально обратиться к сохранённым позициям ключевых кадров. Если FFmpeg при проверочном seek приходит не в ожидаемое место, индексатор ищет более подходящее смещение ближе к предыдущей позиции; в крайнем случае данные проблемной группы объединяются с предыдущей. Это не пользовательский фильтр и не изменение видеопотока, а корректировка адресов в индексе. Поэтому индикатор прогресса способен продолжать работу после того, как основной проход по пакетам кажется завершённым. На медленном диске такой этап заметнее. Прерывать программу только потому, что чтение входа уже дошло до конца, не следует: D2V считается готовым после сообщения о завершении записи.

Что делает индексатор с началом, которое нельзя декодировать самостоятельно

При разборе первого GOP D2V Witch пропускает ведущие изображения, пока не встретит ключевой кадр, пригодный как опорная точка. Это поведение важно для обрезанных или повреждённых MPEG-файлов, которые начинаются посреди GOP: формальный первый пакет видео ещё не обязательно является безопасной точкой для декодирования. В результате первый индексируемый кадр может оказаться позже физического начала файла. Программа не восстанавливает отсутствующие опорные изображения и не дорисовывает потерянное начало. Если критически нужен материал до первого доступного ключевого кадра, проблема лежит в самом исходном потоке или в способе его предварительного извлечения. Журнал при сложном файле полезнее ожидания, что D2V починит структуру MPEG.

Как D2V описывает базовые свойства видео

В секции настроек D2V Witch записывает тип потока, тип MPEG, поле YUVRGB_Scale, размер кадра, вычисленное соотношение сторон и частоту кадров. Для transport stream дополнительно сохраняются идентификаторы, относящиеся к MPEG-2 TS, и размер транспортного пакета, если его удалось получить через FFmpeg. Эти сведения предназначены для потребителя D2V и отражают то, что индексатор увидел в выбранном потоке. Они не означают, что D2V Witch меняет разрешение, aspect ratio или frame rate исходника. В интерфейсе нет соответствующих преобразований. Если требуется реальный resize, изменение частоты или кодирование в другой формат, D2V используется только как входная карта, а преобразование выполняется позднее.

Почему Clipping и Luminance_Filter в D2V не означают наличие фильтров

Формат D2V содержит поля, знакомые по DGIndex, в том числе Clipping и Luminance_Filter. D2V Witch записывает для них нулевые значения и прямо не предоставляет интерфейс кадрирования или коррекции яркости. Поэтому наличие таких строк внутри файла нельзя трактовать как скрытые настройки изображения. Аналогично поле iDCT_Algorithm записывается для совместимости формата, но пользователь не выбирает алгоритм через GUI. При оценке возможностей следует смотреть на реальные органы управления и логику исходного кода: выбор потока, диапазона цвета, путей, аудио и режима демультиплексирования. Кадрирование, фильтры цвета и художественные эффекты в этот набор не входят и должны выполняться после открытия источника через подходящую цепочку обработки.

Как определяется частота кадров для записи в D2V

В первую очередь индексатор использует среднюю частоту кадров, сообщённую потоком. Если она отсутствует или некорректна, код пытается оценить частоту по разнице временных меток последовательных кадров и time base. Такая оценка принимается только для положительного разумного значения. Это резервная логика формирования метаданных D2V, а не конвертация частоты кадров. Исходные MPEG-пакеты от неё не переписываются. При необычном или повреждённом материале полезно сверить итоговое значение с MediaInfo или другим анализатором и не путать метаданные индекса с фактическим пересэмплированием времени. Если следующая цепочка требует жёсткой нормализации FPS, она выполняется уже после открытия видео, а не параметром D2V Witch.

Как сохраняются признаки полей и повторов

При разборе MPEG-1/2 D2V Witch отмечает типы изображений и признаки, относящиеся к progressive frame, top field first и repeat first field. На уровне D2V это помогает d2vsource воспроизводить структуру исходного потока. Индексатор не применяет деинтерлейс и не решает, какой метод IVTC нужен конкретному материалу. Именно поэтому в журнале статистика полей полезна как наблюдение, но не как готовый рецепт обработки. Для смешанного телесина, монтажных разрывов или нестандартных последовательностей всё равно требуется анализ уже декодированных кадров. Пользовательская ценность D2V Witch здесь в точном индексировании MPEG и передаче флагов дальше, а не в автоматической починке развертки.

Почему drag-and-drop может поменять порядок добавляемых файлов

Окно принимает локальные файлы перетаскиванием. Перед добавлением пути из одного drop-события сортируются, после чего заносятся в список и общий входной объект. Это отличается от ручного предположения, что порядок всегда будет равен порядку выделения мышью в файловом менеджере. Для VOB такой алфавитный порядок обычно удобен, если имена следуют стандартной схеме, но для произвольных частей его следует проверить визуально. При необходимости Move up и Move down меняют и список, и реальную последовательность чтения. Перетаскивание не является монтажной функцией: сортировка лишь организует части, которые пользователь сознательно решил индексировать как один логический поток.

Что сохраняется между запусками GUI

В настройках графического интерфейса сохраняется как минимум выбор использования относительных путей и геометрия окна. При следующем запуске флажок Use relative paths восстанавливается, а размер и положение окна могут быть возвращены к предыдущему состоянию. Это удобно для постоянного рабочего места, но создаёт нюанс воспроизводимости: CLI без явного --relative-paths способен взять значение из конфигурации. Если скрипт должен давать одинаковый D2V на разных машинах, параметр yes или no лучше задавать явно. Геометрия окна на содержание индекса не влияет. Остальные существенные параметры задания — входные файлы, video ID, audio ID и имя D2V — следует считать частью конкретной операции и фиксировать отдельно.

Как работает Cancel во время обработки

После запуска Engage интерфейс основной страницы и меню блокируется, а кнопка меняет смысл на Cancel. Нажатие устанавливает общий флаг остановки, который проверяется в циклах индексирования, проверки ключевых кадров и демультиплексирования. При отмене открытые файлы закрываются, результат получает состояние cancelled, а GUI возвращает элементы управления и пишет соответствующее сообщение. Это управляемая остановка, но не транзакция с автоматическим удалением каждого частично созданного файла. После отмены стоит проверить каталог вывода и удалить неполный D2V, аудио или .m2v перед повторным запуском, чтобы последующий запрос на перезапись не скрывал происхождение старого незавершённого результата.

Почему прогресс нельзя трактовать как время до конца

Полоса прогресса строится из текущей позиции чтения относительно общего размера входов, а на этапе проверки ключевых кадров — из номера проверяемой группы относительно их количества. В режиме демультиплексирования она использует позицию пакета внутри выбранного диапазона байтов. Поэтому одинаковые проценты на разных этапах не означают одинаковый объём оставшейся работы, а скорость может заметно меняться. Дополнительное влияние оказывают дисковый seek, количество частей и состояние носителя. Для пользователя индикатор отвечает прежде всего на вопрос, продолжает ли операция продвигаться. Финальным критерием успеха остаётся сообщение Finished и пригодность созданного D2V, а не только достижение визуальных 100 процентов.

Как выбирается диапазон для демультиплексирования

Кнопки с квадратными скобками сохраняют текущее значение кадра как начало или конец, а подпись Demux range показывает установленную пару. При завершении первого индексирования исходный диапазон инициализируется от нулевого до последнего индексированного кадра. Ползунок и числовое поле синхронизированы: изменение одного переводит другое к тому же номеру. Это компактная навигация, а не многодорожечный таймлайн. Нет списка нескольких интервалов, переходов или клипов. Чтобы получить два разнесённых эпизода, безопаснее сделать два отдельных прохода с разными границами и сохранить результаты под разными именами, либо использовать редактор после декодирования.

Почему фактический .m2v может быть шире отмеченного диапазона

Демультиплексирование привязывается к границам GOP. Для начала программа находит GOP, содержащий отмеченный кадр; если этот GOP открыт и перед ним есть предыдущий, старт сдвигается ещё на один GOP назад. Конец берётся по старту следующего GOP после выбранной конечной точки. В журнале прямо указывается, сколько дополнительных кадров попало до и после пользовательского интервала. Такой запас нужен из-за зависимостей MPEG и обеспечивает декодируемость фрагмента, но означает, что операция не является точной покадровой обрезкой элементарного потока. Если итог должен начинаться ровно с заданного кадра, точное Trim следует применить позднее к декодированному клипу.

Как формируется имя выделенного видеопотока

При запуске демультиплексирования программа создаёт имя от базы D2V и добавляет фактические GOP-границы кадра, после чего использует расширение .m2v. Числа в имени относятся к реальному диапазону, который был записан с учётом расширения до безопасных границ, а не обязательно к исходным значениям, которые пользователь отметил скобками. Рядом затем создаётся новый D2V, предложенный уже от этого .m2v. Такая схема удобна для проверки: по имени видно, к какому вырезанному диапазону относится индекс. Менять имя только у одного из пары файлов после создания нежелательно без понимания путей внутри D2V; надёжнее сначала определить структуру каталога и хранить .m2v с его индексом как связанный результат.

Что именно копируется при демультиплексировании видео

В режиме выделения D2V Witch отключает остальные потоки, ищет начало рассчитанного GOP-диапазона и записывает пакеты только выбранной видеодорожки в .m2v до конечной позиции. Код не вызывает видеокодер и не меняет параметры сжатия MPEG. Это объясняет отсутствие настроек качества, битрейта, профиля или GPU. Операция ближе к извлечению элементарного потока, чем к экспорту из видеоредактора. При ошибке записи программа сообщает ID видеопотока и прекращает процесс. Если нужен контейнер MP4, MKV или новый MPEG с аудио, после такого демультиплексирования потребуется отдельный mux/encode этап; D2V Witch сам не собирает полноценный финальный контейнер из выбранного диапазона.

Что происходит сразу после успешного demux

Завершив запись .m2v, GUI не останавливается на одном видеофайле. Он открывает полученный элементарный поток, инициализирует его формат и видеодекодер, предлагает имя нового D2V и запускает индексирование уже этого результата. Поэтому режим выделения даёт логичную пару: извлечённый MPEG-видеопоток и индекс к нему. Если открыть демультиплексированный файл или создать новый D2V не удаётся, пользователь получает отдельную ошибку на соответствующем шаге. Важно дождаться окончания всей цепочки: сообщение о завершении записи видео ещё не означает, что второе индексирование уже закончено. Только финальный статус нового D2V завершает операцию целиком.

Почему предпросмотр — вспомогательный путь, а не основа индексатора

После успешного индексирования GUI пытается построить цепочку VapourSynth только для отображения кадров в режиме выбора диапазона. Если библиотека VapourSynth, d2vsource или необходимые стандартные компоненты недоступны, в журнале появляется причина, но сами номера кадров, границы и demux остаются рабочими. Это согласуется с назначением D2V Witch: индекс формируется собственным проходом по MPEG, а VapourSynth используется, чтобы показать пользователю то, что соответствует выбранному номеру кадра. Поэтому отсутствие картинки не следует лечить сменой контейнера, если индекс уже создан. Нужно отдельно проверить загрузку VapourSynth и плагина, либо задать диапазон численно без визуальной подсказки.

Из каких звеньев состоит цепочка предпросмотра

GUI передаёт путь к созданному D2V в d2vsource, затем приводит кадр к совместимому BGR32 через resize.Bicubic и добавляет кеш. Для вызова источника устанавливается rff=0; при преобразовании цвета задаётся матрица 709 с предпочтением свойств кадра. Эти параметры относятся только к экранному отображению в окне выбора диапазона и не являются настройками записываемого D2V или демультиплексируемого MPEG. Поэтому нельзя использовать вид предпросмотра как доказательство того, что D2V Witch применил фильтр Bicubic к исходнику. Файл .m2v остаётся извлечённым видеопотоком, а D2V содержит индексные сведения. Экранный конвертер нужен Qt, чтобы получить формат, который можно показать как изображение.

Как D2V Witch ищет d2vsource для предпросмотра на Windows

На Windows код сначала пытается загрузить VapourSynth обычным способом, а при необходимости смотрит системную запись с путём к VapourSynth DLL. Если d2vsource не оказался автозагружен, выполняется дополнительная попытка загрузить d2vsource.dll через стандартный плагин VapourSynth, включая PATH и расположение исполняемого файла. После этого проверяется наличие d2vsource, resize и std. Поэтому сообщение о недоступном предпросмотре может означать не неисправность D2V, а проблему обнаружения одного из этих компонентов. Для диагностики полезно читать конкретную строку журнала: она различает невозможность загрузить библиотеку, получить API, создать core или найти нужный плагин.

Как отображается выбранный кадр

Числовое поле и горизонтальный ползунок вызывают один обработчик отображения. При доступной цепочке VapourSynth программа запрашивает кадр с конкретным номером, получает ширину, высоту и stride, формирует изображение для Qt и показывает его в прокручиваемой области. Если запрос кадра завершается ошибкой, текст ошибки попадает в журнал, а приложение не обязано прекращать весь сеанс. Такая архитектура полезна при локальной проблеме декодирования: можно отличить неудачу одного preview frame от сбоя индексации. Масштабирование и прокрутка окна относятся к просмотру, а не к редактированию геометрии исходного MPEG. Изменить размер будущего видео этими элементами нельзя.

Зачем в GUI есть отдельная страница демультиплексирования

До Engage окно показывает входные файлы, D2V, видеодорожки, цветовой диапазон, флажок demux и аудио. Если флажок выделения видео включён и индексирование прошло успешно, центральная область переключается на страницу с кадром, границами, числовым полем и ползунком. Это двухэтапный рабочий процесс: сначала D2V должен быть построен, затем его кадровая структура используется для выбора диапазона. Поэтому пользователь не видит привычной шкалы монтажа сразу после открытия файла. Возврат к добавлению нового видео очищает состояние текущей страницы и снова переводит окно к индексированию. Такое устройство подчёркивает узкую задачу функции cut/demux.

Как ведёт себя добавление новых файлов после режима фрагмента

Если пользователь находится на странице выбора диапазона и нажимает Add files, код очищает текущий входной список и внутренний состав демультиплексируемого задания, затем возвращает страницу индексирования и добавляет выбранные файлы. Это предотвращает случайное смешивание нового источника с уже проиндексированным фрагментом в старом состоянии интерфейса. После изменения входов очищаются D2V-поле, списки видео и аудио, затем контейнер анализируется заново. Поэтому подготовленные границы кадра не являются глобальными закладками, которые сохраняются при смене материала. Их нужно считать частью конкретного индекса и конкретного набора входных файлов.

Как удаление и перестановка входов влияет на уже выбранные параметры

После Remove, Move up или Move down D2V Witch закрывает текущий общий вход, изменяет состав или порядок файлов, очищает рассчитанные элементы интерфейса и повторно анализирует поток. Это правильно: старые video ID, предложенное имя D2V и аудиозадержки могли относиться к другой последовательности байтов. Пользователь не должен ожидать, что отмеченные дорожки сохранятся после структурного изменения входа. Если нужен контролируемый эксперимент с двумя вариантами порядка, лучше сначала записать параметры первого варианта и его результат под отдельным именем, затем перестроить список и повторить индексирование. Так сравнение не будет зависеть от визуально оставшихся, но фактически пересчитанных значений.

Для чего полезен --info перед пакетным запуском

Режим --info показывает релевантные сведения о входе, включая список видео- и аудиодорожек и их ID, не требуя сначала угадывать значения параметров. В автоматизированном архиве это полезный разведочный этап: результат можно сохранить в журнал задания, после чего явно выбрать --video-id и --audio-ids. Особенно это важно для транспортных потоков, где идентификаторы не обязаны быть одинаковыми между записями. --info не создаёт универсальный профиль и не решает за пользователя, какая дорожка нужна. Его задача — сделать выбор проверяемым. Если входов много и структура различается, сначала собирать сведения, а затем запускать индексирование безопаснее, чем слепо применять один набор ID ко всей папке.

Когда имеет смысл --quiet, а когда он мешает

Параметр --quiet убирает обычную информацию о прогрессе и предупреждения, но фатальные ошибки всё равно печатаются. Это удобно в скрипте, где успешные задания не должны засорять консоль. Для первого запуска нового типа материала quiet, наоборот, лишает полезных подсказок: лучше увидеть предупреждения, статистику и возможные сообщения о корректировке ключевых позиций. Если пакетная система сохраняет только stderr/stdout при ошибке, quiet может быть разумным компромиссом; если нужно расследовать редкий сбой, его следует отключить и при необходимости поднять отдельный уровень FFmpeg. Главное не путать тишину с успешностью: скрипт всё равно должен проверять состояние процесса и наличие ожидаемого D2V.

Что именно меняет Limited и Full

Переключатель Input colour range не преобразует пиксели и не расширяет уровни яркости в MPEG. Он выбирает значение поля YUVRGB_Scale в создаваемом D2V: Limited соответствует одному значению, Full — другому. По умолчанию выбран Limited (TV). Этот метаданный сигнал предназначен для последующей интерпретации источника. Поэтому визуальное сравнение двух D2V в сторонней цепочке может отличаться только если потребитель учитывает поле; сами исходные байты остаются теми же. Если пользователь не уверен в диапазоне, выбирать Full для большей контрастности неправильно: настройка должна описывать реальный источник. Для коррекции уровней нужны отдельные фильтры после декодирования.

Почему цветовой параметр сохраняется и для вырезанного фрагмента

Когда после demux создаётся новый D2V к выделенному .m2v, индексирующий worker получает тот же выбранный Input colour range, что и первый проход. Это логично: демультиплексирование не меняет пиксельные уровни, поэтому метаданный выбор должен оставаться согласованным. Если пользователь перед вторым этапом не меняет переключатель, пара исходного и фрагментного D2V описывает диапазон одинаково. Такой механизм ещё раз показывает, что Limited/Full — характеристика индекса, а не фильтр. Если первоначальный выбор оказался ошибочным, разумнее исправить его и переиндексировать, чем пытаться компенсировать неверное поле случайными настройками вывода в следующем инструменте.

Что делать, если аудиодекодер выбранной дорожки не открывается

При чтении контейнера GUI пробует инициализировать аудиодекодер для найденных дорожек и сохраняет результат проверки. Пока проблемная дорожка не отмечена, она не обязана мешать созданию D2V. Но если пользователь ставит флажок на аудио, для которого декодер не открылся, список получает предупреждение с ID этой дорожки. Практическое решение зависит от цели: если звук не нужен, снять флажок и индексировать видео; если нужен, сначала выяснить кодек и поддержку используемой сборкой FFmpeg. Менять video ID или цветовой диапазон в такой ситуации бессмысленно. Раздельная валидация аудио помогает не считать ошибку конкретного звукового потока доказательством непригодности MPEG-видео в целом.

Как D2V Witch ведёт себя с повреждёнными или странными кадрами

Во время разбора код проверяет размеры, тип изображения и доступность опорных кадров. Кадр с недопустимыми размерами может быть пропущен с записью в журнал; неизвестный picture type также не превращается автоматически в нормальный MPEG-кадр. В конце потока одиночное незавершённое поле отбрасывается, чтобы не передавать декодеру структуру, которую тот не сможет корректно использовать. Это защитные меры индексатора, но не полноценный ремонт повреждённого файла. Если журнал показывает массовые проблемы, лучше сначала получить корректный MPEG-поток или проверить источник специализированным анализатором. D2V не способен восстановить утраченные данные, которых физически нет в файле.

Как понимать MPEG elementary stream в контексте D2V Witch

Элементарный поток — это видео MPEG без обычной многодорожечной контейнерной обёртки. Для такого файла D2V Witch может создать индекс к самой видеопоследовательности, но ожидать списка нескольких аудиодорожек бессмысленно, если аудио в файле физически отсутствует. Этот случай особенно прост: выбрать видео, проверить Limited/Full, задать имя D2V и запустить Engage. Если требуется аудио, оно должно находиться в отдельном источнике и синхронизироваться уже вне D2V Witch. Режим выделения части способен создать новый .m2v, который по сути остаётся элементарным MPEG-видео. Такой результат удобен как промежуточный технический файл, но не как конечный медиаконтейнер для обычного плеера.

Как понимать program stream и DVD

MPEG program stream объединяет потоки в структуре, характерной в том числе для DVD VOB. D2V Witch умеет индексировать такой материал и извлекать выбранное аудио, а специальная логика имён VTS помогает собрать последующие части одного title set при запуске с единственным VOB. При этом индексатор не читает DVD-меню как монтажный проект, не выбирает главы и не использует поля vob/cell D2V для навигации по структуре диска — эти поля записываются нулевыми. Поэтому для точного выбора титула или угла сначала нужно получить правильную последовательность VOB/потоков, а затем индексировать её. D2V Witch работает с предоставленными MPEG-данными, а не с логикой авторинга DVD.

Как понимать transport stream

Для MPEG transport stream программа поддерживает типичные записи вещания и Blu-ray-подобные потоки, но видеокодек всё равно должен быть MPEG-1/2. При создании D2V она фиксирует PID выбранного видео, первый найденный audio PID для соответствующего поля формата и размер транспортного пакета, если FFmpeg его сообщает. Пользовательский список видеодорожек показывает реальные ID, что помогает выбрать нужную программу в сложном TS. Если поток содержит современный H.264/AVC или HEVC, сам факт расширения .ts не делает его совместимым. В такой ситуации нужен другой индексатор/source-плагин. Для старой MPEG-2 телезаписи D2V Witch, наоборот, соответствует своей основной области применения.

Почему поля vob, cell и skip требуют осторожной интерпретации

В документации проекта прямо указано, что поле skip всегда записывается как 0, а vob и cell также остаются 0. Это ограничение формируемого D2V, а не пользовательские настройки, которые можно включить в меню. Если downstream-инструмент ожидает точную DVD cell-информацию в этих полях, D2V Witch её не предоставит. Для обычного открытия MPEG через d2vsource это не отменяет основную функцию индекса, но при сравнении с DGIndex важно учитывать различие в полноте отдельных полей формата. Не следует вручную придумывать значения в D2V без понимания спецификации: безопаснее выбрать инструмент, который действительно записывает требуемую структуру.

Сравнение D2V Witch с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
D2V WitchD2V-индекса MPEG-1/2, выбора дорожек и демультиплексирования части MPEG-видеоТолько MPEG-1/2 и D2V-ориентированный процесс
DGIndexКлассического MPEG-2 D2V-индексирования и демультиплексированияОриентирован на экосистему DGMPGDec и не заменяет универсальный FFmpeg-индексатор
ffmsindex (FFMS2)Индексирования широкого набора контейнеров и кодеков для FFMS2Создаёт .ffindex, а не D2V для d2vsource
LWLibavSource (L-SMASH Works)Libav-индексирования разных форматов при открытии через L-SMASH WorksИспользует собственный .lwi-кэш, а не D2V
DGIndexNVИндексирования для последующего открытия через DGDecodeNV/DGSourceСоздаёт индекс своего семейства и рассчитан на другой source-декодер

Если дальнейший скрипт уже использует d2vsource и исходник действительно MPEG-1/2 в поддерживаемом потоке, D2V Witch даёт самый прямой путь: создать D2V и при необходимости извлечь дорожки или непрерывный видеофрагмент. FFMS2 и L-SMASH Works удобнее, когда нужен более широкий охват форматов, но их индексы не подменяют D2V. DGIndex ближе всего по классу задачи для MPEG-2, тогда как DGIndexNV относится к собственной цепочке индекса и декодера.

Итог по назначению

D2V Witch стоит выбирать тогда, когда исходный материал действительно относится к MPEG-1/2 и дальнейшая цепочка ожидает D2V для d2vsource. Сильная сторона программы — ясное разделение индексирования, выбора потоков и демультиплексирования от последующего фильтрования и кодирования. Если задача начинается с MP4/MKV, современных видеокодеков, монтажа, эффектов или выпуска готового файла, нужен инструмент другого класса; попытка превратить D2V Witch в универсальный конвертер только усложняет процесс.