AudionAudion

Media Tools

github.com/Tensionix/media-tools ↗
Сборки этого проекта: версии, файлы и контрольные суммы.
Media Tools

Все необходимые ресурсы для профессиональной работы с аудио- и видеоформатами, кодеками и аппаратными ресурсами при помощи FFmpeg и Python. Редактура без перекодирования и точнейшие покадровые изменения с таймкодами. Превью открывается в mpv, точки A и B берутся прямо из него. Аудиоинженерия на уровне дискретов и битов.

3.0.0
13 загрузок с GitHub

Audion Media Tools

English · Руководство · Консольная команда · Замеры · Решения

Содержание

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

Зачем это сделано

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

Программа хранит этот опыт в пресетах и даёт ему окно: разделы и режимы, пресеты, память путей, терминал с родным выводом FFmpeg и видимая команда. Каждая кнопка окна — операция консольной команды media_cli.cmd, поэтому та же работа идёт из пакетного файла или у ИИ-агента, которого попросили словами.

Главное решение: новее не значит лучше

Каждая сборка FFmpeg собрана под конкретную версию заголовков аппаратного кодирования NVIDIA, и каждая требует своего минимума драйвера. Поставьте самую свежую на драйвер постарше — аппаратное кодирование не ускорится, а перестанет работать.

сборка FFmpegзаголовки NVENCнужен драйвер NVIDIA
9.0.1n13.1.15.0610.0
8.0.1n13.0.19.0570.0
7.1.1n13.0.19.0570.0
7.1n12.2.72.0551.76

Третья строка важнее остальных: 7.1.1 собрана теми же заголовками, что и 8.0.1, и требует те же 570.0 — «откатиться на версию назад» на старом драйвере не даёт ничего. Помогает только переход на 7.1.

Поэтому установщик подбирает сборку по вашему драйверу, а не берёт последнюю.

В поставке 8.0.1 — и это выбор, а не забытое обновление. Машины для монтажа сегодня живут на драйверах примерно с 571 по 609; ветка 610 стоит у считанных единиц. И 8.1, и 9.x требуют именно её: поставить их значит заявить аппаратное ускорение и не дать его большинству тех, кому оно обещано. В 8.0.1 есть всё, что используют эти программы, и она работает на тех драйверах, которые у людей действительно стоят.

Нет видеокарты NVIDIA — всё это неважно: кодирование идёт на процессоре.

Что умеет каждый путь

Все три аппаратных пути поддержаны одинаково полно: NVIDIA, Intel и AMD закрывают H.264, HEVC и AV1, каждый со своими родными регуляторами качества и своими пробами декодирования. Различия в таблице ниже — это пределы самих кодировщиков, а не пробелы в программе.

путьH.264HEVCAV110 бит4:2:2
CPU (x264 / x265 / SVT-AV1)дадададада
NVIDIA NVENC8 битдаav1_nvencHEVC и AV1только новое железо
Intel QuickSync8 битдаav1_qsvHEVC и AV1нет
AMD AMF8 битдаav1_amfHEVC и AV1нет

H.264 на любом аппаратном пути — только 8 бит. Нужно 10 — берите HEVC, AV1 или процессорный x264.

Декодирование — отдельный стек: на машине без аппаратного кодирования аппаратный декод может работать прекрасно. Проверяется своими пробами: CUDA decode, QuickSync decode, AMD/D3D11VA decode и dav1d для AV1.

Регуляторы качества всегда родные для пути: CRF и предустановка SVT-AV1 для процессора, CQ/QP и предустановки NVENC, QuickSync или AMF для железа. Список тонкой настройки читают только x264 и x265, поэтому он и показывается лишь при выборе процессора.

Перед первым запуском на новой машине — СЕРВИС → «Возможности оборудования». Результат ложится в кэш, и профили сверяются с ним. Отсутствие пути — нормальный ответ, а не поломка: значит нет драйвера или самого железа. Кэш привязан к машине: если он чужой или его нет, проверку прогоняют заново. SETTINGS показывает, что прошло проверку, рядом с процессором, видеокартой и её драйвером.

Почему этому можно верить

Точность резки, синхрон звука и пределы FFmpeg здесь не заявлены, а измерены. Свод замеров держится на одном правиле: ни одно утверждение не взято из документации — каждая ячейка таблицы это реальная попытка, каждое число замер. Где измерение оказалось неверным, это тоже записано: отдельный раздел собирает случаи, когда правдоподобный вывод пришлось отменить.

С чего всё началось

Shutter Encoder с версии 19.1 читает дробную частоту как целую: 29,97 становится

  1. Ошибка ×1,001 копится — 1,8 секунды рассинхрона на каждые полчаса, четыре

секунды на час. На 20.2 дефект на месте, обращение #402 открыто.

Здесь счёт идёт точной дробью:

частотадробьзапросправильночерез round(fps)
23,97624000/100150 с11991200
29,9730000/10014 мин71937200
59,9460000/10014 мин1438614400

Величины, за которые идёт разговор: кадр — 33 мс на 29,97, звуковой пакет — 8 мс, сэмпл — 20 микросекунд. Смещение на один кадр монтажёр потом ищет руками.

Проверено на том, что снимают камеры

Не на сгенерированных роликах — на материале с настоящих аппаратов, от Sony до ARRI. Расхождение по кадрам везде ноль:

источникзапроскадроврасхождение
ProRes 25p3 → 91500
HEVC long-GOP 29,9712 → 306000
H.264 all-intra 23,9763 → 91440
29,97 drop-frame5 → 153300
59,94 drop-frame3 → 93600
MPEG-TS, старт 1,44 с2 → 83000
4 канала PCM2 → 81500
Canon HEVC 4:2:2 10 бит3 → 101660
ARRI ProRes 4444 XQ 24,0002 → 81440

Отдельная находка: Alexa Mini, снимающая честные 24,000, объявляет 24/1 — и читать такой файл как 23,976 значит создать ошибку ×1,001, а не устранить её. Пять кадров за четыре минуты, ровно то, за что критикуют чужую нарезку. Частота берётся у файла как есть; ту, что не прочиталась, честнее отклонить, чем заменить догадкой.

Синхрон измерен, а не предположен

Маркер, существующий в обоих потоках в один момент: белый кадр в начале каждой секунды и щелчок 20 мс там же. Отклонение от собственного смещения источника:

контейнеррасхождение
MP40…2 мс
MOV0…5 мс
MKV1…3 мс
MXF9…18 мс

Сдвигает только MXF — его муксер равняет звук по своим единицам монтажа, это меньше половины кадра и объявлено предупреждением. Прежнее предупреждение про MKV точное измерение опровергло, и оно снято, а не оставлено правдоподобной страшилкой.

Семнадцать неточностей FFmpeg — компенсированы

Ни одна не очевидна из документации, каждая стоила отдельного разбора и каждая обойдена в коде. Среди них: -ss до -i сбрасывает отсчёт времени; конец, округлённый «к ближайшему», теряет кадр, стоящий на 29,9966; HEVC с B-пирамидой пишет на 2–4 кадра меньше запрошенного; avg_frame_rate на переменной частоте превращает 12 запрошенных секунд в 16; -n на существующий файл отвечает «уже существует» и кодом возврата 0, из-за чего пустой прогон читается как успех; PCM при копировании в MXF получает 384 лишних сэмпла в начале.

Полный перечень с проявлениями — в замерах, раздел 10. Список проверок показывает, что именно прогоняется перед выпуском.

Принципы

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

Режим назван по тому, что останется. «Оставить», «Вырезать», «Разделить» — список того, что будет в результате, читается однозначно; список исключений — нет.

Что контейнер не удержит — отвергается до запуска, а не в середине. Несовместимое сочетание кодека и контейнера блокируется в форме и проверяется службой ещё раз.

Остановленный прогон не оставляет того, что нельзя открыть. Файл пишется под своим временным именем и получает настоящее только целым; незавершённый файл не притворяется готовым.

Операция не меняет Источник. Результат ложится в Назначение; файлы Источника остаются как были.

Результат кладётся в папку операции, а не в имя файла. input\Day1\clip.mov и input\Day2\clip.mov не сваливаются в одну плоскую папку и не спорят за имя: структура подпапок повторяется в результате.

Что внутри

Лента окна, у каждого раздела — свои режимы:

разделрежимыо чём
АУДИОизвлечь · звук в видео · конвертироватьзвук из видео, звук внутри видео с копией картинки, звуковые файлы; ресемплинг, громкость в LUFS, каналы
КОДИРОВАНИЕархив · монтаж · хранение · доставкаFFV1 и x264 без потерь; ProRes и DNxHR в MOV или MXF; x264, x265, SVT-AV1; просмотр и заливка
УПАКОВКАвидео · аудио · видео и аудио · субтитрыдругой контейнер без перекодирования; поворот камеры, снятой боком; потоки субтитров отдельно
НАРЕЗКАоставить · вырезать · разделитьпокадровая нарезка камерных файлов без потерь; несколько вариантов с одного дубля, разделение до 30 точек; звук без потерь (WAV, FLAC, ALAC) — по сэмплу, сжатый — по своим пакетам без перекодирования или по сэмплу в режиме «Точно»
ЧАСТОТАvarispeed · conformв 23,976 и весь рабочий ряд
ЦВЕТLUTLUT с гаммой перед ним; HDR в SDR
СКАЧАТЬлучшее MP4 · надёжное MP4 · своё видео · для загрузки · своё аудио · субтитрыссылка, плейлист или список ссылок через yt-dlp

СВЕДЕНИЯ говорят, что за файлы в Источнике (ffprobe). СЕРВИС держит проверки и установщики: инвентаризацию, самопроверку, проверку профилей, возможности оборудования, тест матрицы пресетов, установку 7-Zip, FFmpeg, yt-dlp и mpv.

Дальше

отчёты.

или сценария.

Обёртки — 95 готовых задач из Scripts\.


Техническая часть

Запуск

Start.exe в корне программы открывает окно. Ничего не устанавливается: окно, его PowerShell, Python, FFmpeg, yt-dlp, mpv и 7-Zip живут в папке программы.

Нет окружения Python или инструмента — его собирает builder_main.cmd: меню с окружением, проверками и установщиком для каждого инструмента (FFmpeg, yt-dlp с Deno, mpv, 7-Zip). Каждый установщик до скачивания называет файлы, источник и размер.

Папки

папкачто в ней
input\Источник по умолчанию: файлы для работы; input\urls.txt — список ссылок
output\Назначение по умолчанию: каждый результат — в папке своей операции
LUTs\LUT раздела ЦВЕТ (.cube, .3dl, .lut)
logs\, report\журнал каждого прогона и его отчёт
Scripts\95 готовых задач — обёрток консольной команды

Источник обходится рекурсивно, структура подпапок сохраняется в результате. Результат пишется в папку операции и профиля:

output\Remux\remux_mkv_to_mp4_video_audio\Day1\clip.mp4

Другое Назначение просто заменяет output, внутренняя структура остаётся прежней. Скачанное ложится в output\Download.

Значения по умолчанию

чтозначение
качество (CRF/CQ)14
звук384 kbps; для M4A есть профиль 256
ресемплерSoX/libsoxr, полное качество (precision=33)
архив скачиванийвыключен
перезаписьвыключена

Пиксельный формат в режиме МОНТАЖ не выбирается — его задаёт сама цель: ProRes всегда 10 бит 4:2:2, DNxHR HQ — 8 бит, DNxHR HQX — 10 бит. Чтобы поменять разрядность, выбирают другую цель, а не отдельное поле.

Для MXF доступны PCM 16 или 24 бита либо вывод без звука; несовместимые варианты блокируются в форме и проверяются службой. FLAC недоступен для MOV — этот контейнер его не держит, нужен MP4 или MKV.

Отчёты

Каждый прогон пишет журнал в logs\, а batch_report.md и .json — в report\. АУДИО добавляет audio_report.md и .json: исходный поток, параметры входа, режим обработки, громкость, путь результата.

Перед запуском

Каждая медиа-операция проверяет себя до того, как стартует FFmpeg или yt-dlp: Источник существует, Назначение есть или может быть создано, файлы нужного вида найдены, выбранный LUT существует, цель упаковки удержит потоки, кодер есть в этой сборке FFmpeg, аппаратный путь прошёл проверку оборудования. Что не так — говорят строки [PREFLIGHT], и ничего не запускается. Предпроверка не заменяет внимания, но отсекает самые дорогие ошибки до первого кадра.

Что проверить после прогона

Законченный прогон — ещё не принятый результат. Что просит посмотреть каждая работа:

работана что смотреть
архивразмер до большого прогона; хранить контрольные суммы; проверять декодирование с места хранения, а не только с рабочего диска
монтажчастоту кадров, пиксельный формат, порядок полей, формат сэмплов звука и таймкод в той монтажке, которая примет файлы
хранение, доставказначения по умолчанию — отправная точка: попробовать трудное движение, зерно, градиенты, субтитры и пики звука на коротком куске, на том плеере или площадке, для которых файл; аппаратный кодер может выглядеть иначе процессорного
упаковкакаждый файл разбирается, а не судится по расширению; что контейнер не удержит, пропускается с причиной. Поворот пишется в контейнер — матрица отображения, которую читает монтажка, — и ничего не перекодируется: файл 960x540 сохраняет байты, а декодер отдаёт 540x960. MP4, MOV и MKV его хранят, MXF — нет
частотадлительность, метки времени, синхрон, число кадров и каденцию на движении — а не одно целевое число; папку со смешанными частотами лучше разделить
цветкакой LUT выбран и его версию; диапазон, передаточную функцию, первичные цвета, матрицу, клиппинг и нейтральность в цветоуправляемом просмотрщике. Превью 18 % серого показывает направление гаммы, а не доказательство. Путь LUT с пробелами, апострофами, запятыми или скобками программа экранирует для FFmpeg сама
звуквыбранный поток — по языку, раскладке и кодеку, а не по номеру; PCM и FLAC надёжнее в MOV или MKV, чем в MP4; синхрон, длительность и громкость после прогона
скачиваниесписок ссылок до пачки; неудачные ссылки — по одной: доступ, вход, отсутствующий формат и сеть лечатся по-разному

Аппаратные кодеры получают пиксельный формат в своей записи (yuv420p10le становится p010le, QuickSync берёт nv12 вместо yuv420p); чего кодер не умеет — 10 бит H.264 на железе — отклоняется до запуска, а не пишется в другом формате.

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

Что осталось за рамками

Программа не пытается заменить монтажную программу вроде DaVinci Resolve или Premiere, стать универсальным сборщиком команд FFmpeg, угадывать творческие решения, прятать риск перезаписи или постоянно разбирать большие папки ffprobe. Её сильная сторона — безопасные, повторяемые и понятные медиа-процедуры.

WebM пока входной, скачиваемый и перепаковываемый формат, но не отдельная цель массового кодирования. Понадобится доставка под VP9 или AV1 в WebM — её лучше добавить отдельным профилем с внятными параметрами качества, контейнера и звука, а не пристёгивать к существующим.

Версии
3.0.0
Audion_Media_Tools_v3.0.0_Full.zip513 МБ15 октября 2026sha256GitHub ↗
Audion_Media_Tools_v3.0.0.zip92.4 МБ15 октября 2026sha256GitHub ↗
README_EN.dark.pdf157 КБ15 октября 2026GitHub ↗
README_EN.light-sand.pdf157 КБ15 октября 2026GitHub ↗
README_EN.md16.9 КБ15 октября 2026GitHub ↗
README_RU.dark.pdf177 КБ15 октября 2026GitHub ↗
README_RU.light-sand.pdf177 КБ15 октября 2026GitHub ↗
README_RU.md27.0 КБ15 октября 2026GitHub ↗
USER_GUIDE_EN.dark.pdf170 КБ15 октября 2026GitHub ↗
USER_GUIDE_EN.light-sand.pdf170 КБ15 октября 2026GitHub ↗
USER_GUIDE_EN.md11.4 КБ15 октября 2026GitHub ↗
USER_GUIDE_RU.dark.pdf178 КБ15 октября 2026GitHub ↗
USER_GUIDE_RU.light-sand.pdf179 КБ15 октября 2026GitHub ↗
USER_GUIDE_RU.md17.4 КБ15 октября 2026GitHub ↗
Установка

Программа портативная: распакованная папка и есть установленная программа. Реестр не трогается, удаление — удалить папку.

$name = "Audion_Media_Tools_v3.0.0_Full.zip"
Invoke-WebRequest "https://audion.dev/get/media-tools/3.0.0/Audion_Media_Tools_v3.0.0_Full.zip" -OutFile $name
Invoke-WebRequest "https://audion.dev/get/media-tools/3.0.0/Audion_Media_Tools_v3.0.0_Full.zip.sha256" -OutFile "$name.sha256"

$want = (Get-Content "$name.sha256").Split(" ")[0]
$have = (Get-FileHash $name -Algorithm SHA256).Hash.ToLower()
if ($want -ne $have) { throw "сумма не сошлась: загрузка повреждена" }

Expand-Archive $name -DestinationPath ".\media-tools"
Все загрузки · На главную