Transcode Video позволяет перекодировать видеофайлы и распакованные образы Blu-ray или DVD в MP4, M4V либо MKV с автоматически подобранными параметрами H.264, звука и субтитров, а при необходимости — вручную задать кадрирование, разрешение, частоту кадров, дорожки, ограничения битрейта и дополнительные параметры кодировщика.
Основной сценарий у Transcode Video строится вокруг команды transcode-video.sh: скрипт анализирует вход через HandBrakeCLI, определяет геометрию и характеристики выбранного title, собирает параметры x264, формирует аудиодорожки и передаёт итоговую задачу HandBrakeCLI. Поэтому при обычном фильме можно ограничиться одним аргументом с путём к файлу, а расширенные ключи использовать только там, где автоматические решения нужно изменить.
Программа ориентирована на управляемое перекодирование рипов, а не на монтаж. В ней нет временной шкалы, эффектов или визуального редактора: вместо этого доступны точные ключи для выбора title и глав, обрезки кадра, ограничения разрешения, управления частотой кадров, аудио, субтитрами и системой ограничения битрейта. Результат сохраняется вместе с журналом HandBrakeCLI, что удобно для проверки параметров и разбирательства с ошибками.
Скачать Transcode Video
- Конвертация видео
- Сжатие файлов
- Просто для новичков
- Нет графического интерфейса
- Зависит от HandBrakeCLI
- Нужны внешние CLI-утилиты
Что именно делает Transcode Video
Transcode Video — командный сценарий автоматизации HandBrakeCLI. Его ценность не в собственном видеокодеке, а в наборе правил, которые превращают типичный рип Blu-ray или DVD в более компактный H.264-файл с предсказуемыми ограничениями битрейта, совместимым контейнером и практичной схемой аудиодорожек. Скрипт рассчитывает параметры по входным данным, но сохраняет возможность переопределить почти каждый важный выбор.
По умолчанию выход создаётся в MP4. Ключ --mkv переключает контейнер на Matroska, а --m4v оставляет MP4-контейнер, но меняет расширение на .m4v. Имя строится из имени входного файла и записывается в текущую рабочую папку, если пользователь не указал -o или --output. Одновременно формируется файл журнала с тем же базовым именем и суффиксом .log.
При работе с обычным видеофайлом скрипт умеет использовать сведения о дорожках и характеристиках непосредственно из сканирования HandBrakeCLI. Для каталога распакованного диска особенно важен выбор title: по умолчанию берётся title 1, но номер можно задать явно или сначала запросить список доступных title через значение 0.
FILE— обычный видеофайл, например MKV после рипа диска.DIRECTORY— каталог с распакованной структурой диска, которую способен прочитать HandBrakeCLI.--title NUMBER— выбор title; значение 0 используется для сканирования и вывода списка.--chapters NUMBER[-NUMBER]— ограничение одной главой или диапазоном глав.--start-atи--stop-at— обработка части материала по кадрам, длительности или PTS.
Подготовка и запуск
Что должно быть доступно в PATH
Для самого перекодирования необходим исполняемый файл HandBrakeCLI в переменной PATH. Скрипт проверяет наличие зависимостей до запуска основной задачи и завершает работу с понятной ошибкой, если нужная утилита отсутствует. Встроенную справку можно посмотреть отдельно: она не требует предварительного запуска кодирования.
Часть функций вызывает дополнительные утилиты. Кадрирование с режимом --crop detect требует соседнего скрипта detect-crop.sh. Некоторые операции после кодирования используют mp4track для MP4 или mkvpropedit для MKV; режим поиска и добавления forced-субтитров в Matroska может потребовать mkvmerge. Поэтому устанавливать всё сразу необязательно: набор зависимостей можно подобрать под конкретный сценарий.
Файл скрипта должен иметь право на исполнение. После размещения transcode-video.sh в каталоге из PATH его можно вызывать по имени. Если файл оставлен в текущей папке, обычно запускают ./transcode-video.sh. Ошибка permission denied в такой ситуации относится не к видео, а к правам самого скрипта.

Минимальная команда
Базовый запуск выглядит как transcode-video.sh "Movie.mkv". Кавычки важны, если в пути есть пробелы, скобки, амперсанды или другие символы оболочки. Скрипт сканирует вход, определяет title, геометрию и дорожки, затем запускает HandBrakeCLI. Для большинства рипов имеет смысл сначала разобраться с кадрированием: автоматическое кадрирование HandBrakeCLI у Transcode Video не является безусловным значением по умолчанию.
Если нужно только узнать доступные title в каталоге диска, используется --title 0. Такой запуск не является полноценным кодированием: задача заканчивается после сканирования. Это самый безопасный способ определить, какой номер соответствует фильму, серии, бонусному материалу или альтернативной версии.
Входные данные: файлы, title, главы и фрагменты
Выбор title
Параметр --title NUMBER определяет, какой title передаётся HandBrakeCLI. Для одиночного MKV обычно существует один основной title, а в дисковом каталоге их может быть много. Если ошибиться с номером, можно перекодировать меню, бонус, короткий ролик или другую серию. Поэтому для дисковой структуры разумный порядок действий — сначала сканирование с нулём, затем повторный запуск с найденным номером.
При ошибке сканирования нужно отделять проблему Transcode Video от проблемы чтения входа HandBrakeCLI. Скрипт не занимается расшифровкой защищённых дисков. Он ожидает файл или уже доступную для HandBrakeCLI структуру. Если HandBrakeCLI не может разобрать источник, изменение параметров битрейта, аудио или субтитров ситуацию не исправит: сначала требуется получить корректный незашифрованный рип.
Главы
Ключ --chapters принимает один номер либо диапазон. Это полезно, если из длинного источника нужно обработать только конкретные главы, не создавая предварительный промежуточный файл. Выбор глав происходит до кодирования, поэтому журнал и длительность задачи относятся только к выбранному диапазону.
Для тестов качества можно взять короткий участок: так проще оценить кадрирование, фильтр, скорость пресета и схему звука, не ожидая обработки всего фильма. Однако вывод по битрейту короткого отрывка не всегда переносится на длинный материал, особенно если сцены сильно различаются по сложности.
Начальная и конечная точка
Пара --start-at и --stop-at передаёт ограничение по единицам, которые понимает HandBrakeCLI: frame, duration или pts. Duration задаётся в секундах, а PTS — по шкале 90 кГц. Такие параметры удобны для воспроизводимого тестового фрагмента, когда нужно сравнить два пресета или проверить проблемную сцену на одних и тех же временных границах.
При использовании фрагментов важно не путать ограничение входа с монтажом. Скрипт не предоставляет покадровую визуальную подрезку: пользователь задаёт числовые границы. Если начало должно совпасть с конкретным содержательным кадром, его обычно определяют заранее в проигрывателе или другом инструменте.
Выходной файл и выбор контейнера
MP4 по умолчанию
MP4 — базовый режим. Он подходит для распространённого H.264-видео, AAC и AC-3 в тех сочетаниях, которые формирует скрипт. При необходимости имя и папку можно задать через -o или --output. Если аргумент указывает каталог, имя строится автоматически; если указано полное имя файла, используется оно.
Расширение .m4v включается отдельно ключом --m4v. Это не отдельный видеокодек и не другой алгоритм качества: меняется расширение MP4-выхода. Выбор имеет смысл в цепочках, где расширение используется медиатекой или автоматизацией как признак типа файла.
Matroska через --mkv
Ключ --mkv переключает контейнер на MKV. Это важно не только для расширения: некоторые действия с именами дорожек и forced-флагами после кодирования выполняются другими инструментами. Для MKV скрипт может обращаться к mkvpropedit, тогда как для MP4 соответствующая обработка выполняется через mp4track.
Выбор контейнера стоит делать до настройки дополнительных аудио и субтитров. MKV обычно удобнее, когда нужно сохранить сложный набор дорожек, а MP4 — когда важна совместимость с устройствами и библиотеками, ориентированными на этот контейнер. Сам скрипт не превращает контейнер в универсальное решение: реальные ограничения определяются также кодеками, проигрывателем и набором дорожек.
Журнал кодирования
Рядом с результатом сохраняется журнал HandBrakeCLI. Он полезен для двух задач: понять, что именно было отсканировано и закодировано, и установить причину сбоя. В журнале видны параметры источника, выбранные дорожки, геометрия, фильтры, кодировщик и сообщения его библиотек. Если задача завершилась неожиданно, журнал информативнее одного последнего сообщения в терминале.
Лог следует рассматривать как технический отчёт HandBrakeCLI, а не как пользовательский проект Transcode Video. Поэтому в нём могут встречаться служебные сообщения библиотек, которые сами по себе не означают ошибку. Оценивать нужно финальный код возврата, наличие выходного файла и сообщения вокруг места остановки.
Система качества и ограничения битрейта
Transcode Video использует x264 внутри HandBrakeCLI и строит constrained variable bitrate-схему. В её основе — CRF вместе с ограничениями максимального битрейта и буфера. Идея состоит в том, чтобы не задавать один средний битрейт для любого материала: разрешение и сложность сцены влияют на фактический поток, но верхняя планка удерживает выход в практичных границах, пока это не конфликтует с минимально приемлемым качеством.
Базовые пределы в скрипте различаются по классам разрешения. Для 2160p используется 10000 Кбит/с, для 1080p — 5000, для 720p — 4000, для 480p — 2000. Это именно ориентиры системы ограничения, а не обещание получить файл с постоянным потоком такого значения. Сложный материал может требовать больше, поскольку сам скрипт допускает превышение максимума ради качества.
| Класс изображения | Базовый предел видео | С --big |
|---|---|---|
| 2160p | 10000 Кбит/с | 16000 Кбит/с |
| 1080p | 5000 Кбит/с | 8000 Кбит/с |
| 720p | 4000 Кбит/с | 6000 Кбит/с |
| 480p | 2000 Кбит/с | 3000 Кбит/с |
Параметр --big
Ключ --big повышает стандартные пределы видео и одновременно увеличивает целевой битрейт AC-3 до 640 Кбит/с. Это преднамеренно увеличивает размер результата. Его стоит применять, когда обычный профиль слишком жёстко ограничивает сложный или зернистый материал, а экономия места менее важна, чем запас качества.
Использование --big не означает максимальное качество и не меняет кодировщик на иной формат. Скрипт остаётся в той же логике x264, но расширяет лимиты. Поэтому разница сильнее проявляется там, где обычный предел реально сдерживал поток; на простом материале размер может измениться меньше ожидаемого.
Пресеты x264
Короткие ключи --fast, --faster и --veryfast ускоряют x264 ценой точности сжатия. --slow, --slower и --veryslow, наоборот, тратят больше времени ради эффективности сжатия. Базовый пресет в скрипте — medium. Пресет влияет прежде всего на компрессионную эффективность и время, а не служит простым ползунком качества.
Если кодирование слишком медленное, рациональнее начать с --fast, а не произвольно менять CRF и максимальный битрейт одновременно. Так проще понять, какой именно параметр дал эффект. Для сложного источника ускоренный пресет можно сочетать с более высоким пределом через --big, если итоговый размер допустим.
Расширенные параметры x264
В разделе advanced доступны --preset NAME и --tune NAME. Они позволяют использовать значения, которые поддерживает установленный HandBrakeCLI/x264, включая такие tune, как film, animation или grain. Конкретный перечень зависит от версии HandBrakeCLI, поэтому скрипт направляет пользователя к справке самого HandBrakeCLI.
--max BITRATE вручную заменяет рассчитанный максимальный битрейт, а --buffer SIZE задаёт размер видеобуфера. Базовый буфер составляет 50% от максимального битрейта. Эти параметры стоит менять вместе только при понимании VBV: слишком тесный буфер и низкий предел могут вынудить кодировщик сильнее упрощать сложные участки.
--crf FACTOR меняет базовый CRF, который по умолчанию равен 16. --crf-max FACTOR задаёт верхнюю границу CRF и по умолчанию равен 25; значение none отключает эту границу. При ручной работе с CRF важно помнить, что меньшее число означает более высокое качество и, как правило, больший размер.
--add-encopts OPTION=VALUE[:OPTION=VALUE...] добавляет параметры x264 поверх набора, который строит скрипт. Это наиболее рискованный путь настройки: можно легко создать противоречие с уже выбранными ограничениями. Такой ключ подходит для точечных экспериментов, когда пользователь знает семантику конкретной опции x264 и затем проверяет фактическую команду и журнал.
Кадрирование, масштаб и геометрия
Явное кадрирование
Формат --crop T:B:L:R задаёт число пикселей, удаляемых сверху, снизу, слева и справа. Нули означают отсутствие кадрирования. Это более предсказуемо, чем слепое применение автоматического определения для каждого входа, особенно если чёрные поля меняются от сцены к сцене или в первых превью есть титры и затемнения.
Порядок значений важен: top, bottom, left, right. Ошибка на десятки пикселей приводит не только к другой геометрии, но и к иному классу расчёта битрейта после обрезки. Перед длинным кодированием разумно проверить кадрирование на коротком фрагменте или через вспомогательный detect-crop.sh.
detect и auto
--crop detect запускает отдельный detect-crop.sh. Этот режим удобен, когда кадрирование нужно определить алгоритмически до основного кодирования. Он требует, чтобы вспомогательный скрипт был доступен в PATH; отсутствие файла приводит к отдельной ошибке зависимости.
--crop auto передаёт решение о границах автоматике HandBrakeCLI. Этот вариант проще, но менее контролируем: результат зависит от того, какие кадры попали в анализ HandBrake. Для материала с нестабильными полями или необычным монтажом полезнее явные значения.

Ограничение разрешения
Параметры --480p, --720p, --1080p и --2160p задают верхние границы 854×480, 1280×720, 1920×1080 и 3840×2160 соответственно. Это именно ограничение вписывания, а не команда растянуть любой вход до указанного размера. Источник меньшего разрешения не должен искусственно увеличиваться только ради достижения выбранной границы.
480p имеет отдельное примечание: границы 854×480 не являются идеальным 16:9 в целых пикселях и этот режим не предназначен как универсальная настройка для DVD. Для DVD важнее корректно учесть исходный pixel aspect ratio, кадрирование и реальные размеры после обработки.
Ключи --width WIDTH и --height HEIGHT позволяют вручную влиять на геометрию через размер, который HandBrakeCLI использует вместе с аспектом. Это параметры для случаев, когда стандартных границ недостаточно. После ручной геометрии особенно важно проверить display aspect ratio, чтобы круги не стали овалами, а лица — растянутыми.
Частота кадров и фильтры
Параметр --rate
--rate FPS[,limited] задаёт частоту кадров и опциональный флаг ограничения пикового значения. Без этого ключа скрипт опирается на входные данные. Принудительная частота полезна при заранее известной задаче воспроизведения, но её не стоит менять только ради уменьшения размера: конверсия частоты влияет на движение, дублирование или удаление кадров.
Если источник содержит телесин или чересстрочность, проблему обычно решают не произвольным FPS, а корректным фильтром. Скрипт может автоматически применить deinterlace для некоторых входов 29.97 fps, а расширенный параметр --filter позволяет явно включить поддерживаемые HandBrakeCLI фильтры.
Фильтры HandBrakeCLI
Ключ --filter NAME[=SETTINGS] передаёт фильтр HandBrakeCLI и при необходимости его настройки. Его можно использовать несколько раз. Набор имён и синтаксис значений зависят от установленной версии HandBrakeCLI, поэтому незнакомую комбинацию лучше сначала проверить через HandBrakeCLI --help и на коротком фрагменте.
Фильтр следует выбирать по дефекту исходника. Deinterlace нужен для чересстрочного движения, detelecine — для материала с телесином, denoise — только когда шум действительно мешает. Одновременное включение множества фильтров на всякий случай способно удалить полезную детализацию и усложнить диагностику результата.
Как Transcode Video формирует звук
Главная аудиодорожка
Ключ --audio TRACK[,NAME] выбирает основную аудиодорожку; по умолчанию используется первая. Дополнительное имя после запятой позволяет задать название. Для многоканального основного звука скрипт обычно создаёт практичную пару: AAC-версию для совместимого воспроизведения и многоканальный вариант, если исходный формат и выбранные правила это допускают.
Такой подход объясняет, почему число выходных аудиодорожек иногда больше одного даже при единственной выбранной дорожке во входе. Если вторичная версия не нужна, параметр --single отключает создание второй основной аудиодорожки. Это уменьшает число потоков и размер, но одновременно убирает альтернативу для устройств с иными возможностями декодирования.
AAC и базовые битрейты
В правилах скрипта моно AAC кодируется примерно в 80 Кбит/с, стерео — в 160 Кбит/с. Для surround создаётся стерео AAC 160 Кбит/с и, когда это разрешено, отдельная многоканальная дорожка. Эти числа относятся к логике Transcode Video и не означают, что входной поток обязательно имел такой битрейт.
Если источник уже содержит подходящий AC-3 surround с битрейтом не выше порога passthrough, скрипт может передать его без повторного кодирования. Базовый порог для многоканального AC-3 passthrough — 448 Кбит/с. Это позволяет не ухудшать уже подходящую дорожку лишним перекодированием.
Дополнительные дорожки
--add-audio [double,]TRACK[,NAME] добавляет ещё одну дорожку. Без флага double она добавляется в AAC; с double скрипт старается дополнительно включить многоканальный вариант, если он доступен. Ключ можно повторять для нескольких дорожек — например, языка оригинала и двух комментариев.
--add-all-audio single|double добавляет остальные дорожки автоматически: single — по одной AAC-версии, double — с попыткой получить AAC плюс многоканальный вариант. Этот ключ не применяется к основной дорожке и несовместим с ручным --add-audio, потому что два подхода задают разные правила формирования набора.
AC-3, DTS и surround
--allow-ac3 разрешает многоканальный AC-3 для дополнительных дорожек. --allow-dts шире: разрешает DTS-форматы для всех аудиодорожек и одновременно допускает AC-3 в дополнительных. Эти параметры полезны, когда контейнер и целевые проигрыватели действительно поддерживают соответствующие кодеки.
--no-surround полностью отказывается от многоканальных форматов на выходе. Его выбирают для сценариев, где важны простота и совместимость со стереоустройствами. При этом многоканальный источник всё равно может быть сведён в стерео AAC, но surround-дорожка не создаётся.
--ac3 BITRATE принимает 384, 448 или 640 Кбит/с и задаёт битрейт кодируемого AC-3; базовое значение — 384. --pass-ac3 BITRATE теми же допустимыми значениями управляет верхней границей passthrough для многоканального AC-3; базовое значение — 448. Эти два ключа отвечают за разные ситуации: повторное кодирование и прямое копирование.
--copy-ac3 принудительно сохраняет AC-3 основной дорожки без перекодирования, включая моно и стерео и независимо от битрейта. --copy-all-ac3 распространяет такое правило на все дорожки. Применять его следует только если конечные устройства умеют воспроизводить получающийся набор: passthrough сохраняет формат источника, а не делает его более совместимым.
Имена аудиодорожек
--copy-audio-names переносит исходные названия аудиодорожек, если другое имя не указано явным параметром. После кодирования скрипт может обратиться к mp4track или mkvpropedit, чтобы записать имена в соответствующий контейнер. Если такая утилита нужна для выбранной операции, её отсутствие обнаруживается до постобработки.
Имена особенно полезны в фильмах с несколькими языками и комментариями. Номер дорожки сообщает только позицию, а подпись вроде Director Commentary или English уменьшает риск выбора неправильного потока в проигрывателе. При автоматическом добавлении всех дорожек полезно заранее проверить сканирование, потому что исходные метаданные не всегда аккуратны.

Субтитры: прожиг, добавление и forced-флаги
Автоматический прожиг forced-дорожки
Базовое поведение предусматривает прожиг первой forced-субтитровой дорожки, если она обнаружена. Прожиг означает, что текст или графика становятся частью видеокадра и больше не могут быть выключены проигрывателем. Такой подход полезен для реплик на иностранном языке внутри фильма, но не подходит для постоянных полнотекстовых субтитров, которые пользователь хочет включать и выключать.
--burn TRACK явно выбирает номер дорожки для прожига. --no-auto-burn отключает автоматический выбор первой forced-дорожки. Если в источнике неправильно размечены forced-флаги, ручной номер надёжнее автоматики.
Сохраняемые дорожки
--add-subtitle [forced,]TRACK добавляет субтитровую дорожку без прожига; опциональный префикс forced помечает её для принудительного воспроизведения. Параметр повторяется для нескольких дорожек. --add-all-subtitles добавляет все остальные субтитры, кроме уже прожигаемой, и не используется одновременно с ручным списком --add-subtitle.
Forced-флаг в контейнере — это инструкция для проигрывателя, а не гарантия, что он поведёт себя одинаково во всех средах. Поэтому критические переводы коротких реплик надёжнее прожечь, если требуется неизменное отображение, а полные субтитры — оставить отдельной дорожкой, если нужна возможность отключения.
Поиск forced-субтитров по языку
--find-forced burn|add запускает поиск forced-субтитров того же языка, что и основная аудиодорожка. В режиме burn найденная дорожка прожигается, в режиме add добавляется как forced. Этот режим отключает часть других автоматических правил и субтитровых параметров, чтобы не создать конфликтующие решения.
Для варианта add в MKV может понадобиться mkvmerge, а итоговые флаги затем корректируются через mkvpropedit. Если вспомогательная утилита отсутствует, скрипт должен сообщить об этом до того, как пользователь сочтёт задачу завершённой.
Внешние SRT
--burn-srt [ENCODING,][OFFSET,]FILENAME прожигает внешние SubRip-субтитры. Можно указать кодировку и смещение в миллисекундах; базовая кодировка — latin1, базовое смещение — 0. Значения перед именем файла допускаются в любом порядке, если их можно однозначно распознать.
--add-srt [ENCODING,][OFFSET,][LANGUAGE,][forced,]FILENAME добавляет SRT как отдельную дорожку. Кроме кодировки и смещения можно задать ISO 639-2 код языка и forced-флаг. Базовый язык — und, то есть неопределённый. Язык лучше указать явно, если медиатека или проигрыватель выбирает субтитры по языковым предпочтениям.
Смещение полезно, когда внешний SRT синхронизирован с другой редакцией фильма. Положительное или отрицательное значение исправляет постоянный сдвиг, но не решает постепенное расхождение по длительности. Если субтитры сначала совпадают, а к финалу уходят, проблема обычно связана с другой частотой кадров или монтажом исходника, а не с одним фиксированным offset.
Разрешение 4K, 1080p, 720p и 480p на практике
Ограничение размера выбирают исходя из реального назначения файла. Для домашнего экрана 1080p может быть разумным компромиссом для Blu-ray, если 4K не требуется. Для планшета или экономии пространства можно выбрать 720p. 480p уместно для небольших экранов или низкой пропускной способности, но масштабирование DVD требует особого внимания к пиксельному аспекту.
Понижение разрешения само по себе не гарантирует пропорционального уменьшения файла: итог зависит от содержания, пресета, CRF, ограничения битрейта и звука. Если после 720p размер всё ещё велик, нужно посмотреть журнал и фактический видеобитрейт, а не сразу уменьшать CRF в неправильную сторону.
Поднимать предел до 2160p имеет смысл только для соответствующего входа. Превращение 1080p в 2160p не создаёт новых деталей и только увеличивает вычислительную работу. В задачах архива лучше сохранять исходный мастер отдельно, а выход Transcode Video рассматривать как производную копию для воспроизведения.
Практические сценарии
Blu-ray MKV в MP4 без лишних решений
- Проверьте, что MKV открывается и содержит нужный основной title и аудиодорожку.
- Определите кадрирование. Если полей нет, оставьте 0:0:0:0; если есть, получите корректные значения заранее.
- Запустите базовую команду с файлом. Для другого основного языка задайте
--audio. - После кодирования проверьте картинку, переключение аудио и наличие ожидаемых субтитров.
- Если размер или сложные сцены не устраивают, изменяйте один класс настроек за раз: пресет, --big или явные rate-control параметры.
Такой порядок оставляет автоматике максимум работы и одновременно делает диагностику понятной. Если сразу задать десять ключей, трудно определить, какой именно параметр вызвал неожиданный результат.
Дисковый каталог с несколькими фильмами или эпизодами
Сначала выполните сканирование с --title 0. Сопоставьте длительность и число глав с ожидаемым фильмом или эпизодом. Затем повторите запуск с --title N. Для сериалов рационально обработать каждый нужный title отдельной задачей с индивидуальным именем выхода, а не полагаться на title 1 для всех дисков.
Если сканирование показывает слишком много коротких title, ориентируйтесь не только на номер. Длительность, главы и состав дорожек помогают отличить основной материал от бонусов. В защищённой или повреждённой структуре список может быть неполным — это уже проблема чтения диска HandBrakeCLI.
Фильм с оригинальной дорожкой и дубляжом
Выберите нужную основную дорожку через --audio, а вторую добавьте через --add-audio. Если обе исходные дорожки surround и нужен многоканальный звук, используйте double или разрешите подходящий AC-3/DTS. Названия дорожек задайте явно либо включите перенос исходных имён.
Перед кодированием полезно посмотреть нумерацию дорожек в сканировании. Нельзя переносить номера из другого файла: даже диски одного сериала часто имеют разный порядок языка, комментариев и описательного аудио.
Комментарий режиссёра
Комментарий обычно не требует дублирующей surround-версии. Его можно добавить одиночным AAC через --add-audio TRACK,"Director Commentary". Это экономит место и делает назначение дорожки очевидным в проигрывателе. Если комментарий стерео, попытка сохранить многоканальный вариант всё равно не добавит полезной информации.
Видео для устройства со стереозвуком
Сочетание ограничения разрешения, например --720p, и --no-surround даёт более простой выход. При необходимости можно также выбрать более быстрый x264-пресет. Качество картинки и синхронизацию лучше проверить на реальном устройстве, потому что поддержка уровня H.264 и контейнера важнее номинального разрешения.
MKV с несколькими субтитрами
Включите --mkv и добавьте выбранные субтитры через повторяющийся --add-subtitle либо все через --add-all-subtitles. Forced-дорожку можно пометить отдельно. После завершения проверьте флаги default/forced в проигрывателе: разные плееры интерпретируют их не абсолютно одинаково.
Тест сложной сцены
Используйте --start-at и --stop-at для одного и того же участка и сравните medium, fast и slow. Так можно оценить не только визуальный результат, но и скорость. Полный фильм после выбора пресета кодируйте с теми же параметрами, но без временных ограничений.
Пакетная обработка и автоматизация
Transcode Video принимает один вход за вызов, поэтому пакетная обработка строится средствами оболочки: циклом, очередью файлов или внешним автоматизатором. Это даёт больше контроля, чем скрытая внутренняя очередь, но возлагает на пользователя ответственность за имена, журналы, повторный запуск после ошибки и свободное место.
Удобная схема — хранить список входов в текстовом файле, перед каждым запуском вычислять индивидуальное кадрирование и вызывать transcode-video.sh с общими параметрами. Для фильмов без чёрных полей файл кадрирования можно не создавать, а для остальных хранить четыре значения T:B:L:R. Такой подход позволяет менять очередь без переписывания логики.
Пакетный сценарий должен проверять код возврата и существование результата перед переходом к следующему входу. Если игнорировать ошибки, очередь может закончиться формально успешно, хотя несколько файлов будут отсутствовать. Журналы стоит писать в отдельную папку или перемещать после каждой задачи, если текущий рабочий каталог используется для многих фильмов.
Для автоматизации нельзя формировать команду простым склеиванием непроверенных имён: пробелы, кавычки и спецсимволы оболочки требуют корректного quoting. Самый надёжный путь — всегда передавать путь как один аргумент в кавычках и не использовать eval без крайней необходимости.
Диагностика типичных ошибок
transcode-video.sh: command not found
Оболочка не видит скрипт в PATH. Запустите файл по явному пути или поместите его в каталог, присутствующий в PATH. Если файл найден, но не исполняется, проверьте права. Эта ошибка возникает до анализа видео и не связана с форматом входа.
executable not in $PATH: HandBrakeCLI
Скрипт нашёл себя, но не нашёл HandBrakeCLI. Установка графического HandBrake не всегда означает наличие отдельного CLI в PATH. Проверьте командой HandBrakeCLI --version, что именно командная утилита запускается из той же оболочки.
scanning media failed или scanning media title failed
Сбой сканирования означает, что HandBrakeCLI не смог получить ожидаемое описание входа или выбранного title. Проверьте путь, права доступа, корректность файла, номер title и возможность HandBrakeCLI открыть этот источник самостоятельно. Для диска убедитесь, что передана читаемая незашифрованная структура.
input not found
Обычно причина в неправильном пути или разборе спецсимволов оболочкой. Заключите путь в кавычки. Если используется относительный путь, проверьте текущую рабочую папку. В автоматизации полезно сначала вывести вычисленный путь и убедиться, что он указывает на существующий файл.
Неверный title
Если кодируется не тот материал или задача сразу короткая, просканируйте вход с нулевым title и выберите номер по длительности и главам. Для дисков с эпизодами номер может отличаться от физического порядка на коробке. После изменения рипа нумерацию лучше проверить заново.
Проблема с кадрированием
Если срезаны детали изображения, прекратите использовать найденные значения и вернитесь к нулям или повторному анализу. Автокроп на нескольких превью иногда принимает тёмную сцену за чёрную рамку. Для переменных рамок выбирают компромисс или вообще не кадрируют, чтобы не менять границы внутри фильма.
В выходе нет ожидаемой surround-дорожки
Проверьте исходное число каналов, выбранный номер, --single, --no-surround и ограничения AC-3/DTS. Не всякая многоканальная дорожка может быть передана напрямую в выбранный контейнер и на целевое устройство. Журнал HandBrakeCLI показывает, какой входной поток был декодирован и какой кодировщик применён к каждой выходной дорожке.
Неправильная аудиодорожка
Главная причина — номер взят из другого файла или из плеера, который показывает дорожки в иной нумерации. Используйте сканирование, на которое опирается Transcode Video. При нескольких языках задайте имя через параметр либо включите перенос исходных названий, чтобы итог было проще проверять.
Forced-субтитры не появляются
Флаг forced может отсутствовать или быть размечен некорректно. Используйте явный --burn TRACK, если номер известен, либо --find-forced для поиска по языку основной дорожки. Для внешних SRT forced-флаг задаётся отдельно, а прожиг выполняется через --burn-srt.
Не работает переименование дорожек
Постобработка имён требует mp4track для MP4 или mkvpropedit для MKV. Проверьте наличие соответствующей утилиты в PATH. Само кодирование может пройти, но метаданные не удастся изменить, если дополнительный инструмент отсутствует.
Параметр распознан HandBrakeCLI иначе
Некоторые значения --filter, --preset, --tune и низкоуровневые encoder options зависят от установленной версии HandBrakeCLI. Если параметр отвергается, сверяйте именно справку локального HandBrakeCLI. Transcode Video не подменяет его валидатор и не делает неизвестный ключ допустимым.
Команда работает вручную, но ломается в batch-скрипте
Сравните quoting и рабочий каталог. В пакетном запуске относительный путь относится к папке, из которой реально запущен сценарий, а не к расположению видео. Параметры должны идти до входного аргумента, если синтаксис скрипта ожидает такой порядок. Логируйте итоговую команду без использования небезопасного eval.

Расширенный справочник параметров
Ниже собраны основные ключи Transcode Video и практический смысл каждого. Синтаксис параметров HandBrakeCLI, которые передаются дальше, может зависеть от установленной версии; таблица описывает именно логику самого скрипта.
| Параметр | Назначение |
|---|---|
| --title NUMBER | Выбирает title. Ноль используется для сканирования и вывода списка без полноценного кодирования. Для дисковых каталогов это один из ключевых параметров. |
| --chapters NUMBER[-NUMBER] | Ограничивает обработку одной главой или диапазоном. Полезно для тестов и выборочного извлечения части фильма без предварительного монтажа. |
| --start-at UNIT:VALUE | Задаёт точку начала по frame, duration или pts. Duration указывается в секундах; pts использует временную шкалу 90 кГц. |
| --stop-at UNIT:VALUE | Задаёт точку окончания или длительность в логике HandBrakeCLI. В паре со start-at позволяет воспроизводимо кодировать один тестовый участок. |
| -o, --output | Меняет путь и/или имя результата. Если передан каталог, имя строится из входа; если файл — используется заданное имя. |
| --mkv | Выбирает контейнер Matroska. Метаданные дорожек после кодирования при необходимости корректируются инструментами MKVToolNix. |
| --m4v | Оставляет MP4-контейнер, но использует расширение .m4v. Качество кодирования этим ключом само по себе не меняется. |
| --big | Повышает ограничения битрейта видео и AC-3. Увеличивает допустимый размер и даёт больше запаса сложным сценам. |
| --fast | Выбирает более быстрый x264-пресет. Ускорение достигается ценой компрессионной точности, а не сменой формата. |
| --faster | Ещё сильнее смещает баланс в сторону скорости. Для оценки потерь лучше использовать одинаковый короткий фрагмент. |
| --veryfast | Максимально быстрый из коротких ускоряющих ключей скрипта. Может заметно увеличить размер при сопоставимой визуальной цели. |
| --slow | Тратит больше времени на поиск эффективного кодирования. Часто уменьшает поток по сравнению с medium на сложном материале. |
| --slower | Более тяжёлый по вычислениям пресет x264. Выбирать его имеет смысл после проверки, что экономия размера оправдывает время. |
| --veryslow | Один из самых медленных поддерживаемых коротких пресетов. Не гарантирует заметного визуального выигрыша на каждом источнике. |
| --crop T:B:L:R | Явно удаляет пиксели сверху, снизу, слева и справа. Значение 0:0:0:0 оставляет весь кадр. |
| --crop detect | Вызывает detect-crop.sh и требует этот скрипт в PATH. Подходит для автоматизированного определения границ до кодирования. |
| --crop auto | Передаёт выбор кадрирования автоматике HandBrakeCLI. Проще, но менее предсказуемо на материале с переменными рамками. |
| --480p | Ограничивает результат рамками 854×480. Не следует рассматривать как универсальный режим для любого DVD. |
| --720p | Ограничивает рамками 1280×720 без необходимости вручную рассчитывать размеры при сохранении аспекта. |
| --1080p | Ограничивает рамками 1920×1080. Полезно для уменьшения 4K-входа или сохранения Full HD-границы. |
| --2160p | Ограничивает рамками 3840×2160. Не создаёт новых деталей при апскейле более малого источника. |
| --width WIDTH | Задаёт пользовательскую ширину в геометрии HandBrakeCLI. Требует проверки итогового display aspect ratio. |
| --height HEIGHT | Аналогично задаёт пользовательскую высоту. Неправильное сочетание может привести к нежелательной геометрии. |
| --rate FPS[,limited] | Меняет частоту кадров и позволяет указать peak-limited режим. Не стоит применять как простой способ уменьшить размер. |
| --audio TRACK[,NAME] | Выбирает главную аудиодорожку и при необходимости задаёт имя. По умолчанию используется дорожка 1. |
| --single | Не создаёт вторичную главную аудиодорожку. Упрощает выход, но убирает альтернативный формат surround/стерео. |
| --add-audio | Добавляет указанную дорожку в AAC; префикс double просит также многоканальный вариант при возможности. |
| --add-all-audio single|double | Автоматически добавляет все прочие аудиодорожки в одинарном или удвоенном формате. Не совмещается с ручным add-audio. |
| --allow-ac3 | Разрешает многоканальный AC-3 для дополнительных дорожек, когда это возможно в текущей схеме. |
| --allow-dts | Разрешает DTS в аудиодорожках и одновременно разрешает AC-3 для дополнительных. Совместимость нужно проверять на цели. |
| --no-surround | Запрещает многоканальные выходные форматы. Практично для стереоустройств и более простых файлов. |
| --ac3 384|448|640 | Задаёт битрейт создаваемого AC-3. Базовое значение скрипта — 384 Кбит/с. |
| --pass-ac3 384|448|640 | Задаёт верхний битрейт AC-3 для многоканального passthrough; по умолчанию 448 Кбит/с. |
| --copy-ac3 | Всегда копирует AC-3 основной дорожки без перекодирования, включая моно и стерео. |
| --copy-all-ac3 | Распространяет принудительный passthrough AC-3 на все применимые дорожки. |
| --copy-audio-names | Переносит исходные имена, если они не переопределены другими параметрами. |
| --burn TRACK | Прожигает выбранную субтитровую дорожку в видеокадр. Используют, когда субтитры должны быть неотключаемыми. |
| --no-auto-burn | Отключает автоматический прожиг первой forced-дорожки. |
| --add-subtitle [forced,]TRACK | Добавляет субтитры отдельной дорожкой и опционально ставит forced-флаг. Можно повторять. |
| --add-all-subtitles | Добавляет остальные субтитры автоматически, кроме прожигаемой. Не совмещается с ручным add-subtitle. |
| --find-forced burn|add | Ищет forced-субтитры языка основной аудиодорожки и либо прожигает, либо добавляет их отдельным forced-потоком. |
| --burn-srt | Прожигает внешний SRT с возможной кодировкой и временным смещением. |
| --add-srt | Добавляет внешний SRT с кодировкой, смещением, языком ISO 639-2 и опциональным forced-флагом. |
| --preset NAME | Передаёт произвольный x264 preset, поддерживаемый текущим HandBrakeCLI, вместо коротких fast/slow ключей. |
| --tune NAME | Передаёт x264 tune, например film, animation или grain, если он поддерживается локальным HandBrakeCLI. |
| --max BITRATE | Заменяет автоматически рассчитанный максимум видеобитрейта. Скрипт всё равно может превысить его ради ограничения потери качества. |
| --buffer SIZE | Задаёт буфер VBV. По умолчанию скрипт использует 50% от максимального битрейта. |
| --add-encopts | Добавляет низкоуровневые параметры x264. Требует понимания конфликтов с уже рассчитанными настройками. |
| --crf FACTOR | Меняет базовый CRF с значения 16. Меньшее число обычно означает больше качества и размер. |
| --crf-max FACTOR|none | Ограничивает максимальный CRF; базовое значение 25. none отключает это ограничение. |
| --filter NAME[=SETTINGS] | Добавляет фильтр HandBrakeCLI; параметр можно повторять. Набор фильтров сверяют со справкой установленного HandBrakeCLI. |
| --help | Показывает встроенную справку и завершает работу до проверки большинства зависимостей. |
| --version | Печатает идентификатор программы и сведения, зашитые в скрипт, затем завершает работу. |
Глубокая настройка и контроль результата
Для стабильной работы важно понимать не только отдельные ключи, но и то, как решения связаны между собой. Следующие пункты помогают разбирать сложные источники и строить воспроизводимую автоматизацию без случайного изменения качества.
Как читать сканирование входа
Сканирование — это не формальность перед кодированием, а основной источник решений Transcode Video. В выводе HandBrakeCLI нужно сопоставить длительность, геометрию, частоту кадров, главы, аудио и субтитры. Для одиночного MKV это помогает убедиться, что дорожка 1 действительно является тем языком, который нужен. Для дискового каталога сканирование ещё важнее: один физический диск может содержать основной фильм, расширенную версию, бонусы и короткие служебные title. Выбор только по порядковому номеру без проверки длительности легко приводит к неправильному результату.
Если параметры источника выглядят странно — например, частота кадров явно не соответствует ожидаемой или аудиодорожек меньше, чем показывает проигрыватель, — сначала разберитесь с тем, как вход читает HandBrakeCLI. Transcode Video строит решения поверх этого анализа и не может восстановить поток, которого HandBrakeCLI не увидел. Для спорного файла полезно выполнить отдельное сканирование и сохранить вывод перед изменением любых параметров.
Почему текущая рабочая папка имеет значение
Без --output результат и журнал записываются в текущую рабочую папку, а не обязательно рядом с исходным видео. Это важно в shell: команда может быть запущена из домашнего каталога, из папки batch-сценария или из автоматизатора. Если после завершения пропал результат, сначала проверьте pwd и имя, которое скрипт вывел перед запуском HandBrakeCLI. Указание явной папки выхода делает большие очереди заметно предсказуемее.
Рабочая папка влияет и на относительные пути. Аргумент Movie.mkv означает файл в текущем каталоге, тогда как /Media/Rips/Movie.mkv не зависит от места запуска. Для автоматизации лучше использовать абсолютные пути к входу и отдельный абсолютный каталог результата; это устраняет целый класс ошибок, когда задача работает вручную, но перестаёт работать из планировщика.
Разница между ограничением размера и изменением аспекта
Ключи --720p, --1080p и --2160p задают границу, в которую изображение должно вписаться с сохранением правильной геометрии. Это отличается от ручных --width и --height, где пользователь вмешивается в расчёт размеров. Если исходник имеет не квадратные пиксели, особенно типичные для DVD, storage dimensions и display dimensions могут отличаться. Оценивать нужно то, как изображение отображается, а не только числа ширины и высоты в контейнере.
После crop пропорции полезной области меняются. Поэтому масштабирование следует рассматривать после кадрирования: сначала определяется реальная область изображения, затем она вписывается в выбранные границы. Если сделать умозрительный расчёт по исходным 1920×1080, но фактически обрезать широкие полосы сверху и снизу, итоговая геометрия и нагрузка на кодировщик будут другими.
Когда ручной --max оправдан
Автоматические пределы Transcode Video закрывают типичный сценарий, поэтому ручной --max нужен не каждому. Он полезен, когда есть конкретное ограничение среды воспроизведения, сетевого канала или медиасервера и пользователь понимает, что это ограничение способно влиять на сложные сцены. Слишком низкий максимум не превращает кодек в более эффективный: он заставляет x264 сильнее сжимать материал в моменты высокой сложности.
Если проблема состоит только в слишком большом среднем размере, сначала стоит выяснить фактический поток по журналу и характер материала. Зернистый фильм естественно сжимается хуже чистой цифровой анимации. Жёсткое одинаковое значение для обоих источников создаёт неравные условия. В таких случаях медленный пресет или разумное уменьшение разрешения часто даёт более предсказуемый результат, чем агрессивное ограничение одного параметра.
Роль буфера VBV
Параметр --buffer работает вместе с максимальным битрейтом и задаёт пространство, в котором кодировщик может перераспределять сложность во времени. Базовая логика скрипта использует половину значения максимального битрейта. Уменьшение буфера делает требования строже, что может быть нужно для конкретного декодера или канала, но одновременно уменьшает свободу x264 на резких всплесках сложности.
Менять buffer без понимания maxrate обычно не имеет смысла. Если цель — просто сделать файл меньше, VBV не является прямым регулятором итогового размера. Он ограничивает поведение потока на коротких интервалах. Для общей экономии места важнее разрешение, содержимое, аудиосхема, пресет и CRF. После ручной настройки VBV обязательно смотрите журнал на предупреждения и тестируйте самые динамичные эпизоды.
CRF и CRF-max — не одно и то же
--crf задаёт базовую целевую точку качества x264, а --crf-max ограничивает, насколько далеко кодировщик может уйти в сторону более сильного сжатия при действующих ограничениях. Поэтому увеличение CRF и снятие CRF-max дают разные результаты. Первое сознательно снижает базовую цель качества; второе разрешает системе сильнее отступать от неё только там, где этого требуют ограничения.
При диагностике артефактов полезно понимать, какой механизм сработал. Если сложные сцены страдают только при низком maxrate, проблема может быть в ограничении потока, а не в базовом CRF. Если весь фильм выглядит чрезмерно мягко, проверять нужно и CRF. Одновременная смена обеих настроек затрудняет вывод, поэтому эксперименты лучше разделять.
Почему зерно требует отдельного внимания
Плёночное зерно и цифровой шум плохо предсказываются межкадровым сжатием и могут резко повышать требуемый битрейт. Для такого источника обычный лимит сильнее влияет на результат, чем для чистой анимации или компьютерной графики. В Transcode Video для подобных случаев есть более высокий профиль --big, а x264 также поддерживает tune grain через расширенный --tune, если он доступен в установленном HandBrakeCLI.
Не следует автоматически удалять зерно фильтром ради меньшего файла: это уже изменение изображения. Если зерно является частью мастер-материала, решение зависит от цели копии. Для просмотра на небольшом экране шумоподавление может быть приемлемо, для сохранения визуального характера фильма — нет. Скрипт оставляет этот выбор пользователю, не навязывая универсальный denoise.
Как проверять быстрые пресеты
Пресеты fast, faster и veryfast экономят вычислительное время, но их влияние нельзя оценить только по FPS кодирования. Сравните одинаковый фрагмент и посмотрите итоговый размер, сложные текстуры, движение и тёмные градиенты. Быстрый пресет может потребовать больше битрейта для сопоставимого результата, поэтому выигрыш во времени иногда сопровождается более крупным файлом.
Если ускоренный режим нужен для большой очереди, сначала протестируйте несколько типов материала. Один мультфильм не представляет всю библиотеку, как и один зернистый фильм. После выбора пресета можно использовать общий параметр в batch-сценарии, а для исключительных источников хранить отдельный набор настроек.
Как проверять медленные пресеты
Переход от medium к slow, slower и veryslow имеет смысл, когда время кодирования не критично и важна компрессионная эффективность. Однако убывающая отдача наступает быстро: каждый следующий шаг может требовать значительно больше времени при небольшом изменении размера. Поэтому veryslow не стоит назначать по умолчанию только из-за названия.
Сравнивать пресеты нужно при одинаковых остальных параметрах. Если одновременно включить --big или изменить CRF, нельзя понять, что дало уменьшение или увеличение файла. Практический тест — один и тот же фрагмент, одинаковые crop, resolution, audio и subtitles, а меняется только preset. После этого выбор переносится на полный материал.
Аудио: почему одна входная дорожка может стать двумя
Для surround-источника Transcode Video стремится совместить простое воспроизведение и многоканальный звук. Поэтому основная дорожка способна породить AAC-версию для широкой совместимости и отдельный многоканальный поток. Пользователь, ожидающий буквальное соответствие один вход — один выход, может принять это за ошибку, хотя это штатная логика скрипта.
Если нужна только одна версия, используется --single либо --no-surround в зависимости от цели. Первый ключ управляет вторичной main-дорожкой, второй запрещает многоканальные выходные форматы вообще. Их смысл различается, поэтому выбирать следует по желаемому набору потоков, а не только по размеру файла.
AAC-стерео как совместимая дорожка
Стерео AAC создаётся не для того, чтобы улучшить surround, а чтобы дать вариант, который проще воспроизводить на телевизорах, планшетах, браузерных клиентах медиасервера и других устройствах. При downmix многоканального источника пространственная информация сводится в два канала, поэтому эта дорожка функционально отличается от оригинального surround.
Если конечная система всегда подключена к AV-ресиверу и надёжно поддерживает исходный формат, можно упростить набор. Но для переносимой коллекции наличие стерео-версии часто уменьшает вероятность динамического перекодирования на сервере. Проверять всё равно нужно на конкретной цепочке, потому что контейнер и декодер определяют реальную совместимость.
Passthrough и повторное кодирование AC-3
Passthrough сохраняет уже существующий AC-3-поток без потерь от второго кодирования. Это оправдано, когда его битрейт и число каналов подходят ограничениям. Если входной AC-3 превышает заданный порог или правила требуют другой поток, Transcode Video может перекодировать его в выбранный AC-3 bitrate. Разница важна: один путь копирует данные, другой создаёт новый сжатый поток.
Ключи --pass-ac3, --copy-ac3 и --copy-all-ac3 дают разную степень принуждения. Самый безопасный вариант — оставлять автоматическое решение, пока не существует конкретной причины сохранить AC-3 без изменений. Принудительный passthrough повышает требования к целевому декодеру.
DTS и совместимость
DTS часто встречается в рипах Blu-ray, но поддерживается не всеми MP4-проигрывателями и клиентами медиасерверов одинаково. --allow-dts разрешает такой многоканальный формат в дорожках, но не делает его универсальным. Если файл предназначен для разнообразных устройств, AAC плюс AC-3 обычно предсказуемее, чем безусловное сохранение DTS.
Перед массовой обработкой проверьте один файл на реальном устройстве, включая прямое воспроизведение и поток через медиасервер. Иногда сервер принимает контейнер, но транскодирует только из-за аудио. В таком сценарии сохранение DTS может свести на нет цель заранее подготовленной переносимой копии.
Нумерация входных и выходных дорожек
Номер, указанный в --audio или --add-audio, относится к входной дорожке, которую видит сканирование. После кодирования порядок выходных потоков может быть другим, особенно когда surround-дорожка создаёт стерео и многоканальную версии. Поэтому команды post-processing для имён работают уже с индексами выходного контейнера, которые рассчитывает скрипт.
При ручной проверке не сравнивайте номера из входного MediaInfo и меню готового плеера буквально. Сравнивайте язык, имя, число каналов и фактическое звучание. Если назначение критично, задайте явные названия дорожек и проверьте их после post-processing.
Forced-субтитры как метаданные и как содержимое
Понятие forced существует на двух уровнях. Входная дорожка может быть помечена как forced в контейнере, а отдельные события внутри некоторых субтитров могут иметь собственные признаки. Автоматическое обнаружение зависит от того, что HandBrakeCLI сообщает о входе. Неправильно размеченный рип способен выглядеть корректно в одном плеере и не давать ожидаемого результата в скрипте.
Если фильм содержит иностранные реплики, которые всегда должны быть видны, ручной burn конкретной дорожки наиболее предсказуем. Если важно сохранить возможность выключения, добавляйте дорожку и ставьте forced-флаг, затем проверяйте поведение целевого плеера. Универсального поведения для всех устройств нет.
Прожиг против отдельной субтитровой дорожки
Прожиг меняет видеокадр и требует повторного кодирования вместе с текстом. Плюс в том, что любой проигрыватель покажет субтитры; минус — их нельзя отключить или заменить. Отдельная дорожка сохраняет гибкость, но зависит от поддержки контейнера, формата субтитров, языка и forced/default-флагов.
Для постоянного перевода нескольких фраз burn разумен. Для полноценных субтитров на весь фильм чаще лучше отдельный поток. Если нужен одновременно forced-перевод и полный язык, можно прожечь только forced и добавить полный трек отдельно, предварительно проверив, что они не дублируют одни и те же реплики.
SRT: кодировка, язык и смещение
Внешний SRT прост по структуре, но три свойства часто вызывают ошибки. Кодировка определяет, правильно ли читаются кириллица и специальные символы; язык влияет на автоматический выбор в медиатеке; offset исправляет постоянный временной сдвиг. Transcode Video позволяет задавать эти поля прямо в аргументе добавления или прожига.
Перед длинным кодированием откройте SRT обычным текстовым редактором и убедитесь, что начало и конец синхронизированы с конкретной редакцией фильма. Если требуется изменение скорости субтитров, offset недостаточен. Тогда SRT нужно пересинхронизировать отдельным инструментом, а уже потом передавать скрипту.
Почему MP4 и MKV требуют разной постобработки
Само видео H.264 может быть одинаковым, но контейнеры по-разному хранят имена и флаги дорожек. Поэтому Transcode Video использует mp4track для некоторых операций MP4 и mkvpropedit для MKV. Если задача не требует изменения этих метаданных, дополнительные инструменты могут не понадобиться. Это объясняет, почему минимальная установка бывает проще расширенной.
Когда функция post-processing нужна, отсутствие утилиты лучше обнаружить до запуска многчасового кодирования. Скрипт содержит проверки зависимостей для соответствующих сценариев. В автоматизации полезно отдельно выполнить пробную команду на коротком фрагменте, чтобы убедиться, что вся цепочка доступна в PATH.
Что означает успешное завершение HandBrakeCLI
Появление строки прогресса 100% ещё не означает, что все последующие действия закончены. После HandBrakeCLI скрипт может менять имена дорожек или forced-флаги. Поэтому batch-система должна ориентироваться на итоговый код возврата всей команды transcode-video.sh, а не на внутреннее состояние HandBrakeCLI. Только после нулевого кода результат можно перемещать в финальную медиатеку.
Если post-processing завершается ошибкой, сам видеофайл может быть уже создан. Необходимо понять, какие метаданные не применились, а не автоматически перекодировать видео повторно. Иногда достаточно устранить проблему с mp4track/mkvpropedit и повторить нужную операцию, но это уже ручная диагностика.
Как строить безопасную очередь
Простая очередь должна хранить входы по одному на строку, извлекать первый элемент, запускать Transcode Video, проверять код возврата и только затем переходить к следующему. Если задача упала, вход лучше оставить в очереди или перенести в отдельный список ошибок. Удаление записи до проверки результата создаёт риск потерять информацию о неуспешной задаче.
Для каждого входа можно хранить отдельный crop и набор языков. Тогда общий сценарий остаётся коротким, а различия описываются данными. Такой подход легче проверять, чем множество if-веток по именам файлов. Лог команды и время завершения полезно писать рядом с итогом для последующего аудита.
Права доступа к исходнику и выходу
Успешное сканирование требует права чтения входного файла или всех необходимых частей дисковой структуры. Запись результата требует права создания файла в выходной папке. В автоматизаторе пользователь процесса может отличаться от пользователя интерактивного Terminal, поэтому задача, работающая вручную, способна получать permission denied по расписанию.
Проверяйте права именно от имени того процесса, который запускает очередь. Для сетевых томов дополнительно важен факт монтирования и стабильность пути. Transcode Video не управляет подключением дисков и не ждёт появления сетевого ресурса: это обязанность внешней автоматизации.
Свободное место и большие исходники
Рип Blu-ray может занимать десятки гигабайт, а результат — существенно меньше, но заранее точный размер неизвестен из-за переменного битрейта. Перед длинной очередью оставляйте запас, особенно если результаты и исходники находятся на одном томе. Не запускайте удаление оригинала автоматически сразу после появления нового файла.
Если диск закончился во время записи, контейнер может остаться неполным. После освобождения места задачу нужно считать неуспешной и проверить журнал. Для пакетного процесса полезно до запуска сравнивать свободное место с грубой оценкой очереди и останавливать новые задания при достижении минимального порога.
Почему один набор параметров не подходит всей библиотеке
Даже одинаковые Blu-ray различаются по зерну, продолжительности, количеству аудио и наличию чёрных полей. Смысл Transcode Video как раз в том, чтобы большую часть решений принимать автоматически по входу, а не заставлять пользователя навязывать фиксированный битрейт каждому фильму. Общими обычно остаются контейнер, предпочтительный пресет и политика аудио, а crop и язык часто индивидуальны.
Если библиотека смешивает анимацию, старое кино, сериалы DVD и современные цифровые мастера, полезно иметь несколько профилей batch-скрипта, а не один гигантский набор ключей. Так проще понимать, почему конкретный файл кодировался именно с этими параметрами.
Проверка результатов на медиасервере
Один из смыслов заранее перекодированной копии — избежать повторного динамического транскодирования во время просмотра. После создания файла откройте его через тот же медиасервер и клиент, которыми будете пользоваться, и проверьте режим воспроизведения. Если сервер всё равно транскодирует, причина может быть в контейнере, уровне H.264, аудиокодеке, субтитрах или сетевых ограничениях.
Не стоит автоматически уменьшать видеокачество, пока не выяснено, какой поток вызывает транскодирование. Иногда достаточно изменить surround-аудио или способ субтитров. Лог сервера и информация клиента полезнее догадок по расширению файла.
Когда выбрать HandBrake напрямую
Если задача единичная и требует визуально покрутить crop, выбрать дорожки мышью и сразу увидеть превью, графический HandBrake удобнее. Transcode Video раскрывает преимущества в повторяемых командах и коллекциях, где одни и те же правила должны применяться последовательно. Он не пытается заменить GUI для каждого пользователя.
При диагностике полезно уметь воспроизвести проблему в HandBrakeCLI или HandBrake. Если исходник не сканируется и там, причина ниже уровня скрипта. Если HandBrakeCLI работает с ручной командой, а Transcode Video нет, тогда уже исследуют сформированные параметры и логику wrapper.
Когда выбрать FFmpeg напрямую
FFmpeg лучше, если нужен кодек, который не вписывается в H.264/x264-ориентированную логику Transcode Video, необычная фильтрация, сложное картирование потоков, генерация HLS/DASH или нестандартный контейнер. Но свобода FFmpeg означает, что расчёт качества, аудиосхемы и совместимости полностью ложится на пользователя.
Transcode Video выгоднее, когда задача соответствует его модели: фильм или эпизод из рипа, H.264, предсказуемый размер и несколько практичных дорожек. Не следует усложнять один инструмент до функций другого — правильнее выбрать тот конвейер, который естественно выражает задачу.
Как выбирать настройки без лишних экспериментов
Начинайте с минимального набора ключей. Если вход обычный MKV, сначала решите только три вопроса: какое нужно кадрирование, какая главная аудиодорожка и какой контейнер. Остальную автоматику лучше оставить исходной. После первого результата видно, действительно ли нужен более высокий битрейт, другой пресет или сложная схема субтитров.
Изменяйте по одному классу параметров. Для скорости сравнивайте пресеты; для размера и сложных сцен — --big, max, buffer и CRF; для совместимости — контейнер и аудиоформаты; для геометрии — crop и разрешение. Когда параметры нескольких классов меняются одновременно, журнал становится сложнее интерпретировать.
Не оценивайте кодирование только по числу мегабайт. Проверьте сцены с движением, тёмные градиенты, зерно, тонкие текстуры и титры. Для звука переключите все дорожки, а для субтитров проверьте forced-поведение. Технически корректный файл может быть неудобен, если проигрыватель выбирает не ту дорожку по умолчанию.
Храните команду рядом с результатом, если планируется воспроизводимая библиотека. Сам журнал показывает много параметров HandBrakeCLI, но сохранённая команда быстрее объясняет осознанные решения: номер основной дорожки, crop, контейнер, дополнительные языки и внешние SRT.
Если важен архив исходника, не заменяйте им выход Transcode Video. Перекодирование H.264 с потерями предназначено для более компактной производной копии. Исходный рип нужен для будущего повторного кодирования в другой формат, если требования к устройствам или качеству изменятся.
Ограничения, которые важно учитывать
- У программы нет графической панели: все действия задаются аргументами командной строки.
- Кодирование зависит от HandBrakeCLI; часть функций зависит от detect-crop.sh, mp4track, mkvpropedit или mkvmerge.
- Скрипт не расшифровывает защищённые Blu-ray и DVD и ожидает уже читаемый файл или структуру диска.
- Основная видеологика ориентирована на H.264/x264 и соответствующую систему rate control, а не на выбор из большого числа современных кодеков.
- Автоматические решения по forced-субтитрам и дорожкам зависят от корректности метаданных входного файла.
- Пакетная очередь строится внешними средствами оболочки, а не встроенным менеджером заданий.
Эти ограничения не мешают основному сценарию, но определяют, кому инструмент подходит. Пользователь, которому нужен визуальный интерфейс с превью, монтажом, аппаратными кодировщиками и готовыми профилями под множество устройств, вероятно, быстрее решит задачу в GUI-конвертере. Transcode Video сильнее там, где важны воспроизводимая команда и понятные правила H.264-кодирования.
Сравнение Transcode Video с аналогами
| Программа | Лучше подходит для | Главное ограничение |
|---|---|---|
| Transcode Video | Автоматизированное H.264-перекодирование рипов Blu-ray/DVD через HandBrakeCLI с управляемыми аудио и субтитрами | Командная строка и внешние зависимости |
| HandBrake | Интерактивное и пакетное перекодирование с готовыми пресетами и визуальной настройкой | Сложную воспроизводимую логику приходится настраивать вручную или через CLI |
| FFmpeg | Нестандартные медиапайплайны, широкий выбор кодеков, фильтров и контейнеров | Высокий порог настройки и отсутствие готовой логики Transcode Video |
| Shutter Encoder | GUI-обработка и конвертация множества форматов на базе FFmpeg | Меньше специализации на автоматическом профиле Blu-ray/DVD в стиле Transcode Video |
| VidCoder | Очереди HandBrake-кодирования и удобный GUI в Windows | Ориентирован на Windows и другой способ автоматизации |
| ВидеоМАСТЕР | Пользователи, которым нужен русскоязычный графический конвертер и простая настройка формата | Меньше низкоуровневой командной автоматизации x264/HandBrakeCLI |
Если нужен повторяемый конвейер для коллекции рипов и вы готовы работать в shell, Transcode Video экономит ручную настройку HandBrakeCLI и даёт детальный контроль там, где это действительно требуется. Для визуальной работы без команд удобнее HandBrake, Shutter Encoder, VidCoder или ВидеоМАСТЕР. FFmpeg лучше выбирать, когда задача выходит за рамки H.264-сценария и нужны специфические кодеки, фильтры или сложная маршрутизация потоков.
Практические сочетания параметров
| Сценарий | Пример | Что меняется |
|---|---|---|
| Обычный MKV без чёрных полей | transcode-video.sh "Movie.mkv" | Минимальный запуск, когда первая аудиодорожка правильная и forced-субтитры размечены корректно. |
| Blu-ray до 1080p | transcode-video.sh --1080p "Movie.mkv" | Ограничивает геометрию Full HD, не требуя ручного расчёта размера. |
| Компактный 720p со стерео | transcode-video.sh --720p --no-surround "Movie.mkv" | Уменьшает разрешение и исключает многоканальный выход. |
| Сложный зернистый фильм | transcode-video.sh --big --slow "Movie.mkv" | Даёт больше запаса по битрейту и более тщательный x264-пресет; цена — время и размер. |
| Быстрый тест | transcode-video.sh --fast --start-at duration:600 --stop-at duration:60 "Movie.mkv" | Кодирует минутный фрагмент для проверки параметров без полной задачи. |
| Выбор второго title | transcode-video.sh --title 2 "DiscDirectory" | Используется после предварительного сканирования каталога диска. |
| Диапазон глав | transcode-video.sh --chapters 3-5 "Movie.mkv" | Обрабатывает только указанные главы. |
| Явный crop | transcode-video.sh --crop 132:132:0:0 "Movie.mkv" | Удаляет заданные полосы сверху и снизу. |
| Автокроп HandBrake | transcode-video.sh --crop auto "Movie.mkv" | Передаёт определение полей HandBrakeCLI. |
| Определение crop вспомогательным скриптом | transcode-video.sh --crop detect "Movie.mkv" | Использует detect-crop.sh; требует его наличия в PATH. |
| Основной язык не первый | transcode-video.sh --audio 2,"Original" "Movie.mkv" | Назначает вторую входную дорожку основной и даёт ей имя. |
| Добавить комментарий | transcode-video.sh --add-audio 4,"Director Commentary" "Movie.mkv" | Сохраняет дополнительную дорожку как AAC. |
| Добавить все языки | transcode-video.sh --add-all-audio single "Movie.mkv" | Добавляет остальные аудиопотоки по одной AAC-версии. |
| Сохранить surround для дополнительных | transcode-video.sh --allow-ac3 --add-all-audio double "Movie.mkv" | Просит удвоенную схему и разрешает AC-3 там, где это допустимо. |
| Только одна главная аудиодорожка | transcode-video.sh --single "Movie.mkv" | Отключает вторичную main-аудиоверсию. |
| Явно прожечь субтитры | transcode-video.sh --burn 2 "Movie.mkv" | Встраивает дорожку 2 в видеокадр. |
| Сохранить все субтитры | transcode-video.sh --add-all-subtitles "Movie.mkv" | Добавляет субтитры отдельными потоками, не считая прожигаемой. |
| Внешний SRT | transcode-video.sh --add-srt rus,"Movie.ru.srt" "Movie.mkv" | Добавляет отдельный текстовый поток с языковой меткой, если синтаксис файла распознан корректно. |
| MKV вместо MP4 | transcode-video.sh --mkv "Movie.mkv" | Выбирает Matroska для результата. |
| Свой выходной каталог | transcode-video.sh -o "/Media/Converted/" "Movie.mkv" | Отделяет результаты от исходников, сохраняя автоматическое имя. |
Примеры показывают принцип, а не универсальные рецепты. Номера title, аудио и субтитров нужно брать из конкретного входа. Параметры внешних SRT, пользовательских фильтров и ручного x264 особенно важно проверять через справку и короткий тест, потому что одна ошибка в синтаксисе может остановить задачу до кодирования.
Часто задаваемые вопросы
Можно ли использовать Transcode Video без HandBrakeCLI?
Нет. Скрипт строит и запускает задачу HandBrakeCLI, поэтому без этого исполняемого файла основное кодирование невозможно. Встроенную справку можно посмотреть отдельно.
Почему программа называется Transcode Video, а файл — transcode-video.sh?
Рабочая команда Bash-скрипта использует имя файла transcode-video.sh. В статье название Transcode Video относится именно к этому скрипту, а не к одноимённым графическим конвертерам и не к Ruby-команде из другого пакета.
Как узнать номер title?
Запустите сканирование с --title 0. Затем сравните длительность, число глав и дорожки и повторите команду уже с нужным номером.
Можно ли читать защищённый Blu-ray напрямую?
Скрипт не выполняет расшифровку. HandBrakeCLI должен получить уже читаемый файл или структуру диска.
Почему по умолчанию нет автоматического crop?
Скрипт предпочитает предсказуемое явное кадрирование. Можно использовать --crop auto или --crop detect, если нужна автоматизация.
Что выбрать: --big или меньший CRF?
Это разные рычаги. --big повышает лимиты битрейта и AC-3, тогда как CRF меняет целевой уровень качества. Сначала полезнее проверить, ограничивает ли результат именно VBV/максимальный поток.
Как ускорить кодирование?
Начните с --fast, затем при необходимости --faster или --veryfast. Сравнивайте один и тот же короткий фрагмент и следите за размером и сложными сценами.
Как уменьшить файл?
Можно ограничить разрешение, отказаться от surround, выбрать более эффективный медленный пресет или точечно пересмотреть rate-control. Не меняйте все параметры одновременно.
Можно ли получить только стерео?
Да, --no-surround исключает многоканальные выходные форматы. При необходимости --single дополнительно убирает вторичную main-аудиодорожку.
Как сохранить комментарий?
Добавьте номер через --add-audio и задайте понятное имя. Для обычного комментария single AAC чаще всего достаточно.
Чем --allow-ac3 отличается от --copy-ac3?
allow-ac3 разрешает создание/использование многоканального AC-3 в дополнительных дорожках по логике скрипта, а copy-ac3 принудительно передаёт AC-3 основной дорожки без перекодирования.
Почему после --add-all-audio много дорожек?
Режим double может создавать AAC и многоканальный вариант для одного исходного потока. Используйте single, если нужна только одна версия каждой дополнительной дорожки.
Как отключить автоматические forced-субтитры?
Используйте --no-auto-burn. После этого нужную дорожку можно прожечь вручную или добавить отдельно.
Можно ли добавить внешний SRT?
Да, через --add-srt; для постоянного отображения используйте --burn-srt. Поддерживаются дополнительные поля кодировки, смещения, языка и forced-флага.
Как исправить постоянный сдвиг SRT?
Задайте offset в миллисекундах в параметре SRT. Если сдвиг нарастает по ходу фильма, одного offset недостаточно — требуется другая синхронизация.
Что делает --m4v?
Меняет расширение MP4-выхода на .m4v. Это не отдельный видеокодек.
Когда лучше MKV?
Когда нужен гибкий набор дорожек и метаданных Matroska. Однако конечный проигрыватель должен поддерживать выбранные кодеки и флаги.
Можно ли кодировать несколько файлов одной командой?
Сам скрипт рассчитан на один вход за вызов. Очередь строят циклом shell, списком файлов или внешней автоматизацией.
Где искать причину сбоя?
Сначала смотрите сообщение в терминале, затем .log HandBrakeCLI. Отдельно проверьте существование входа и внешних утилит в PATH.
Почему размер отличается у двух фильмов одинакового разрешения?
Система переменного битрейта реагирует на сложность изображения. Зерно, движение и детализация требуют разного потока даже при одинаковой геометрии.
Нужно ли всегда использовать veryslow?
Нет. Более медленный пресет увеличивает время и не гарантирует заметной визуальной разницы. Выбирать его стоит по тестам на конкретном материале.
Можно ли задать собственный x264 tune?
Да, через --tune NAME, если значение поддерживается установленным HandBrakeCLI/x264.
Что делать с ошибкой неизвестного фильтра?
Проверьте синтаксис в HandBrakeCLI --help. Transcode Video передаёт фильтр дальше и не может поддержать имя, которого нет в локальной сборке HandBrakeCLI.
Зачем хранить исходный рип?
Выход H.264 создаётся с потерями. Если позже понадобится другой кодек, разрешение или аудиосхема, качественнее перекодировать заново из исходника.
Проверка после завершения кодирования
Не ограничивайтесь фактом появления файла. Откройте начало, середину и финал; переключите каждую аудиодорожку; проверьте forced-субтитры; перемотайте через главы. Если использовался нестандартный crop, посмотрите сцены с наиболее светлыми рамками и титрами у края. Такая проверка быстрее обнаруживает ошибку выбора дорожки или геометрии, чем анализ одного MediaInfo-отчёта.
Свободное место во время работы
Выходной файл создаётся рядом с журналом либо в указанной папке, поэтому перед длинной очередью оцените запас диска. Нельзя ориентироваться только на ожидаемый финальный размер: промежуточные операции внешних инструментов и несколько параллельных задач увеличивают пиковое потребление. При ошибке записи сначала проверьте свободное место и права каталога.
Повторный запуск после ошибки
Если кодирование остановилось, исправьте первопричину и запускайте задачу заново с теми же аргументами. Не следует считать частичный MP4 или MKV готовым только потому, что файл существует. Для batch-сценария полезно переносить успешный результат только после нулевого кода возврата, а не по факту появления имени на диске.
Контроль языка дорожек
Языковые метки входа иногда отсутствуют или ошибочны. Перед автоматическим --add-all-audio проверьте сканирование нескольких файлов из коллекции. Если нумерация нестабильна, безопаснее задавать основную дорожку индивидуально для каждого фильма и использовать понятные имена, чем рассчитывать, что второй поток всегда является оригиналом.
Совместимость проигрывателя
Контейнер, кодек и число каналов образуют единый набор требований. Проигрыватель может открывать MP4, но не декодировать выбранный surround-формат, или понимать MKV, но игнорировать forced-флаг. Финальную копию следует проверять на реальном целевом устройстве до массовой обработки коллекции.
Когда не стоит использовать --add-all-subtitles
Некоторые диски содержат десятки субтитров, дублей и служебных дорожек. Автоматическое добавление всех увеличивает сложность меню и может мешать автопереключению. Если нужны только два языка, ручной --add-subtitle делает результат предсказуемее и уменьшает риск неверного default/forced поведения.
Работа с необычной частотой кадров
Не округляйте 23.976 до 24 или 29.97 до 30 без причины. Небольшая числовая разница может нарушить плавность или синхронизацию при длинном воспроизведении, если одновременно меняется временная база. Оставляйте входной rate, пока конкретное устройство или источник не требует преобразования.
Оценка пресета по времени
Скорость x264 зависит от разрешения, CPU, фильтров и сложности материала. Значение, полученное на одном фильме, нельзя считать гарантией для следующего. Для планирования очереди лучше сделать одинаковый минутный тест на нескольких типах материала: чистая цифровая картинка, зернистое кино и динамичная сцена.
Почему медленнее не всегда лучше визуально
Медленный пресет ищет более эффективное представление того же сигнала. Его выигрыш часто проявляется в размере или битрейте, а не в очевидной разнице при паузе на кадре. При агрессивных ограничениях важнее дать кодировщику достаточный битрейт, чем бесконечно замедлять пресет.
Проверка внешних SRT
Перед запуском убедитесь, что файл SRT действительно соответствует монтажу и длительности видео. Кодировка должна содержать нужные символы без замены, а язык — соответствовать метке. Прожиг стоит тестировать на короткой сцене с субтитрами, иначе ошибку шрифта или синхронизации можно заметить только через много минут кодирования.
Отдельная папка результатов
Для больших коллекций удобно направлять выход в отдельный каталог через --output. Это уменьшает риск перепутать исходный рип и производную копию и упрощает резервное копирование. Логи можно перемещать вместе с результатами, сохраняя единое базовое имя для последующей диагностики.
Не используйте апскейл как улучшение
Если исходник 720p, ограничение 1080p или 2160p не восстанавливает потерянные детали. Увеличение размера кадра лишь создаёт больше пикселей из существующей информации. Для производной копии разумнее сохранить исходное разрешение или уменьшить его под конкретное устройство.
Проверка уровня громкости
Transcode Video управляет выбором и форматом дорожек, но субъективная громкость разных источников может отличаться. Если библиотека состоит из фильмов с разным мастерингом, не следует ожидать одинакового perceived loudness только из-за одинакового AAC-битрейта. Нормализацию нужно планировать как отдельную осознанную операцию.
Резервирование команд
Если для конкретного фильма потребовались нестандартные параметры, сохраните команду в текстовом файле рядом с исходником или в журнале автоматизации. Это особенно полезно для сложного crop, ручного выбора language-track и внешнего SRT: спустя месяцы параметры можно воспроизвести без повторного исследования.
Параллельные задания
Запуск нескольких x264-задач одновременно может не ускорить суммарную обработку: процессы конкурируют за CPU, память и дисковый ввод-вывод. Для стабильной очереди обычно проще кодировать последовательно, а параллелизм увеличивать только после измерения загрузки и температуры системы.
Символы в именах файлов
Скобки, апострофы, амперсанды, квадратные скобки и пробелы имеют смысл для оболочки. Передавайте путь одним аргументом в кавычках и избегайте ручного экранирования, когда можно использовать корректное quoting. В batch-скрипте храните исходный путь как строку, а не как набор слов.
Изменение контейнера не меняет качество видео
Переключение MP4 на MKV само по себе не повышает детализацию H.264. Качество определяют кодирование и rate control. Контейнер влияет на упаковку дорожек, метаданные и совместимость. Поэтому выбирать его следует по требованиям воспроизведения, а не как настройку качества.
Проверка логов после batch
После большой очереди ищите не только явное слово error. Сравните число входов и успешных выходов, размеры файлов и завершение каждой команды. Нулевой или подозрительно маленький файл может появиться при раннем сбое. Автоматизация должна фиксировать код возврата и не маркировать такую задачу как успешную.
Индивидуальные crop-файлы
Если у фильмов разные рамки, храните значения crop отдельно по базовому имени. Общий batch-скрипт может подхватывать индивидуальное значение, а при отсутствии файла использовать 0:0:0:0. Это удобнее, чем длинная цепочка условий внутри сценария и проще проверяется перед стартом очереди.
Проверка метаданных после переименования дорожек
После работы mp4track или mkvpropedit откройте контейнер инструментом анализа или проигрывателем и убедитесь, что имена записались именно в ожидаемые дорожки. Индекс выходной дорожки может отличаться от номера входа, поскольку одна исходная surround-дорожка способна породить несколько выходных.
Контрольный список перед длинным кодированием
Перед многочасовой задачей или запуском очереди полезно пройти короткий технический список. Он не добавляет новых функций, но снижает число повторных кодирований из-за неверного title, crop или дорожки.
- Вход открывается в HandBrakeCLI без Transcode Video.
- Для дискового каталога заранее найден правильный title.
- Путь к файлу заключён в кавычки, если содержит пробелы или специальные символы.
- Crop проверен на сценах с разной яркостью и титрами у краёв.
- Номер главной аудиодорожки взят из сканирования конкретного файла.
- Дополнительные языки и комментарии имеют понятные имена.
- Решено, нужен ли surround на целевом устройстве.
- Forced-субтитры проверены отдельно от полных субтитров.
- Внешний SRT совпадает с монтажом и имеет корректную кодировку.
- Выбран контейнер, поддерживаемый реальным проигрывателем.
- При ручном фильтре его синтаксис подтверждён локальной справкой HandBrakeCLI.
- При --crop detect доступен detect-crop.sh.
- При изменении имён дорожек доступны mp4track или mkvpropedit.
- При --find-forced add в MKV доступен mkvmerge, если он потребуется.
- На диске достаточно места для результата и журнала.
- Для сравнения пресетов используется один и тот же тестовый фрагмент.
- После теста проверены движение, градиенты, зерно и тонкие детали.
- После кодирования вручную переключены все аудиодорожки и субтитры.
- Batch-сценарий проверяет код возврата каждой задачи.
- Исходный рип не удаляется до подтверждения, что производная копия полностью пригодна.
Итог
Transcode Video подходит для тех случаев, когда рип Blu-ray или DVD нужно превратить в компактный H.264-файл по воспроизводимым правилам, не настраивая HandBrakeCLI с нуля для каждого фильма. Автоматический расчёт ограничений битрейта, продуманная схема аудио, управление forced-субтитрами, явное кадрирование и возможность точечной настройки x264 делают скрипт особенно удобным в повторяющемся домашнем конвейере.
Оптимальный рабочий подход — сначала убедиться, что вход читается и выбран правильный title, затем определить crop и основную аудиодорожку, выполнить минимальное кодирование и только после этого усложнять параметры. Такой порядок сохраняет сильную сторону Transcode Video — автоматизацию — и одновременно оставляет достаточно контроля для сложных фильмов, нескольких языков, комментариев и внешних субтитров.