Інтерфейс командного рядка
Інтегруйте OpenShot у свій робочий процес командного рядка. Імпортуйте відеоматеріали, обрізайте та впорядковуйте кліпи, застосовуйте ефекти, анімуйте властивості за допомогою ключових кадрів і експортуйте відео з терміналу. Використовуйте кілька команд для автоматизації повторюваних редагувань, написання скрипта для повторюваного проєкту або дозвольте AI-агенту допомогти зібрати та вдосконалити відео.
Командний рядок працює з тими ж проєктами, що й редактор. Ви можете керувати відкритим редактором і переглядати зміни в процесі роботи або працювати у безголовій сесії без відкриття вікна. Сесія зберігає ваш проєкт відкритим між командами, включно з редагуваннями, історією скасувань і завданнями експорту. Збережіть його як проєкт .osp, коли захочете продовжити редагування пізніше.
Початок роботи
Використовуйте встановлений виконуваний файл OpenShot з параметром --cli. Почніть з intro для короткого посібника з сесій, редагування, анімації та збереження, або help для огляду команд. Ці команди не потребують активної сесії. Наведені нижче приклади вимагають збірки OpenShot з підтримкою редагування через командний рядок.
Linux AppImage
З каталогу, що містить завантажений AppImage:
./OpenShot.AppImage --cli intro
./OpenShot.AppImage --cli help
Замініть OpenShot.AppImage на ім’я вашого завантаженого файлу. Якщо AppImageLauncher показує діалоги інтеграції з робочим столом, встановіть APPIMAGELAUNCHER_DISABLE=1 перед запуском команди:
APPIMAGELAUNCHER_DISABLE=1 ./OpenShot.AppImage --cli intro
Для скриптів або повторюваних команд встановіть це один раз у вашій поточній оболонці:
export APPIMAGELAUNCHER_DISABLE=1
./OpenShot.AppImage --cli session start
Змінну потрібно встановити перед запуском AppImage: AppImageLauncher може перехопити її до того, як OpenShot отримає --cli. Відносні шляхи до медіа та файли @batch.json розв’язуються відносно вашого робочого каталогу. Тримайте файл AppImage доступним, поки працюють сесії або експорти.
Linux Snap
Для OpenShot Snap використовуйте:
snap run openshot-qt --cli intro
snap run openshot-qt --cli help
snap run openshot-qt --cli session start
Дозволи файлів Snap також застосовуються до редагування через командний рядок. Зберігайте медіа, проєкти та експорти у місцях, доступних для Snap, наприклад у вашій домашній папці. Щоб дозволити доступ до зовнішніх дисків, підключіть дозвіл removable-media:
sudo snap connect openshot-qt:removable-media
Windows
Важливо
Використовуйте openshot-qt-cmd.exe для редагування через командний рядок у Windows. Цей консольний виконуваний файл відображає результати команд, допомогу та помилки у вашому терміналі. Десктопний виконуваний файл openshot-qt.exe не показує стандартний вивід у інтерактивному терміналі, залишаючи команди без видимого зворотного зв’язку та ускладнюючи використання CLI.
У PowerShell, з каталогу встановлення OpenShot:
& .\openshot-qt-cmd.exe --cli intro
& .\openshot-qt-cmd.exe --cli help
& .\openshot-qt-cmd.exe --cli session start
Якщо ви в іншому каталозі, використовуйте повний шлях до openshot-qt-cmd.exe. Залишайте --cli після імені виконуваного файлу.
macOS
Для встановлення в Applications:
"/Applications/OpenShot Video Editor.app/Contents/MacOS/openshot-qt" --cli intro
"/Applications/OpenShot Video Editor.app/Contents/MacOS/openshot-qt" --cli help
Пошук команд
У цьому посібнику openshot-cli є скороченням для команди вашої інсталяції, наприклад snap run openshot-qt --cli або ./OpenShot.AppImage --cli. Деякі інсталяції також надають команду openshot-cli безпосередньо. При запуску з вихідного коду використовуйте python3 src/launch.py --cli у Python-середовищі OpenShot.
Прості --cli, --cli help та --cli --help показують однаковий огляд. Допомога стає більш конкретною під час навігації командами:
openshot-cli clip help
openshot-cli clip keyframe help
openshot-cli clip keyframe set help
openshot-cli edit help
openshot-cli text help
openshot-cli effects list
openshot-cli effects audiovisualization help
openshot-cli effects audiovisualization help --property background
Групова допомога пояснює робочі процеси з прикладами; допомога по операціях описує аргументи та поведінку. --help еквівалентно додаванню help наприкінці. Всі команди допомоги працюють без сесії редагування.
effects list показує доступні ефекти з короткими описами. Допомога по ефектах пояснює їхні властивості, значення за замовчуванням, варіанти та діапазони. effects instances перелічує ефекти, вже прикріплені до кліпів, з ID батьківських кліпів. Імена класів, відображувані імена та псевдоніми з підкресленням ідентифікують один і той же ефект.
Робота зі скриптами та AI-агентами
AI-агенти кодування, такі як Codex та Claude Code, можуть використовувати CLI для перегляду та редагування проєктів OpenShot через команди терміналу. Надайте агенту шлях до виконуваного файлу OpenShot, медіа або проєкту для роботи, а також бажаний результат: тривалість, розміри, стиль анімації та місце збереження. Попросіть його прочитати --cli intro перед початком. Ті ж команди працюють, коли ви вводите їх самостійно або запускаєте зі скрипта.
Почніть з intro, потім використовуйте допомогу по конкретних командах за потреби. Корисний робочий процес: вибрати сесію, переглянути проєкт, внести невеликі зміни, переглянути результат і зберегти. Команди повертають структурований JSON, щоб скрипти та агенти могли безпосередньо використовувати ID об’єктів і результати замість інтерпретації виводу на екрані.
Перевіряйте перед редагуванням. Використовуйте повернені ID та інформацію про властивості замість здогадок про імена, номери доріжок чи час. Явно вибирайте сесію, коли відкрито більше одного проєкту.
Групуйте повторювані редагування. Використовуйте
edit applyдля послідовності змін абоedit bulkдля застосування шаблону до вибраних кліпів. Перевіряйте за допомогою--dry-runперед застосуванням пакету.Перевірте анімацію. Виберіть систему координат, почніть з кількох ключових кадрів і використовуйте пресети згладжування для знайомого руху.
keyframe previewвибірково відображає криву, щоб ви могли помітити паузи або стрибки перед експортом. Також перегляньте відтворений рух; лише контактний лист не може показати, як відчувається анімація.Зберігайте та відстежуйте експорт. Явно збережіть проект і перевірте статус завдання експорту перед тим, як вважати вихідний файл завершеним. Якщо запит вичерпав час очікування, перевірте його статус перед повторним редагуванням.
Нижченаведені розділи пояснюють ці робочі процеси та їхні часові конвенції.
Сесії та вихідні файли
Запуск або пошук сесії
Запустіть одну безголову сесію (без вікна редактора):
openshot-cli session start
Щоб відкрити існуючий проект при запуску, додайте --project "/path/project.osp". Успішна відповідь у форматі JSON містить result.session_id. Скопіюйте це значення. Якщо OpenShot вже запущено або ви забули ID, знайдіть доступні сесії за допомогою:
openshot-cli session list
Виберіть сесію для проекту, який ви плануєте редагувати. Не потрібно запускати нову сесію для кожної команди.
Вибір сесії
Порада
Встановіть OPENSHOT_SESSION один раз, а потім виконуйте команди як зазвичай. Ваш термінал запам’ятовує вибрану сесію, тому не потрібно передавати --session з кожною командою. Використовуйте наведені нижче приклади для PowerShell або Bash.
Замініть SESSION_ID нижче на session_id, який повертається командами session start або session list.
Windows PowerShell:
$env:OPENSHOT_SESSION = "SESSION_ID"
& .\openshot-qt-cmd.exe --cli timeline view
& .\openshot-qt-cmd.exe --cli export start "C:\path\test.mp4" --wait
Linux Bash:
export OPENSHOT_SESSION="SESSION_ID"
./OpenShot.AppImage --cli timeline view
./OpenShot.AppImage --cli export start "/path/test.mp4" --wait
На macOS використовуйте той самий синтаксис export. Для команд macOS або Snap замініть виконуваний файл на той, що встановлений у вашій системі, згідно з розділом «Початок роботи». Вибір діє для цього терміналу та команд, запущених з нього. Встановіть його знову в новому терміналі або оновіть при переході до іншої сесії.
Наступні приклади редагування та експорту припускають, що OPENSHOT_SESSION встановлено. Наступний підрозділ показує, як автоматично отримати ID для скриптів.
Щоб націлитися на іншу сесію лише для однієї команди, використовуйте --session. Це переважує OPENSHOT_SESSION без зміни вибору вашого терміналу:
openshot-cli --session OTHER_SESSION_ID project get
Для упакованого виконуваного файлу розмістіть це переваження після --cli і перед групою команд: --cli --session OTHER_SESSION_ID project get.
Автоматичний вибір працює лише коли існує рівно одна доступна сесія. Якщо ви бачите session_required, виконайте session list і явно виберіть потрібну сесію. Якщо її більше немає у списку, запустіть її знову і використайте новий ID. Допомога, intro і виявлення сесій не потребують вибраної сесії.
Автоматичне отримання ID сесії
Скрипти можуть безпосередньо читати result.session_id з JSON, який повертає session start, і встановлювати OPENSHOT_SESSION для наступних команд. Не потрібно копіювати ID вручну або читати файл журналу. Переконайтеся, що запуск пройшов успішно, перш ніж використовувати повернений ID.
Windows PowerShell (встановіть шлях до виконуваного файлу вашої установки):
$openshot = "C:\Program Files\OpenShot Video Editor\openshot-qt-cmd.exe"
$reply = & $openshot --cli session start
if ($LASTEXITCODE -ne 0) { throw "OpenShot session startup failed" }
$session = $reply | ConvertFrom-Json
if (-not $session.ok -or -not $session.result.session_id) {
throw "OpenShot did not return a session ID"
}
$env:OPENSHOT_SESSION = $session.result.session_id
& $openshot --cli timeline view
Linux Bash (потрібен jq для читання JSON):
openshot="/full/path/to/OpenShot.AppImage"
export APPIMAGELAUNCHER_DISABLE=1
if reply=$("$openshot" --cli session start) &&
session_id=$(printf '%s' "$reply" | jq -er 'select(.ok == true) | .result.session_id | strings | select(length > 0)'); then
export OPENSHOT_SESSION="$session_id"
"$openshot" --cli timeline view
else
echo "OpenShot session startup failed" >&2
fi
Змінна середовища вибирає сесію для команд, запущених з цього терміналу; вона не змінює системні налаштування. Запуск сесії не встановлює змінну автоматично. Після зупинки сесії очистіть вибір за допомогою Remove-Item Env:OPENSHOT_SESSION у PowerShell або unset OPENSHOT_SESSION у Bash.
Показ і зупинка сесії
Щоб показати вибрану сесію в редакторі:
openshot-cli session show
На робочому столі команда session show створює редактор у тому ж процесі та зберігає живий проект, ID, історію, завдання експорту та з’єднання. Повторні виклики піднімають існуюче вікно. session start --show відкриває його негайно. Сесії, запущені без дисплея або з QT_QPA_PLATFORM=offscreen/minimal, не можуть пізніше показати вікно робочого столу. Для таких сесій збережіть і відкрийте проект у новій сесії робочого столу. Після показу закрийте сесію через вікно редактора.
Глобальні опції (--session, --timeout) розміщуються перед командою. session serve залишається на передньому плані для супервізорів; session start повертається після реєстрації фонового хоста. session stop відмовляється від несохранених змін і активних експортів. Використовуйте --discard лише для навмисного відкидання несохранених редагувань.
Вивід команди
Результати — це JSON у stdout, за винятком стандартного текстового перегляду таймлайну. Помилки — це JSON у stderr з кодом виходу 1; помилки парсера аргументів мають код виходу 2. Мутації повертають компактні підсумки за допомогою команди inspect. get повертає JSON рідного об’єкта. Відповіді проекту містять ревізію; відповіді каталогу ефектів не потребують сесії. Логи безголових сесій зберігаються поруч із їхніми записами в реєстрі. OPENSHOT_SESSION_DIR замінює стандартний каталог ~/.openshot_qt/sessions.
Сесії приймають команди локально на вашому комп’ютері. Зберігайте реєстр сесій приватним, оскільки він містить облікові дані для доступу до ваших сесій редагування. Експортування працює зі знімком, тому ви можете продовжувати редагування під час виконання завдання.
Відкриття та збереження проєктів
Проєкт OpenShot (.osp) зберігає вашу редаговану часову шкалу. Експорт створює готове відео; збереження проєкту дозволяє пізніше повернутися до його кліпів, ефектів і ключових кадрів. Зберігайте проєкт окремо, навіть якщо ви також експортуєте відео.
Відкриття проєкту
Почніть сесію з існуючим проєктом:
openshot-cli session start --project "/home/me/Videos/My Project.osp"
Додайте --show, щоб також відкрити вікно редактора. Щоб використовувати вже запущений редактор, знайдіть його за допомогою session list. Встановіть OPENSHOT_SESSION у повернений ідентифікатор сесії, а потім відкрийте або перегляньте проєкт:
openshot-cli project open "/home/me/Videos/My Project.osp"
openshot-cli project get
Замініть приклад шляху на свій власний і візьміть у лапки шляхи, що містять пробіли. project open замінює поточний проєкт вибраної сесії. Він відмовляється відкидати незбережені зміни, якщо ви явно не додасте --discard; спочатку збережіть ці зміни, якщо хочете їх зберегти. Відкриття через CLI не показує інтерактивні діалоги про відсутні медіафайли, тому тримайте джерела медіа проєкту доступними.
Для нового порожнього проєкту використовуйте session start без --project, потім імпортуйте медіа та додавайте кліпи, як описано в розділі Редагування.
Збереження проєкту або копії
Збережіть у новий файл або створіть окрему версію перед внесенням додаткових змін:
openshot-cli project save "/home/me/Videos/My Project v2.osp"
Щоб оновити існуючий файл, явно дозвольте заміну:
openshot-cli project save "/home/me/Videos/My Project v2.osp" --overwrite
Завжди вказуйте шлях призначення. Збереження .osp не пакує всі ваші вихідні матеріали у цей файл; тримайте посилання на медіа доступними при переміщенні або повторному відкритті проєкту.
Експорт відео
Автоматизуйте рендеринг і експорт за допомогою скриптів або AI-агентів, використовуючи налаштування проєкту або вибираючи різний профіль виводу для кожного рендеру. Завдання експорту можуть виконуватися у фоновому режимі або чекати завершення перед продовженням вашого скрипту. Щоб відрендерити MP4 з роздільною здатністю та частотою кадрів проєкту:
openshot-cli export start "/home/me/Videos/video.mp4" --wait
За замовчуванням OpenShot використовує відео H.264 та аудіо AAC. Замініть приклад шляху на ваш шлях призначення, використовуючи існуючу папку та нове ім’я файлу. Існуючі вихідні файли ніколи не перезаписуються. Експорт не зберігає ваш редагований проєкт .osp; використовуйте project save окремо, щоб зберегти вашу роботу редагування.
Опція --wait утримує команду активною, доки експорт не завершиться або не повідомить про помилку. Перегляньте готове відео перед його поширенням.
Перевірка прогресу експорту
Не додавайте --wait, щоб почати експорт у фоновому режимі. Відповідь містить ідентифікатор завдання, який ви можете використовувати для перевірки прогресу:
openshot-cli export start "/home/me/Videos/video.mp4"
openshot-cli export status JOB_ID
openshot-cli export status JOB_ID --wait
openshot-cli export list
Замініть JOB_ID на повернений ідентифікатор. Якщо час очікування вичерпується, експорт продовжується; перевіряйте той самий завдання замість початку нового експорту. Щоб зупинити завдання, використовуйте export cancel JOB_ID. Кожне завдання фіксує часову шкалу на початку, тому пізніші зміни не впливають на вже запущений експорт.
Час очікування за замовчуванням становить 600 секунд; змініть його за допомогою --wait-timeout. Це відокремлено від глобального --timeout для кожного запиту. Помилки експорту, скасування та тайм-аути очікування завершуються зі статусом 1 і містять деталі завдання.
Експорт у кількох профілях
Експортуйте одну й ту ж часову шкалу з різною роздільною здатністю або співвідношенням сторін, вибираючи профіль експорту для кожного виходу. Профіль експорту застосовується лише до цього завдання; він не змінює профіль редагування проєкту. Профіль задає розміри, частоту кадрів і співвідношення сторін; пресет експорту вибирає налаштування кодування, такі як MP4/H.264.
Знайдіть доступні профілі та перегляньте їхні налаштування:
openshot-cli profile list --search 720
openshot-cli profile list --search 1080
openshot-cli profile get builtin:01280x0720p0030_16-09
Наприклад, експортуйте ландшафтні версії у 720p та 1080p, а потім квадратну версію 1080 на 1080. Усі ці профілі використовують 30 кадрів на секунду:
openshot-cli export start "/home/me/Videos/video-720p.mp4" --profile builtin:01280x0720p0030_16-09 --wait
openshot-cli export start "/home/me/Videos/video-1080p.mp4" --profile builtin:01920x1080p0030_16-09 --wait
openshot-cli export start "/home/me/Videos/video-square.mp4" --profile builtin:01080x1080p0030_01-01 --wait
Використовуйте різні імена файлів для кожної версії. Залишайте зміни незмінними між завданнями, якщо хочете отримати відповідні версії. Зміна співвідношення сторін може змінити кадрування: перегляньте кожен вихід, особливо заголовки та анімовані об’єкти. Для окремо складеної квадратної або портретної версії збережіть копію проєкту, змініть його профіль і відрегулюйте кліпи перед експортом. Дивіться розділи Профілі та налаштування експорту нижче для користувацьких профілів і параметрів кодування.
Пакетний експорт кількох проєктів
Повторно використовуйте одну безголову сесію для послідовного рендерингу кількох збережених проєктів. Відкрийте проєкт, експортуйте його з --wait, потім відкрийте наступний проєкт. Наведені нижче приклади використовують роздільну здатність і частоту кадрів кожного проєкту та створюють MP4-файли поруч із файлами .osp. Додайте --profile PROFILE_ID до команди експорту, щоб використовувати один профіль виводу для кожного проєкту.
Спочатку успішно виконайте наведений вище приклад автоматичного ідентифікатора сесії в тому ж терміналі. Він визначає openshot і вибирає нову сесію. Замініть шляхи проектів нижче на свої власні. Використовуйте унікальні імена вихідних файлів, які ще не існують; приклади перевіряють усі місця призначення перед початком пакету.
Windows PowerShell:
$projects = @(
"C:\VideoProjects\First.osp",
"C:\VideoProjects\Second.osp"
)
foreach ($project in $projects) {
if (-not (Test-Path -LiteralPath $project -PathType Leaf)) {
throw "Project not found: $project"
}
$output = [System.IO.Path]::ChangeExtension($project, ".mp4")
if (Test-Path -LiteralPath $output) { throw "Output already exists: $output" }
}
foreach ($project in $projects) {
$output = [System.IO.Path]::ChangeExtension($project, ".mp4")
& $openshot --cli project open $project
if ($LASTEXITCODE -ne 0) { throw "Could not open: $project" }
& $openshot --cli export start $output --wait --wait-timeout 86400
if ($LASTEXITCODE -ne 0) { throw "Export needs attention: $output" }
}
& $openshot --cli session stop
if ($LASTEXITCODE -ne 0) { throw "Could not stop the session" }
Remove-Item Env:OPENSHOT_SESSION
Linux Bash (дужки обмежують обробку помилок локально для пакету):
(
set -e
: "${OPENSHOT_SESSION:?Run the session startup example first}"
projects=(
"/home/me/VideoProjects/First.osp"
"/home/me/VideoProjects/Second.osp"
)
for project in "${projects[@]}"; do
test -f "$project" || { echo "Project not found: $project" >&2; exit 1; }
output="${project%.osp}.mp4"
test ! -e "$output" || { echo "Output already exists: $output" >&2; exit 1; }
done
for project in "${projects[@]}"; do
"$openshot" --cli project open "$project"
"$openshot" --cli export start "${project%.osp}.mp4" --wait --wait-timeout 86400
done
"$openshot" --cli session stop
) && unset OPENSHOT_SESSION
Обидва сценарії зупиняють пакет при помилці команди і залишають сесію доступною для перевірки. Ліміт очікування тут — 24 години на експорт. Тайм-аут очікування залишає рендер активним: використовуйте export list та export status JOB_ID --wait перед повторною спробою. Завершені відео залишаються на диску; видаліть завершені проекти з пакету перед відновленням. Після усунення помилки зупиніть сесію та очистіть її змінну середовища, коли закінчите.
Вибір пресетів і налаштувань кодування
Виявлення встановлених пресетів експорту та підтримуваних налаштувань:
openshot-cli export preset list
openshot-cli export preset get builtin:format_mp4_x264
openshot-cli export capabilities
openshot-cli export start /tmp/reel.mp4 --preset builtin:format_mp4_x264 --quality med --wait
Експорт також приймає --from-file FILE_ID з опційним --create-custom. Налаштування застосовуються в такому порядку: стандартні налаштування проекту, пресет, розширений JSON, явні прапори профілю/якості/діапазону. Розширений JSON відкриває кодеки відео/аудіо та бітрейт, розкладку/частоту/канали аудіо, нативні опції кодека, налаштування апаратних пристроїв і кількість потоків.
Наприклад, виберіть опцію кодувальника через розширений JSON:
openshot-cli export start /tmp/small.mp4 --profile builtin:00640x0360p0030_16-09 --json '{"video_options":{"preset":"fast"}}' --wait
Перевірка налаштувань експорту
Перевірте налаштування перед початком рендерингу:
openshot-cli export validate /tmp/reel.mp4 --preset builtin:format_mp4_x264
Звіт про можливості показує доступність скомпільованих кодеків, а не фізичну доступність GPU. Перевірка йде далі: вона відкриває кодувальники (включно з апаратними) та контейнер з точними налаштуваннями в окремому процесі, без запису файлу. Комбінація, яку контейнер не підтримує, завершується помилкою incompatible_export, власним поясненням FFmpeg та налаштуванням для зміни (details.cause.path):
openshot-cli export validate /tmp/song.mp3 --json '{"mode":"audio","format":"mp3","audio_codec":"aac"}'
Процес експорту виконує ту ж перевірку перед рендерингом.
Рендеринг діапазону кадрів
Використовуйте --start-frame та --end-frame для рендерингу частини таймлайну. Діапазони включні та нумеруються з одиниці відповідно до FPS профілю експорту. Наприклад, відрендерити перші 90 кадрів при 30 fps (три секунди):
openshot-cli export start /tmp/excerpt.mp4 --profile builtin:01280x0720p0030_16-09 --start-frame 1 --end-frame 90 --wait
Експорт лише аудіо та послідовності зображень
Виберіть режим виводу за допомогою розширеного JSON:
openshot-cli export start /tmp/music.wav --json '{"mode":"audio","format":"wav","audio_codec":"pcm_s16le"}' --wait
openshot-cli export start /tmp/frames --json '{"mode":"image_sequence","format":"png"}' --end-frame 3 --wait
Послідовності зображень потребують нової вихідної теки. Існуючі виходи ніколи не перезаписуються.
Редагування
Додавання кліпів і ефектів
Використовуйте ідентифікатори, що повертаються командами import/add/list, та дізнавайтеся номери шарів за допомогою project get:
openshot-cli file import /absolute/path/video.mp4
openshot-cli clip add FILE_ID --layer 2000000 --position 3 --start 10 --end 17 --volume 0
openshot-cli clip set CLIP_ID --json '{"volume":0.5}'
openshot-cli clip keyframe set CLIP_ID --property volume --frame 301 --value 0
openshot-cli clip keyframe set CLIP_ID --property volume --frame 331 --value 1
openshot-cli effects add CLIP_ID saturation
openshot-cli effects set EFFECT_ID --json '{"saturation":1.2}'
openshot-cli project save /absolute/path/edit.osp
Обирайте профіль проекту якомога раніше; заповнені проекти також підтримують зміну профілю через існуючу систему конвертації FPS та скасування. --audio-only при створенні кліпу вимикає відео, включно з вбудованою обкладинкою в музичних файлах. Щоб використовувати цей кліп для аудіовізуалізації, увімкніть його відео та аудіо і дотримуйтесь допомоги ефекту щодо прозорих накладок і розміщення шарів.
Розуміння таймінгу кліпу
Приклад ключових кадрів припускає проект з 30 fps і кліп, обрізаний на джерелі 10 с. Позиція в секундах таймлайну; початок/кінець — у секундах джерела, кінець виключно. Кадри нумеруються з 1. Кадри мініатюр файлу використовують FPS джерела. Кадри таймлайну — FPS проекту. Ключові кадри кліпу використовують координати джерела при FPS проекту, тому обрізання кліпу не переміщує його перший видимий ключовий кадр на кадр 1.
Зміна властивостей
set об’єднує властивості верхнього рівня. Скаляри перетворюють ключові властивості на константи. Надана вкладена крива замінює цю криву; використовуйте keyframe set для зміни лише однієї точки. Аргументи JSON приймають вбудований JSON, @file.json або - для stdin. Імена властивостей, типи, перерахування, ключові кадри, посилання та таймінг перевіряються перед редагуванням проекту. Помилки вказують поле, очікуване значення, отримане значення та можливе виправлення. Діапазони повзунків GUI є рекомендаційними, якщо движок підтримує значення поза ними.
Додавання затухань
clip fade ID --in 0.5 --out 0.5 автоматично обчислює координати ключових кадрів обрізки джерела. Він замінює альфа-криву; --property volume --value 0.25 натомість створює аудіозатухання з піковим посиленням 0.25. Тривалість має поміщатися між першим і останнім видимим кадром; затухання до нуля досягає на останньому кадрі.
Розрізання кліпів
clip split ID --at 6.5 використовує секунди таймлайну, прив’язується до найближчого кадру проекту і зберігає обидві половини. Зберігає криві координат джерела та дублює ефекти з новими ID на правій половині, відповідно до поведінки редактора при розрізанні. Ліва половина зберігає свій ID. Відповідь повідомляє запитані/фактичні часи розрізання та обидва підсумки; іменований результат пакету підтримує {"$ref":"cut.right.id"}. Розрізання відхиляє кінцеві точки та заблоковані доріжки. Скасування відновлює оригінальний кліп однією транзакцією.
Додавання та стилізація тексту
text add створює текст і розміщує його як кліп, використовуючи той самий текст, що й інструмент Text редактора. Опції, які ви пропускаєте, використовують стиль за замовчуванням редактора:
openshot-cli text add --text "Opening Night" --layer 5000000 --position 2 --duration 4 \
--place lower-third --font "Noto Sans" --size 72 --bold --color "#ffffff" \
--background "#80000000" --background-padding 16 --background-corner 12
openshot-cli text get CLIP_ID
openshot-cli text set CLIP_ID --stroke black --stroke-width 3
openshot-cli text set CLIP_ID --text $'Two\nlines' --line-spacing 1.4
openshot-cli text fonts --search noto
openshot-cli text list --search opening
Слова, шрифт, розмір, вирівнювання, ширина рамки та кольори за замовчуванням належать тексту у файлах проекту і спільні для кожного кліпу, що його використовує, так само як і в редакторі. text set для одного кліпу змінює всі ці параметри і перераховує їх у changed_clip_ids; --this-clip-only спочатку дає цьому кліпу власну копію. clip add FILE_ID додає інший кліп тексту з text list. Розміри в пікселях при роздільній здатності проекту, а кольори — #RRGGBB, #AARRGGBB (з альфою), CSS-ім’я або transparent. --place розміщує рамку в центрі, на краю або куті, або в нижній третині. --line-spacing — це кратність нормальної відстані між рядками (1 — нормально), а --background-corner округлює кути фону та рамки на вказану кількість пікселів.
Текстовий кліп — це звичайний кліп. Позиція, масштаб, обертання, прозорість, час, затемнення, пресети руху та ефекти використовують звичайні команди clip. Розмір шрифту, відступи, ширина рамки, а також інтервали між літерами та рядками визначають розмір текстового блоку, тому їх не можна анімувати ключовими кадрами; щоб анімувати розмір тексту, анімуйте масштаб кліпу. Кожен кліп може анімувати власні кольори тексту, контур і ширину рамки за допомогою тих самих команд ключових кадрів, що й для інших властивостей:
openshot-cli clip keyframe list CLIP_ID
openshot-cli clip keyframe set CLIP_ID --property text_color.alpha --space clip --unit seconds --at 0 --value 0
openshot-cli clip keyframe set CLIP_ID --property text_color.alpha --space clip --unit seconds --at 1 --value 255
Анімовані властивості: text_color, text_background, text_stroke і text_border (кольори з .red, .green, .blue і .alpha від 0 до 255), а також text_stroke_width, text_border_width і text_background_corner. Власна анімація кліпу має пріоритет над спільним стилем, а text get показує, які стилі анімує кліп. text reset CLIP_ID повертає кліп до стилю за замовчуванням, як у Text → Reset Style; --keyframes-only лише видаляє власну анімацію кліпу. Щоб стилізувати багато текстів одночасно, виберіть їх за допомогою {"text":true}:
openshot-cli edit bulk --select '{"text":true}' --json '[{"method":"text.set","params":{"font_family":"Noto Sans","stroke_width":2}}]'
Застосування пакету редагувань
edit apply --json @edits.json --expect-revision 12 приймає до 256 впорядкованих команд мутації, використовуючи крапкові імена команд, такі як clip.set і effects.add (старіше написання effect.add також працює):
[
{"method":"project.profile.set","params":{"id":"builtin:01280x0720p0024_16-09"}},
{"method":"file.import","as":"media","params":{"path":"/tmp/video.mp4"}},
{"method":"clip.add","as":"shot","params":{"file_id":{"$ref":"media.id"},"layer":1000000,"start":10,"end":15}},
{"method":"clip.fade","params":{"id":{"$ref":"shot.id"},"fade_in":0.5,"fade_out":0.5}}
]
Опційний as прив’язує результат для подальших команд у тому ж пакеті. Об’єкт {"$ref":"shot.id"} замінює поле цього результату. Посилання розв’язуються лише за раніше визначеними іменами; помилки в написанні, посилання вперед і дублікати імен призводять до помилки до живих оновлень. Відповідь містить впорядковані компактні результати та карту refs з фактичними ID. Усі зміни в успішному пакеті формують один крок скасування/повтору. project.profile.set також підтримує заповнені таймлайни. Команди відкриття, збереження, експорту та перевірки залишаються поза пакетами редагувань. Довідка кожної команди перераховує імена параметрів JSON, включно з написанням прапорців оболонки через підкреслення (наприклад, --fps-num стає fps_num).
Перевірка пакетів і обробка помилок
Усі команди в пакетах редагування проходять попередню перевірку на відокремленому проекті перед будь-якими живими оновленнями. Неправильний ввід не змінює живий проект і ревізію. Дійсні пакети формують одну групу скасування. Неочікувані помилки виконання можуть спричинити часткові зміни; помилки повідомляють про завершені операції. Таймаут не означає скасування, тому перевірте стан перед повторною спробою мутацій.
Точне редагування ключових кадрів
clip, transition і effects підтримують keyframe list, set, remove, clear, transform, copy і paste. Шляхи властивостей можуть адресувати вкладені криві, наприклад color.red у ефекті Chroma Key. Редагування вкладеної кривої зберігає сусідні канали. Виконайте keyframe list ID без властивості, щоб виявити шляхи кривих і кількість точок. Виявлення і перелік точок включають контекст часу обрізки/позиції; перелік точок також повідомляє рідні координати кадрів. get і properties показують повний рідний об’єкт і метадані властивостей. Помилки ідентифікують недійсні поля, пропонують схожі імена властивостей і пояснюють корекції координат.
Вибирайте координати явно за допомогою --space native|clip|timeline і --unit frames|seconds. Усі кадри використовують FPS проекту і нумеруються з 1; секунди починаються з нуля і прив’язуються до найближчого кадру. Native — це існуючі координати ключового кадру двигуна (включно з обрізкою джерела). Координати кліпу починаються з видимого початку кліпу; координати таймлайну починаються з нуля часу проекту. Прикріплені ефекти використовують час батьківського кліпу. Ці координати адресують час анімації, а не медіа-кадри, вибрані кривою ремапінгу часу.
Для кліпу, розташованого на 5 секунді, обрізаного на 2 секунди, у проекті з 30 кадрів на секунду, кадр кліпу 1, кадр таймлайну 151 і нативний кадр 61 відповідають одній і тій же точці. Позиція та обрізка прив’язуються незалежно до сітки кадрів проекту. Перелік усієї кривої може включати приховані точки з непозитивними координатами кліпу/таймлайну. Спадковий параметр --frame все ще означає нативний кадр і не може комбінуватися з --at.
Приклади:
openshot-cli clip keyframe set CLIP --property location_x --space clip --unit seconds --at 0 --value -1
openshot-cli clip keyframe set CLIP --property location_x --space clip --unit seconds --at 1 --value 0 --interpolation bezier --handles '{"handle_left":{"X":0.2,"Y":0.9}}'
openshot-cli effects keyframe set EFFECT --property color.red --space clip --at 31 --value 200
openshot-cli clip keyframe list CLIP --property location_x --space clip --unit seconds
openshot-cli clip keyframe transform CLIP --property location_x --space clip --start 1 --end 31 --scale 2 --offset 15
openshot-cli clip keyframe copy TARGET --property location_x --source-id SOURCE --space clip --start 1 --end 31 --at 1 --mode merge
openshot-cli clip keyframe remove CLIP --property location_x --space clip --at 31
openshot-cli clip keyframe clear CLIP --property location_x --value 0
Інтерполяція, згладжування та попередній перегляд
Інтерполяція описує сегмент до кінцевої точки. Лінійна забезпечує сталу швидкість між точками. Константна утримує попереднє значення до кінцевої точки, а потім стрибок. Нативні стандартні керуючі точки Безьє згладжують обидва кінці кожного сегмента. Додавання проміжної точки може спричинити небажане уповільнення; для одного плавного руху починайте з двох кінцевих точок. Зазвичай залишайте керуючі точки без змін і вибирайте іменований пресет для певного стилю.
Дізнайтеся про ті ж пресети згладжування, що використовуються в меню редактора, без сесії:
openshot-cli clip keyframe presets
Застосуйте пресет до вхідного сегмента, встановивши його кінцеву точку:
openshot-cli clip keyframe set CLIP --property scale_x --space clip --unit seconds --at 0 --value 1
openshot-cli clip keyframe set CLIP --property scale_x --space clip --unit seconds --at 4 --value 1.2 --easing ease-in-out
Опція згладжування передбачає Безьє. Вона встановлює вихідну керуючу точку попередньої точки та вхідну керуючу точку кінцевої точки разом, зберігаючи інші керуючі точки та значення точок. Попередня точка має існувати. Не комбінуйте це з користувацькими керуючими точками або іншою інтерполяцією. Пресети працюють пакетами та шаблонами. Пресет GUI ease («Згладжування (за замовчуванням)») відрізняється від нативних керуючих точок, що використовуються у звичайній інтерполяції Безьє. Зворотні пресети можуть перевищувати значення кінцевих точок.
Перевірте рух перед рендерингом, використовуючи нативний оцінювач кривої:
openshot-cli clip keyframe preview CLIP --property scale_x --space clip --unit seconds --start 0 --end 4
openshot-cli clip keyframe preview CLIP --property scale_x --space clip --unit seconds --at 2
Попередній перегляд є лише для читання і працює однаково для ефектів і переходів. Він повертає значення та підписані вхідні/вихідні швидкості у властивих одиницях за секунду, обчислені з безпосередньо суміжних кадрів. Це скінченні різниці, а не аналітичні похідні. На нативному кадрі 1 вхідна швидкість дорівнює нулю. Швидкості суміжних кадрів можуть перевіряти поза запитаним діапазоном. Майже нульові швидкості навколо внутрішньої точки вказують на паузу; різні швидкості вказують на зміну швидкості. Константна інтерполяція показує стрибок у кінцевій точці.
Без діапазону попередній перегляд охоплює першу та останню точки кривої. Діапазони включні, за замовчуванням 17 рівномірно розподілених зразків (–count: 2–256). Ключові кадри та їхні безпосередні сусіди всередині діапазону також включені, тому невелика кількість зразків не приховає затримку ключового кадру. Максимум — 1024 зразки; більші запити потребують вужчого діапазону. –at вибирає один кадр. Попередній перегляд повідомляє координати у запитаному просторі та фактичні нативні кадри; секунди прив’язуються до кадрів проекту так само, як і при редагуванні.
Для розширених користувацьких керуючих точок обидві координати X і Y нормалізовані до сегмента: X — це частка його довжини в кадрах; Y — частка зміни значення. Перша керуюча точка береться з handle_right попередньої точки, друга — з handle_left кінцевої точки. Нативні значення за замовчуванням: right=(0.5, 0), left=(0.5, 1), з пласкими дотичними на кінцях. Зміна лише handle_type не перераховує безперервну дотичну через сусідні точки. Існуючі керуючі точки зберігаються при переміщенні точки.
Діапазони ключових кадрів є включними, на відміну від часових діапазонів вибору кліпів. Список виводить points, чиї значення co.X використовують запитуваний простір/одиницю координат. Передайте цей масив до keyframe paste --json @points.json з тим самим простором/одиницею, вибираючи --mode merge (замінити відповідні кадри, зберегти інші) або --mode replace (замінити всю криву). copy приймає джерело того самого типу об’єкта, необов’язковий --source-property і прив’язує першу вибрану точку джерела до --at на цілі. Інші криві та джерела залишаються незмінними.
transform застосовує позитивний часовий масштаб навколо першої вибраної точки або --pivot, за яким слідує підписаний --offset у вибраній одиниці. Прив’язка кадрів, що створює дублікати координат, відхиляється, включно з колізіями з точками поза вибраним діапазоном. Нативні координати мають залишатися не менше 1. Нативні нормалізовані керуючі точки Безьє та інтерполяція рухаються разом з кожною точкою; керуючі точки не є абсолютними координатами кадрів. set --handles змінює лише надані керуючі точки. Інтерполяція належить кінцевій точці.
clear зберігає сталу базову точку на нативному кадрі 1: вкажіть --value або виберіть існуючу криву за допомогою --at (за замовчуванням нативний кадр 1). Видалення останньої точки також зберігає сталу базу, тому подальше додавання ключових кадрів залишається дійсним.
Вибір і редагування багатьох кліпів
Використовуйте edit apply --dry-run для перевірки пакету без змін у проекті. Використовуйте edit bulk для повторення невеликого шаблону команди для кожного вибраного кліпу, при цьому всі зміни групуються в один крок скасування.
Спочатку перегляньте вибране:
openshot-cli edit select --json '{"layer":1000000,"start":5,"end":20,"effect":"Saturation"}'
Селектори підтримують ids (масив унікальних ID кліпів), layer, start/end (секунди на часовій шкалі), file_id, effect (назва класу або псевдонім) та text (true вибирає текстові кліпи). Фільтри комбінуються за допомогою AND. Часові діапазони вибирають кліпи, що перекриваються з [start, end); вони не обрізають ці кліпи. Результати впорядковані за позицією, шаром, потім ID, і включають ID, резюме, стан блокування та поточну ревізію. Невідомі ID вважаються помилкою. Порожній селектор відхиляється; використовуйте {"all":true} явно для кожного кліпу. Вибір обмежений 256 кліпами і ніколи не обрізається без повідомлення.
Наприклад, збережіть цей масив як templates.json:
[
{"method":"clip.adjust","params":{"values":{"position":{"add":2},"volume":{"multiply":0.5}}}},
{"method":"effects.add","as":"look","params":{"type":"Saturation"}},
{"method":"effects.keyframe.set","params":{"id":{"$ref":"look.id"},"property":"saturation","space":"clip","at":1,"value":0}},
{"method":"effects.keyframe.set","params":{"id":{"$ref":"look.id"},"property":"saturation","space":"clip","at":31,"value":1.2}}
]
Перевірте його, а потім застосуйте до ревізії, поверненої вибором:
openshot-cli edit bulk --select '{"ids":["CLIP_A","CLIP_B"]}' --json @templates.json --dry-run
openshot-cli edit bulk --select '{"ids":["CLIP_A","CLIP_B"]}' --json @templates.json --expect-revision 42
Команди для існуючих кліпів успадковують id; effects.add успадковує clip_id. Пропускайте ці цільові параметри в шаблонах. Редагування ефектів має посилатися на раніше названий результат. Імена локальні для кожного вибраного кліпу, тому look.id посилається на різний ефект для кожного кліпу. Щоб змінити існуючі екземпляри ефектів за явним ID, продовжуйте використовувати edit apply. Вибраний набір ID фіксується перед розгортанням; зміни позиції або ефектів не змінюють решту цілей.
clip set застосовує абсолютні властивості; clip adjust застосовує multiply, а потім add до числової властивості або кожного значення в кривій, зберігаючи час точок, інтерполяцію та нормалізовані ручки. Він перевіряє отримані значення, включно з невід’ємними позиціями та гучністю. Структурні поля залишаються захищеними.
Масові операції відхиляють порожні вибори, заблоковані цільові доріжки та більше ніж 256 розгорнутих команд. Кожна розгорнута операція проходить відокремлену перевірку перед будь-яким живим редагуванням. Тестові запуски не резервують згенеровані ID. Використовуйте --expect-revision, щоб відхилити застарілі вибори. Успішні пакети є одним кроком скасування, включно після збереження/повторного відкриття. Оновлення GUI групуються. Неочікувані помилки часу виконання/слухача можуть залишити часткову транзакцію; помилка повідомляє про завершені операції, а скасування відміняє цю групу, як і з edit apply.
Профілі
Виявляйте профілі та співставляйте імпортоване відео без вгадування ID:
openshot-cli profile list --search 720
openshot-cli profile get builtin:01280x0720p0024_16-09
openshot-cli profile match --file FILE_ID
openshot-cli project profile get
openshot-cli project profile set --from-file FILE_ID
openshot-cli project profile set builtin:01280x0720p0024_16-09
openshot-cli project profile set --json '{"width":640,"height":352,"display_ratio":{"num":20,"den":11},"fps":{"num":24000,"den":1001}}'
Записи каталогу включають стабільні ID, описи, розміри, раціональний FPS, співвідношення сторін і налаштування сканування. Список/пошук розбиті на сторінки. Співставлення джерела повертає точні ID та ранжовані альтернативи з явними відмінностями. Встановлення з файлу вимагає точного співпадіння, якщо не вказано --create-custom; воно ніколи не вибирає близький профіль без повідомлення. Статичні зображення та джерела лише з аудіо не можуть визначати відеопрофіль. Співставлення використовує оголошений FPS джерела.
Користувацькі налаштування вбудовані в збережений проєкт, включно з раціональними ставками, тому повторне відкриття не вимагає встановлення окремого файлу профілю. Зміни профілю проєкту використовують існуюче перетворення частоти кадрів і одну транзакцію скасування. Скасування/повтор відновлює час кліпу та ключові кадри, включно з позиціями, чутливими до округлення. Експорт може незалежно вибирати профіль без зміни проєкту.
Збережена історія скасувань відповідає налаштуванню обмеження історії редактора. Ліміт — це м’який бюджет дій: усі записи, що належать збереженим транзакціям, зберігаються, тому збереження не може обрізати велику партію до часткового скасування. Нуль вимикає збережену історію. Окреме обмеження на пакет із 256 команд все ще застосовується.
Перевірка медіа та часових шкал
Перевіряйте час кліпу та розташування доріжок у вигляді тексту або JSON, або рендерте зображення для перегляду композиції та кадрування перед експортом.
Резюме часової шкали
Використовуйте текстовий вигляд для швидкого огляду або структурований JSON для скриптів і агентів:
openshot-cli timeline view --start 5 --end 12
openshot-cli timeline view --start 5 --end 12 --format json
openshot-cli timeline overview --start 5 --end 12
timeline view за замовчуванням відображає компактний текст із використаними доріжками, ID об’єктів, інтервалами часової шкали/джерела, станом потоку, підсиленням та пропусками/перекриттями. Використовуйте --detail summary|clips|full для вибору деталізації, --format json для структурованого контексту, а також --start/--end, --layer і пагінацію для фокусування результату.
timeline overview надає компактний структурований контекст без байтів зображень: впорядковані ID, послідовність по доріжках, інтервали часової шкали/джерела, видимі діапазони обрізки, координати кадрів, стан аудіо/відео, ефекти та сусідні пропуски або перекриття. Інтервали та діапазони кадрів є виключно кінцевими; номери кадрів починаються з одиниці. Кадри джерела використовують FPS джерела; координати часової шкали та ключових кадрів використовують FPS проєкту. Використовуйте --layer та --start/--end для фокусування, а також --limit/--offset для пагінації (за замовчуванням 100, максимум 500 елементів). Кліпи з часовим переналаштуванням явно приховують виведені відображення джерела. Використовуйте повернену ревізію з edit apply --expect-revision.
Попередній перегляд кадрів і контактні аркуші
Відрендерте один кадр за допомогою thumbnail або вибірку діапазону за допомогою strip. Використовуйте file для перевірки вихідного медіа та timeline для перевірки змонтованого відео, включно з ефектами та шарованими кліпами:
openshot-cli file thumbnail FILE_ID --frame 301 --output /tmp/source.png
openshot-cli file strip FILE_ID --start 10 --end 20 --count 12 --output /tmp/source-strip.png
openshot-cli timeline thumbnail --frame 91 --output /tmp/timeline-frame.png
openshot-cli timeline strip --start 0 --end 20 --count 12 --output /tmp/timeline-strip.png
Зображення кадрів за замовчуванням мають розмір 320x180 пікселів; контактні аркуші — 160x90 на плитку, плюс мітки таймкоду. Використовуйте --width та --height для вибору розміру вихідних пікселів. Відповіді містять точні метадані зразка/кадра. Контактні аркуші допомагають переглядати композицію в послідовності; використовуйте попередній перегляд ключових кадрів і відрендерене відео для оцінки руху між цими зразками.
Зображення часової шкали
Захоплення макету доріжок редактора, включно з лінійкою, мініатюрами, ефектами, переходами та формами хвиль:
openshot-cli timeline view --start 0 --end 20 --pixels-per-second 80 --output /tmp/tracks.png
Вказівка --output вибирає формат зображення; --format image також явно його вибирає. Захоплення не змінює вікно перегляду редактора або проект. Відповіді містять ID кліпів і час разом із межами пікселів.
За замовчуванням зображення мають ширину 1280 пікселів, а висота підганяється під використані доріжки. Використовуйте --width, --height або --all-tracks для налаштування макету, а також --track-size або --track-label-width для налаштування доріжок і підписів. Діапазон початку/кінця визначає масштаб; --pixels-per-second натомість визначає ширину за часовим діапазоном.
Перегляди аудіоформи хвилі
Виберіть --mode waveforms для перегляду аудіообгорток на часовій шкалі:
openshot-cli timeline view --start 5 --end 12 --mode waveforms --output /tmp/waves.png
--mode auto використовує існуючий кешований показ форми хвилі; --mode thumbnails замість цього показує мініатюри. Форми хвилі відображають пікові/RMS рівні джерела з урахуванням гучності кліпу та часових налаштувань, до застосування аудіоефектів або мікшування.
Витяг форми хвилі без кешу декодує повні джерела, обмежені 600 секундами на джерело та 1200 секундоджерел на запит. Звуження видимого діапазону не зменшує обсяг декодування. Для довших джерел спочатку створіть форми хвиль у редакторі або використовуйте режим мініатюр. Наступні запити можуть повторно використовувати кешовані форми хвиль.
Вивід зображень та обмеження
Шляхи до зображень мають бути новими файлами PNG у існуючих каталогах. Зображення обмежені 4096 пікселями по осі, 8 388 608 загальними пікселями та 64 зразками контактних аркушів. Запити, що перевищують ці обмеження, не виконуються перед рендерингом.
Зображення записуються у файли; JSON-відповіді містять їхні шляхи та розміри image_bytes. Перевірка чекає на завершення зображення, а великі запити можуть тимчасово займати редактор.
Обробка тайм-аутів команд
Тайм-аут запиту не означає, що зміна не вдалася. Використовуйте ID операції з помилки з командою operation get ID перед повторною спробою. operation list показує останні зміни та їхні стани, ревізії й результати. Завершені операції зберігають свої результати, якщо вони достатньо малі, включно з поверненими ID об’єктів. Зберігання обмежене 100 операціями та 4 МіБ, при цьому тіла окремих результатів понад 256 КіБ опускаються. Ці записи зберігаються лише під час поточної сесії. Вони не відновлюють проекти після збою і не запобігають повторному застосуванню тієї самої правки при повторній команді. Експортні завдання мають власні команди статусу/списку.