AudionAudion

Опись прежнего окна (NiceGUI, 2.6.1)

WINDOW_INVENTORY.md

Опись прежнего окна (NiceGUI, 2.6.1)

Что окно на NiceGUI делает само, помимо передачи формы движку. Снято 15.10.2026 с кода эталона E:\TOOLS\Audion Media Tools NiceGUI (system_core\ui_nicegui\app.py 5970 строк, window.py, workbench.py) и с его консольных меню. Каждая строка при переносе получает отметку в последнем столбце: перенесено, заменено (чем) или убрано, потому что.

Параметры, которые окно отдаёт движку, записаны отдельно и числом: tests\former_window_parameters.json (сценарий tests\capture_former_window_parameters.py). Тексты окна - подписи и подсказки - снимаются в карту прежнего окна (раздел 10.3 спека).

Куда: модель - system_core\core\operation_model.py (правила формы, одна копия для окна и консоли); движок - служба или media_cli.cmd; окно - Avalonia; данные - манифест, раскладка, Source\config\i18n.json.

1. Запуск и окно

ЧтоГдеКудаОтметка
Окно - браузерная рамка: window.py поднимает сервер app.py (127.0.0.1:8080), ждёт порт, открывает pywebview; PID сервера в logs\gui_server.pidwindow.pyубрано: окно - один исполняемый файлубрано: окно - один AudionMediaTools.exe, сервера и порта нет
Размер 1600 × 900, наименьший 1280 × 720 (из ui манифеста)window.py load_ui_defaultsзаменено: 1500 × 880 / 1180 × 700, как у Image Toolsзаменено: 1500 × 880, наименьший 1180 × 700; размер помнится в window_settings.json
Значок окна system_core\icons\app.ico, AppUserModelID Audion.Tools.<папка>window.pyокноперенесено: тот же app.ico (ApplicationIcon), AppUserModelID в Program.cs
Сервер отказывается слушать не-loopback адрес без AUDION_ALLOW_REMOTE_GUI=1assert_gui_host_allowedубрано: сервера нетубрано: сервера нет
Второй запуск при занятом порте открывает уже работающее окноmainокно: один экземпляр на папкузаменено: один экземпляр на папку (Core\OneWindow.cs) - второй запуск поднимает первое окно
--smoke: страница строится без браузера, перебор 429 состояний формbuild_ui_once, run_gui_smokeзаменено: самопроверка окна и тест модели по записизаменено: --self-test собранного окна (каждая страница и поле) и тест модели по записи прежнего окна
Пул процессов NiceGUI отключается, если среда запрещает multiprocessingtolerate_missing_process_poolубраноубрано: NiceGUI нет
Выбор файлов и папок - сценариями PowerShell (WinForms) через портативный pwsh, под заданием Windows, по одному диалогу; DPI-осведомлённость в каждом сценарииrun_picker_script, pick_*заменено: диалоги Avaloniaзаменено: диалоги Avalonia, без PowerShell
При выходе закрывается плеер mpv и задание диалоговatexit, on_shutdownокно: закрытие окна закрывает плеерперенесено: закрытие окна закрывает mpv (Player.Shared.Close)

2. Настройки и состояние

ЧтоГдеКудаОтметка
config\gui_settings.yaml: язык, тема, emoji, allow_runtime_switching, advanced_open; source_path и destination_path пишутся всегда пустымиsave_app_settingsзаменено: config\window_settings.jsonзаменено: config\window_settings.json - тема, язык, размер, шрифты, папки, формы
Источник и Назначение при старте - из кэша путей (cached_source_path, cached_output_path), иначе Source и Transcodedstate, _resolve_workspace_pathокно (рабочая зона Image Tools), папки input / outputперенесено: последние папки из window_settings.json, иначе input / output (MainWindow.Io.cs)
Смена темы и языка - запись настроек и перезагрузка страницыset_theme, toggle_languageокно: без перезапусказаменено: тема и язык меняются на лету, без перезапуска
Тем 7 (code_dark по умолчанию, code_graphite, code_light, code_warm, audion_light, audion_dark, asar_dark), токены поверх из config\ui_colors.yamlBUILTIN_THEMES, load_ui_colorsзаменено: четыре темы оболочки, Code Dark по умолчаниюзаменено: четыре темы оболочки, Code Dark по умолчанию; ui_colors.yaml окном не читается
Состояние «Дополнительно» раскрыто или нет - в настройкахsave_advanced_openокноубрано, потому что «Дополнительно» всегда раскрыто под своим разделителем (владелец, 10.10.2026)
Значения полей живут одни на все разделы: поле с тем же id (audio_bitrate, overwrite, input_formats…) переходит из раздела в разделstate["field_values"]решить: в новом окне - своё на раздел или общеерешено владельцем 15.10.2026 («формы раздельные»): своя форма у каждого режима, общие - только кодер и декодер; формы помнятся в window_settings.json
История строки команд config\terminal_commands.json: до 200 команд, закреплённые, последняя, оболочка, папка (своя папка проекта хранится относительной)load_terminal_cache, save_terminal_cacheокнозаменено: история строки команды Image Tools (Core\CommandHistory.cs), оболочка - App\AudionPs.exe
Закреплённые пресеты (pinned_profiles) - идут первыми в списке профиляprofile_optionsокноубрано, потому что владелец против закрепления пресетов (15.10.2026)
Кэш LUT config\lut_cache.json: выбранный, недавние, закреплённыеcore\lut_cache.pyдвижок (describe), окноперенесено: движок core\lut_cache.py (config\gui_lut_cache.json), окно - закрепление и импорт (Views\Form.Lut.cs)

3. Рабочая зона путей

ЧтоГдеКудаОтметка
Строки Источника и Назначения, история до 100 путей, закрепление, выбор папки, «один файл» Источником, открыть папку (файл - выделить в Проводнике), «Список» файлов Источника в журнал с номерамиworkbench.py, workspace_*_handler, show_input_file_listзаменено: рабочая зона Image Tools (MainWindow.Io.cs, PathHistory.cs)заменено: рабочая зона Image Tools (MainWindow.Io.cs, PathHistory.cs), история - config\path_history.json
«Сбросить»: история чистится, закреплённые остаются, оба пути - по умолчаниюreset_workspace_paths_click_handlerImage Toolsперенесено: ResetPaths рабочей зоны
Удалить содержимое Источника / Назначения - операциями движка cleanup_source / cleanup_transcoded с подтверждением и путём в нём; «оба» - сначала Источник, Назначение только после успехаworkspace_delete_*_handlerзаменено: очистка в Корзину (FolderCleaner.cs)заменено: очистка в Корзину (FolderCleaner.cs); операции движка cleanup_* окном не зовутся
Смена Источника сбрасывает «Сведения» о прежнемsave_workspace_pathокноубрано, потому что «Сведения» - прогон в журнал, строки под формой нет: сбрасывать нечего
Во время операции пути не меняются («Другая операция уже выполняется»)обработчики рабочей зоныокноперенесено: рабочая зона заперта, пока идёт прогон (ApplyIoBusy)

4. Разделы и формы

ЧтоГдеКудаОтметка
Дерево разделов: группа с одной операцией открывается сразу её формой; «Назад»; заголовок - путь разделовcompact_single_child_command_path, activate_command_node, command_nav_rowзаменено: ленты разделов и ленты внутризаменено: ленты разделов и режимов (config\window_layout.yaml)
Операция без полей запускается по нажатию сразуactivate_command_nodeокноперенесено: пункт СЕРВИС и СВЕДЕНИЯ запускает сразу
Дочерние операции с теми же полями, что у группы, - кнопками в строке над общей формойcan_inline_child_actionsокно (раскладка данными)заменено: кнопки у поля (window_layout.yaml, buttons) - ФОРМАТЫ у ссылки, DPAPI у cookies
Кнопка «Сведения» (source_info) - только в разделах audio, archive, editing, storage, delivery, remux, fps, gradingSOURCE_INFO_COMMAND_IDSданные раскладкизаменено: меню СВЕДЕНИЯ рабочей зоны - во всех разделах (window_layout.yaml, details)
Поля по блокам: блок = group поля, без него - по таблице ключей (preset, source, codecs, backend, decode, audio, format, options, package, fps, color, encoding, run, иначе parameters)field_section_idданные: блок у каждого поля в манифестеперенесено: блок задан у каждого поля в манифесте; ключевая таблица убрана
Порядок блоков: workflow ставится перед preset, decode - перед backend; блоки mastering и channels - в полшириныgroup_fields_by_section, render_field_gridданные раскладкиперенесено: порядок и ширина блоков - данными раскладки
Блок из одного поля encode_backend, decode_backend или audio_mode рисуется без заголовка поляshould_flatten_single_section_fieldокнозаменено: у блока, где выбор стоит первым, имя поля встаёт на место заголовка блока - один заголовок, не два (Views\Form.cs, TwoColumns)
«Дополнительно»: поля с advanced, priority: advanced/expert/rare или окончанием _model_override, _chunk_tokens… (наследие LLM-проектов)is_advanced_fieldмодель: только advanced и priorityперенесено: модель - только advanced и priority; окончания LLM-проектов убраны
Поле показано, если visible_if выполнено и hidden_if нет; поле, ещё не нарисованное, в условии читается своим умолчаниемfield_is_visible, _condition_actual_valueмодельперенесено: модель (operation_model.py), тест по записи
Условие: равенство без регистра, список - «любое из», not, neq, in, exists, all, any; для списка значений - пересечение_value_matches_conditionмодельперенесено: модель, тест по записи
Вариант выключен по disabled_if или невыполненному enabled_if; скрыт по visible_if / hidden_ifoption_is_disabled, option_is_visibleмодельперенесено: модель, тест по записи
При отрисовке переключатель с выключенным или чужим значением встаёт на первый разрешённый вариант (со связями set_field_value)render_field, радиомодельперенесено: модель - при открытии и каждом изменении, а не при отрисовке
При отрисовке ряд флажков оставляет только разрешённые и в порядке вариантовrender_field, sync_checkboxesмодельперенесено: модель, тест по записи
При отрисовке пресет раздела применяет свои значения, если ещё не применён; профиль-список (youtube_preset) при этом не трогает флажки и спискиrender_field (пресеты, профиль)модельперенесено: модель, тест по записи
Выпадающий список не предлагает выключенный вариант, но текущий оставляетselect_optionsмодельперенесено: модель; выпадающих списков в окне нет - кнопки вариантов
Нажатие пресета: значения пресета пишутся как есть (без связей), потом id пресетаapply_presetмодельперенесено: модель, тест по записи
Связи на клик: контейнер MXF - звук в PCM 24 (кроме PCM 16/24 и «без звука»), MOV - FLAC меняется на PCM 24; MP3 - 384k меняется на 320k; режим remux - восстанавливает цели mp4 / mkaset_field_valueмодельперенесено: модель, тест по записи
Цветовой сценарий ставит гамму: пре-экспозиция 1,15, прегамма 0,85 (или из профиля сценария), иначе пустоcolor_profile_gamma, set_script_preset_valueмодельперенесено: модель, тест по записи
Число целого шага приходит целым (2.0 → 2, запятая как точка)normalize_field_valueмодельперенесено: модель
▲▼ числа: шаг поля, зажим в min/maxadjusted_number_valueокнозаменено: число шагает клавишами ↑↓ с шагом поля, зажим в min / max (Views\Form.cs)
Отказ до запуска: в ряду флажков меньше min_selected - «Выберите хотя бы один пункт: …»validate_pending_fieldsмодель (код выхода 2)перенесено: модель - отказ в строке состояния, в консоли код выхода 2
Опасная операция (kind: dangerous) - подтверждение с названием и предупреждениемstart_operationокно; из консоли опасное не запускается, как у Image Toolsперенесено: вопрос окна (MayRun); консоль опасное не запускает
Тон варианта (copy / uncompressed / lossless / lossy) вычисляется по словам значения и подписи для полей форматов и кодеков и перекрывает tone манифестаdetected_format_tone, FORMAT_TONE_FIELDS, *_FORMAT_TOKENSмодель (describe отдаёт тон)перенесено: модель, describe отдаёт тон
Варианты из функции (options_source, сейчас - файлы нарезки), кэш 45 с, ошибка - вариантом с текстом ошибкиload_dynamic_optionsдвижокперенесено: движок, форма-сервер
LUT: список - закреплённые, выбранный, недавние, найденные в LUTs; выбор пишет кэш; импорт файлов или папки копирует в LUTs (папку - подпапкой)lut_options, _import_lutsдвижок + окноперенесено: движок (lut_cache.py) + окно (Views\Form.Lut.cs)
Образец 18 % серого: куда гамма до LUT переносит серый; для HDR→SDR - отметка tonemapcolor_gamma_preview_state, render_color_gamma_previewокно, расчёт - модельперенесено: окно (Views\Form.Colour.cs), расчёт - модель (gamma_preview)
Таблицы совместимости remux в окне - мёртвые: поля «исходный формат» нет, исходник определяет и проверяет движок своими таблицамиVIDEO_REMUX_COMPATIBILITY, ensure_remux_target_for_sourceубрано, потому что не вызываетсяубрано, потому что не вызывались
Подсказка под целями remux: «Source определяется автоматически; несовместимые файлы будут пропущены с записью в лог» - в кодеrender_fieldданныеперенесено: подсказка поля цели в манифесте - несовместимый файл пропускается с причиной

5. Нарезка и плеер

ЧтоГдеКудаОтметка
Файл нарезки - бейдж с именем (середина длинного имени вырезана, полное - в подсказке), счётчик n/N, стрелки по кругу; одна запись - стрелки выключеныrender_trim_file_field, trim_short_nameокноперенесено: окно (Views\Form.Trim.cs, TakeBar)
Смена файла стирает IN, OUT, строки и точкиstepмодельперенесено: модель («take»)
Звук или видео - по расширению; от этого зависят поляtrim_media_kind_ofмодельперенесено: модель
Таблица ffprobe файла по кнопкеshow_trim_probeокно, данные - движокперенесено: окно, данные - движок (probe)
Строки вариантов: строка 1 - trim_start / trim_end, дальше trim_rows; длительность куска: для «оставить» с одним IN - до конца файла, «вырезать» - только с обеими точкамиrender_trim_variant_rows, trim_piece_secondsмодель + окноперенесено: модель + окно (TrimRows)
«+» горит, когда последняя строка заполнена («оставить» - хотя бы одна точка, «вырезать» - обе), до предела TRIM_MAX_VARIANTS / SPLIT_MAX_POINTS; «+» очищает петлю A-B плеераtrim_can_add, trim_add_clickокноперенесено: окно, пределы 20 вариантов / 30 точек
Разделение: точки только вперёд; точка позади - отказ с причинойtrim_split_take, mpv_apply_split_pointмодельперенесено: модель + окно (отказ с причиной)
▲▼ таймкода: шаг части, где стоит курсор (часы, минуты, секунды, кадр файла или миллисекунда для звука), зажатая кнопка повторяет через 420 мс, потом каждые 110 мс с растущим шагомTRIM_SPINNER_JSокноперенесено: окно (TimeBox, 420 / 110 мс); набор цифр сам ставит разделители
Плеер: «Открыть», «A-B», IN, OUT, «A» (точка разделения), «Точка», «Закрыть»; для разделения - свои кнопкиrender_player_transport, mpv_action_handlerокно (mpv по именованному каналу)перенесено: окно говорит с mpv по именованному каналу (Core\Player.cs), без Python
Точки берутся только если плеер показывает выбранный файл (сверка path); иначе - какой файл он показываетmpv_shows_chosen_fileокноперенесено: окно, сверка path
«Отметить здесь» ставит и точку в поле, и границу петли A-B плеера (кусок крутится)mpv_mark_hereокноперенесено: окно, петля A-B плеера

6. Запуск, журнал, строка команд

ЧтоГдеКудаОтметка
Одна операция за раз; статус «Выполняется: …», «Готово: … [код] N.Nс»start_operationокноперенесено: окно
Строка состояния: точка и полоса по состоянию (ожидание, идёт, готово, ошибка), часы прогона мм:сс, процент; обновление раз в 0,5 с, только изменившеесяbuild_ui refreshзаменено: строка состояния Image Toolsзаменено: строка состояния Image Tools
Кнопка отмены в шапке видна во время работы; ставит cancelbuild_uiзаменено: СТОП (stop.flag, задание Windows)заменено: СТОП (stop.flag, задание Windows); недописанный файл FFmpeg не остаётся (раздел 11)
После операции: путь последнего отчёта, «Сведения» об источнике (строка под формой и в подвале журнала, с пометкой «устарело» при смене Источника), обновление бейджа железа после hardware_capabilitiesstart_operation, probe_status_textокнозаменено: путь отчёта - строкой журнала; «Сведения» - прогоном в журнал; бейджи компонентов обновляются после установки, кодеры - в SETTINGS
«Предпросмотр команды» - та же операция с dry_run и youtube_dry_runpreview_operation_from_pendingmedia_cli.cmd run --dry-run, кнопка окнаперенесено: кнопка КОМАНДА перед ЗАПУСКОМ - у операций, которые умеют сухой прогон; консоль --dry-run прочим отказывает
Журнал: до 1500 строк, цвета ANSI → HTML, дописывание без перерисовки, прокрутка вниз - только если пользователь внизу и ничего не выделилadd_log, audionTerminalAppendзаменено: журнал Image Toolsзаменено: журнал Image Tools, цвета ANSI
Журнал в большом окне, очистка видимого, кнопки «Логи», «Отчёты» (встроенный список), «Конфиг»build_ui, reports_viewокноперенесено: журнал во всю ширину, очистка, кнопки logs, report, config
Строка команд: оболочка PowerShell / CMD, история и закреплённые, папка, «Папка» / «Файл» (файл дописывается аргументом в кавычках, папка становится рабочей), Ctrl+Enter; запуск службой sample_service:terminal_commandterminal_command_bar, start_terminal_commandзаменено: строка команды на App\AudionPs.exeзаменено: строка команды на App\AudionPs.exe
Разделитель журнала тянется, ширина в localStorage (по умолчанию 640, левая часть не уже 520, правая 360)JS в build_uiокноперенесено: разделитель тянется (GridSplitter), ширина помнится в window_settings.json (JournalWidth); журнал во всю ширину - кнопкой

7. Диагностика и железо

ЧтоГдеКудаОтметка
Бейдж железа в разделе «Диагностика»: процессор и видеоконтроллеры (CIM через powershell.exe), NVIDIA - nvidia-smi (имя, драйвер), версия FFmpeg, итог проверки кодеров из config\hardware_capabilities_cache.json; кэш 5 минут, кнопка обновитьhardware_badge_dataзаменено: бейдж системы в SETTINGS, данные - движокзаменено: бейджи компонентов в заголовке и карта системы в SETTINGS (движок components), кодеры - из кэша проверки
Совет по драйверу NVIDIA: от 570 - «NVENC + свежий BtbN 8.x», от 471.41 - «BtbN 7.1.x», ниже - обновить; для AMD - AMF, Intel - QSV после проверки; RTX 50xx называется отдельноhardware_badge_dataдвижок (components), SETTINGSзаменено: выбор сборки FFmpeg по драйверу - в установщике (план скачивания называет файл и причину) и в подсказке SETTINGS

8. Тексты в коде

Полный список - в карте прежнего окна. Здесь - где они живут.

ЧтоГдеКудаОтметка
34 подсказки полей, которых нет в манифесте; input_formats подсказки не получаетFIELD_TOOLTIP_FALLBACKS, TOOLTIP_EXCLUDED_FIELD_IDSданные: манифестперенесено: в манифест
Подсказка поля - по цепочке tooltip → hint → description → запасная из кодаfield_tooltipмодельперенесено: модель
Подсказки кнопок журнала и строки команд, кнопок папок (с путём)audion_terminal_action_tooltip, audion_folder_button_tooltipданные: i18n.jsonперенесено: i18n.json
Подписи окна RU / ENLABELSданные: i18n.jsonперенесено: i18n.json, 0 без пары (check_i18n.py)
Подтверждения, образец серого, бейдж железа, подсказка remux - фразы в кодепо местуданныеперенесено: данные (i18n.json, манифест)
Задержка подсказки 1500 мс, скрытие 100 мсAUDION_CANONICAL_TOOLTIP_*окно (как у Image Tools)перенесено: как у Image Tools (App.axaml)

9. Мёртвое и наследие

ЧтоГдеКудаОтметка
system_core\ui_nicegui\i18n.py (84 строки) - никем не импортируетсяубрано, потому что не используетсяубрано: в окно не переносится; уходит с папкой ui_nicegui (этап 7)
Таблицы совместимости remux окна (раздел 4)app.py 944-998, 2931-2987убраноубрано
Значки-эмодзи в заголовках (emoji: false)emубраноубрано
_startup_workspace_path и _workspace_setting_for_disk возвращают постоянное, их параметры не читаютсяapp.py 246-262убраноубрано
Окончания полей LLM-проектов в «Дополнительно»ADVANCED_FIELD_SUFFIXESубраноубрано

10. Консольные меню и обёртки

ЧтоГдеКудаОтметка
Меню проекта на FZF с запасным числовым: YouTube, FPS 23.976, FPS SPEED SELECTOR, звук, LUT, ProRes / DNxHR, remux, x264 / HEVC, сборщикlauncher_project.cmd, cli\launcher-*.cmdубрано после описи: те же операции - окно и media_cli.cmdубрано на этапе 7: те же операции - окно и media_cli.cmd
FPS SPEED SELECTOR: режим (conform / varispeed), исходная частота (25…179,82 → 23,976), выход, PCM и передискретизация - переменными среды для обёрткиcli\launcher-select-fps-speed.cmdраздел ЧАСТОТА окна; переменные - в карте обёртокперенесено: раздел ЧАСТОТА окна; переменные - в config\wrappers.yaml
Меню инструментов: проверка окружения, лицензии (сбор, чистка, дубли), архив выпуска, открыть папкиlauncher_tools.cmdрешить: сборщик и Build-стекрешено: проверки - СЕРВИС окна, лицензии и архив выпуска - Build-стек; меню уходит на этапе 7
95 обёрток Scripts\*.cmd - профиль того же имени в config\script_profiles.yaml; исполняет свой Scripts\Common\script_runner.py (2030 строк): общие с движком только контракты core\*_contract.py и _fps_output_args, команду FFmpeg он строит самScripts\остаются; решить: свести их к media_cli.cmd runрешено владельцем 15.10.2026: обёртки остаются и зовут media_cli.cmd wrapper; script_runner.py в Корзине, 95 из 95 сверены
Ручки обёрток - около 45 переменных среды AUDION_* (источник, назначение, кодеки, бэкенд, CRF / CQ, звук, LUT, гамма, нарезка, частота…)script_runner.py, first_envкарта обёртокперенесено: config\wrappers.yaml
Маркер проекта у cleanup_project.cmd - system_core\ui_nicegui\app.py, файл прежнего окнаcleanup_project.cmdна этапе чистки - маркер system_core\cli.pyна этапе 7

11. Найдено прогонами консольной команды

ЧтоГдеКудаОтметка
СТОП посреди кодирования оставляет в Назначении недописанный файл (long.mp4, 2,6 МБ из 30 секунд); прежнее окно вело себя так же. Нарезка свой кусок убирает (аудит 2.6.0)encode_targets, run_processдвижок: писать во временное имя и ставить на место только целое, как Image Tools (.writing)исправлено 15.10: FFmpeg пишет имя.writing.ext, имя - только целому; СТОП и сбой не оставляют ничего (tests\test_writing_output.py)
При остановке в журнал идёт трассировка Python RuntimeError: Operation cancelled by user.execute_operationдвижок: одна строка «остановлено»исправлено 15.10: одна строка [STOPPED], без трассировки

12. Найдено на материале владельца (15.10.2026, input)

ЧтоГдеКудаОтметка
ProRes LT 4096×2160 (Ellie Goulding … Fragment.mov): r_frame_rate 24000/1001, avg_frame_rate 7188000/299299 = 24,016 (599 кадров на 24,94 с). Расхождение 0,17 % - ниже порога «плавающей» частоты (1 %), и нарезка берёт за сетку кадров 24,016: к 20-й секунде сетка уходит почти на кадр; «Сведения» пишут 24.016pmedia_service.py 4705-4711, 4077, 4993, 6210 (rate_source), 2191 (_rate_label(avg))движок: при постоянной частоте - r_frame_rate, точная дробь; среднее - только если номинальной нет. Тест на этом файлеисправлено 15.10: trim_contract.stream_rate во всех местах; «Частота» на этом файле - 23,976 → 23,976, скорость не меняется, итог 24000/1001 ровно
ARRIRAW в MXF (ARRI_Helen_John_ALEXA_35_ARRIRAW.mxf, 10 ГБ): FFmpeg видит видеопоток без кодека и размеров. Нарезка отказывает внятно (TRIM_UNREADABLE_VIDEO), «Сведения» показывают ?_video_stream_is_unreadable, probe_sourceдвижок: в «Сведениях» - та же внятная фраза: ARRIRAW FFmpeg не декодируетисправлено 15.10: «camera RAW, FFmpeg has no decoder» и фраза под таблицей
Файл, который ещё копируется, даёт в «Сведениях» ERROR: … Permission denied и попадает в итоговую строку как видео всей папкиprobe_sourceдвижок: «файл занят» отдельной строкой, итог - по прочитаннымисправлено 15.10: строка «busy», итог - по прочитанным
«Сведения» на стеке образцов: 25i (field_order=tt) показан 25p; плавающая частота - 28.875p без пометки VFR; у звукового файла в колонке видео ? вместо -; итог папки берётся с первого файла (24p, A: - у ARRIRAW)probe_source, _rate_labelдвижок: 25i, VFR 30 (≈28,875), - у звука; итог - по большинствуисправлено 15.10: 25i, VFR 30 (avg 28.875), - у звука, итог по большинству (tests\test_probe_source.py)
All projects