कमांड लाइन इंटरफ़ेस
OpenShot को अपने कमांड-लाइन वर्कफ़्लो में लाएं। फुटेज आयात करें, क्लिप ट्रिम और व्यवस्थित करें, प्रभाव लागू करें, कीफ़्रेम के साथ गुणों को एनिमेट करें, और अपने टर्मिनल से वीडियो निर्यात करें। दोहराए जाने वाले संपादनों को स्वचालित करने के लिए कुछ कमांड का उपयोग करें, एक आवर्ती परियोजना के लिए स्क्रिप्ट लिखें, या एक AI एजेंट को वीडियो को असेंबल और परिष्कृत करने में मदद करने दें।
कमांड लाइन उसी परियोजनाओं के साथ काम करता है जो संपादक के साथ होते हैं। आप एक खुले संपादक को नियंत्रित कर सकते हैं और जैसे-जैसे आप काम करते हैं, परिवर्तन देख सकते हैं, या बिना विंडो खोले हेडलैस सेशन में काम कर सकते हैं। एक सेशन आपके प्रोजेक्ट को कमांड्स के बीच खुला रखता है, जिसमें इसके संपादन, पूर्ववत इतिहास, और निर्यात कार्य शामिल हैं। जब भी आप बाद में संपादन जारी रखना चाहें, इसे .osp परियोजना के रूप में सहेजें।
शुरू करना
अपने इंस्टॉल किए गए OpenShot निष्पादन योग्य फ़ाइल का उपयोग करें, उसके बाद --cli लगाएं। सेशन्स, संपादन, एनिमेशन, और सहेजने के लिए एक संक्षिप्त मार्गदर्शिका के लिए intro से शुरू करें, या कमांड अवलोकन के लिए help का उपयोग करें। इन कमांड्स को सक्रिय सेशन की आवश्यकता नहीं होती। नीचे दिए गए उदाहरणों के लिए OpenShot का ऐसा संस्करण चाहिए जिसमें कमांड-लाइन संपादन शामिल हो।
लिनक्स 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 फ़ाइल उपलब्ध रखें।
लिनक्स 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
विंडोज़
महत्त्वपूर्ण
विंडोज़ पर कमांड-लाइन संपादन के लिए openshot-qt-cmd.exe का उपयोग करें। यह कंसोल निष्पादन योग्य आपकी टर्मिनल में कमांड परिणाम, सहायता, और त्रुटियाँ दिखाता है। डेस्कटॉप निष्पादन योग्य, 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 कमांड भी प्रदान करते हैं। स्रोत से चलाते समय, OpenShot के Python वातावरण में python3 src/launch.py --cli का उपयोग करें।
सिर्फ --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 उन प्रभावों को सूचीबद्ध करता है जो पहले से क्लिप्स से जुड़े हैं, साथ ही पैरेंट क्लिप आईडी। क्लास नाम, डिस्प्ले नाम, और अंडरस्कोर उपनाम एक ही प्रभाव की पहचान करते हैं।
स्क्रिप्ट्स और AI एजेंट्स के साथ काम करना
Codex और Claude Code जैसे AI कोडिंग एजेंट CLI का उपयोग करके टर्मिनल कमांड्स के माध्यम से OpenShot परियोजनाओं का निरीक्षण और संपादन कर सकते हैं। अपने एजेंट को OpenShot निष्पादन योग्य का पथ, काम करने के लिए मीडिया या परियोजना, और वांछित परिणाम: अवधि, आयाम, एनिमेशन शैली, और आउटपुट स्थान दें। शुरू करने से पहले इसे --cli intro पढ़ने के लिए कहें। जब आप स्वयं टाइप करें या स्क्रिप्ट से चलाएं, तो वही कमांड काम करते हैं।
intro से शुरू करें, फिर आवश्यकतानुसार कमांड-विशिष्ट सहायता का उपयोग करें। एक उपयोगी वर्कफ़्लो है सेशन चुनना, परियोजना का निरीक्षण करना, कुछ छोटे बदलाव करना, परिणाम की समीक्षा करना, और सहेजना। कमांड्स संरचित JSON लौटाते हैं ताकि स्क्रिप्ट्स और एजेंट्स स्क्रीन आउटपुट की व्याख्या करने के बजाय सीधे ऑब्जेक्ट आईडी और परिणामों का उपयोग कर सकें।
संपादन से पहले निरीक्षण करें। नाम, ट्रैक नंबर, या समय का अनुमान लगाने के बजाय लौटाए गए आईडी और गुण जानकारी का उपयोग करें। जब एक से अधिक परियोजनाएं खुली हों तो स्पष्ट रूप से एक सेशन चुनें।
दोहराए गए संपादनों को समूहित करें। बदलावों के अनुक्रम के लिए
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 start या session list द्वारा लौटाए गए session_id से बदलें।
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 कमांड के लिए, Getting started से अपनी स्थापना का executable बदलें। चयन इस टर्मिनल और इससे शुरू किए गए कमांड के लिए रहता है। इसे नए टर्मिनल में फिर से सेट करें, या अलग सेशन पर स्विच करते समय अपडेट करें।
बाकी संपादन और निर्यात उदाहरण मानते हैं कि OPENSHOT_SESSION सेट है। अगला उपखंड दिखाता है कि स्क्रिप्ट्स के लिए ID को स्वचालित रूप से कैसे कैप्चर करें।
केवल एक कमांड के लिए अलग सेशन को लक्षित करने के लिए, --session का उपयोग करें। यह आपके टर्मिनल के चयन को बदले बिना OPENSHOT_SESSION को ओवरराइड करता है:
openshot-cli --session OTHER_SESSION_ID project get
पैकेज्ड executable के साथ, इस ओवरराइड को --cli के बाद और कमांड समूह से पहले रखें: --cli --session OTHER_SESSION_ID project get।
स्वचालित चयन केवल तब काम करता है जब ठीक एक पहुंच योग्य सेशन मौजूद हो। यदि आप session_required देखें, तो session list चलाएं और इच्छित सेशन को स्पष्ट रूप से चुनें। यदि यह अब सूची में नहीं है, तो इसे फिर से शुरू करें और नया ID उपयोग करें। सहायता, intro, और सेशन खोज के लिए चयनित सेशन आवश्यक नहीं है।
सेशन ID को स्वचालित रूप से कैप्चर करना
स्क्रिप्ट्स सीधे session start द्वारा लौटाए गए JSON से result.session_id पढ़ सकते हैं और बाद के कमांड के लिए OPENSHOT_SESSION सेट कर सकते हैं। ID को मैन्युअली कॉपी करने या लॉग फ़ाइल पढ़ने की आवश्यकता नहीं है। लौटाए गए ID का उपयोग करने से पहले जांचें कि स्टार्टअप सफल हुआ।
Windows PowerShell (अपनी स्थापना के लिए executable पथ सेट करें):
$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 (JSON पढ़ने के लिए jq आवश्यक):
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
पर्यावरण चर इस टर्मिनल से शुरू किए गए कमांड के लिए एक सेशन चुनता है; यह सिस्टम-व्यापी सेटिंग को नहीं बदलता। सेशन शुरू करने से यह चर स्वचालित रूप से सेट नहीं होता। सेशन बंद करने के बाद, PowerShell में Remove-Item Env:OPENSHOT_SESSION या Bash में unset OPENSHOT_SESSION से चयन साफ़ करें।
सेशन दिखाना और रोकना
संपादक में चयनित सेशन दिखाने के लिए:
openshot-cli session show
डेस्कटॉप पर, session show उसी प्रक्रिया में संपादक बनाता है और लाइव परियोजना, IDs, इतिहास, निर्यात कार्य, और कनेक्शन बनाए रखता है। बार-बार कॉल करने पर मौजूदा विंडो ऊपर आती है। session start --show इसे तुरंत खोलता है। बिना डिस्प्ले के शुरू किए गए सेशन्स, या QT_QPA_PLATFORM=offscreen/minimal के साथ, बाद में डेस्कटॉप विंडो नहीं दिखा सकते। उन सेशन्स के लिए, परियोजना को सहेजें और नए डेस्कटॉप सेशन में खोलें। एक बार दिखाए जाने के बाद, संपादक विंडो के माध्यम से सेशन बंद करें।
वैश्विक विकल्प (--session, --timeout) कमांड से पहले आते हैं। session serve पर्यवेक्षकों के लिए अग्रभूमि में रहता है; session start पृष्ठभूमि होस्ट पंजीकृत होने के बाद लौटता है। session stop बिना सहेजे गए परिवर्तनों और सक्रिय निर्यातों को अस्वीकार करता है। बिना सहेजे गए संपादनों को जानबूझकर छोड़ने के लिए ही --discard का उपयोग करें।
कमांड आउटपुट
परिणाम stdout पर JSON होते हैं, डिफ़ॉल्ट टेक्स्ट टाइमलाइन दृश्य को छोड़कर। त्रुटियाँ stderr पर JSON होती हैं और exit status 1 के साथ होती हैं; argument-parser त्रुटियाँ exit 2 के साथ होती हैं। म्यूटेशन compact सारांश 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 के माध्यम से खोलने पर इंटरैक्टिव मिसिंग-मीडिया डायलॉग नहीं दिखते, इसलिए प्रोजेक्ट के स्रोत मीडिया को उपलब्ध रखें।
एक नया, खाली प्रोजेक्ट बनाने के लिए, --project के बिना session start का उपयोग करें, फिर मीडिया आयात करें और Editing के तहत वर्णित अनुसार क्लिप्स जोड़ें।
प्रोजेक्ट या उसकी कॉपी सहेजना
नई फ़ाइल में सहेजें, या और बदलाव करने से पहले एक अलग संस्करण बनाएं:
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 पर लैंडस्केप संस्करण निर्यात करें, फिर 1080x1080 पर एक स्क्वायर संस्करण। ये सभी प्रोफाइल 30 fps का उपयोग करते हैं:
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 के साथ निर्यात करें, फिर अगला प्रोजेक्ट खोलें। नीचे दिए गए उदाहरण प्रत्येक प्रोजेक्ट के अपने रिज़ॉल्यूशन और फ्रेम रेट का उपयोग करते हैं और .osp फ़ाइलों के बगल में MP4 फ़ाइलें बनाते हैं। हर प्रोजेक्ट के लिए एक आउटपुट प्रोफ़ाइल उपयोग करने के लिए निर्यात कमांड में --profile PROFILE_ID जोड़ें।
सबसे पहले ऊपर दिए गए मेल खाते स्वचालित सेशन-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
Export --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 द्वारा लौटाए गए IDs का उपयोग करें, और 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 वीडियो को दबाता है, जिसमें संगीत फ़ाइलों में एम्बेडेड कवर आर्ट भी शामिल है। उस क्लिप का ऑडियो विज़ुअलाइज़ेशन के लिए उपयोग करने के लिए, उसका वीडियो और ऑडियो सक्षम करें, और पारदर्शी ओवरले और लेयर प्लेसमेंट के लिए प्रभाव की सहायता का पालन करें।
क्लिप टाइमिंग को समझना
उदाहरण की कीफ्रेम 30fps प्रोजेक्ट और स्रोत 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 टाइमलाइन सेकंड का उपयोग करता है, निकटतम प्रोजेक्ट फ्रेम पर स्नैप करता है, और दोनों हिस्सों को रखता है। यह स्रोत-निर्देशांक कर्व को बनाए रखता है और संपादक के स्लाइसिंग व्यवहार के अनुसार दाहिने हिस्से पर ताज़ा IDs के साथ प्रभावों को डुप्लिकेट करता है। बायाँ हिस्सा अपनी 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 मानचित्र शामिल होता है। सफल बैच में सभी परिवर्तन एक पूर्ववत/पुनः करने वाले चरण बनाते हैं। project.profile.set भरे हुए टाइमलाइन का भी समर्थन करता है। खोलने, सहेजने, निर्यात करने, और निरीक्षण कमांड संपादन बैच के बाहर रहते हैं। प्रत्येक कमांड की सहायता इसके JSON पैरामीटर नाम सूचीबद्ध करती है, जिसमें शेल फ्लैग्स की अंडरस्कोर वर्तनी शामिल है (उदाहरण के लिए, --fps-num fps_num बन जाता है)।
बैचों का सत्यापन और त्रुटियों को संभालना
संपादन बैचों के सभी कमांड किसी भी लाइव अपडेट से पहले एक अलग प्रोजेक्ट के खिलाफ पूर्व-उड़ान करते हैं। अमान्य इनपुट लाइव प्रोजेक्ट और संशोधन को अपरिवर्तित छोड़ देता है। वैध बैच एक पूर्ववत समूह बनाते हैं। अप्रत्याशित रनटाइम विफलताएँ अभी भी आंशिक परिवर्तन उत्पन्न कर सकती हैं; त्रुटियाँ पूर्ण संचालन की रिपोर्ट करती हैं। टाइमआउट रद्दीकरण का संकेत नहीं देता, इसलिए म्यूटेशन पुनः प्रयास करने से पहले स्थिति जांचें।
सटीक कीफ़्रेम संपादन
clip, transition, और effects keyframe list, set, remove, clear, transform, copy, और paste का समर्थन करते हैं। प्रॉपर्टी पथ नेस्टेड कर्व को संबोधित कर सकते हैं, जैसे कि Chroma Key प्रभाव पर color.red। नेस्टेड कर्व संपादन से सिबलिंग चैनल सुरक्षित रहते हैं। कर्व पथ और पॉइंट गणना खोजने के लिए बिना प्रॉपर्टी के keyframe list ID चलाएं। खोज और पॉइंट सूचीकरण में ट्रिम/स्थिति समय संदर्भ शामिल होता है; पॉइंट सूचीकरण मूल फ्रेम निर्देशांक भी रिपोर्ट करता है। get और properties पूर्ण मूल ऑब्जेक्ट और प्रॉपर्टी मेटाडेटा प्रकट करते हैं। त्रुटियाँ अमान्य फ़ील्ड की पहचान करती हैं, निकटवर्ती प्रॉपर्टी नाम सुझाती हैं, और निर्देशांक सुधार समझाती हैं।
--space native|clip|timeline और --unit frames|seconds के साथ स्पष्ट रूप से निर्देशांक चुनें। सभी फ्रेम प्रोजेक्ट FPS का उपयोग करते हैं और 1-आधारित होते हैं; सेकंड शून्य से शुरू होते हैं और निकटतम फ्रेम पर स्नैप होते हैं। Native मौजूदा इंजन कीफ़्रेम निर्देशांक है (स्रोत ट्रिम सहित)। क्लिप निर्देशांक दृश्य क्लिप इन-पॉइंट से शुरू होते हैं; टाइमलाइन निर्देशांक प्रोजेक्ट समय शून्य से शुरू होते हैं। संलग्न प्रभाव अपने पैरेंट क्लिप के समय का उपयोग करते हैं। ये निर्देशांक एनिमेशन समय को संबोधित करते हैं, न कि मीडिया फ्रेम जिन्हें टाइम-रिमैपिंग कर्व द्वारा चुना गया है।
5 सेकंड पर स्थित एक क्लिप के लिए, जिसे 2 सेकंड पर ट्रिम किया गया है, 30 fps प्रोजेक्ट में, क्लिप फ्रेम 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
इंटरपोलेशन, ईज़िंग, और पूर्वावलोकन
इंटरपोलेशन उस खंड का वर्णन करता है जो गंतव्य बिंदु की ओर होता है। लिनियर बिंदुओं के बीच स्थिर दर देता है। कॉन्स्टेंट गंतव्य तक पूर्ववर्ती मान को बनाए रखता है, फिर अचानक बदलता है। नेटिव डिफ़ॉल्ट Bezier हैंडल प्रत्येक खंड के दोनों सिरों पर ईज़िंग करता है। एक मध्यवर्ती बिंदु जोड़ने से अनजाने में धीमा होना हो सकता है; एक ईज़्ड मूव के लिए, दो एंडपॉइंट्स से शुरू करें। सामान्यतः हैंडल्स को वैसे ही छोड़ें और किसी विशिष्ट शैली के लिए नामित प्रीसेट चुनें।
सत्र के बिना, संपादक के मेनू द्वारा उपयोग किए गए समान ईज़िंग प्रीसेट खोजें:
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
ईज़िंग विकल्प Bezier को दर्शाता है। यह पिछले बिंदु के आउटगोइंग हैंडल और गंतव्य के इनकमिंग हैंडल को एक साथ सेट करता है, अन्य हैंडल और बिंदु मानों को संरक्षित करते हुए। एक पूर्व बिंदु मौजूद होना चाहिए। इसे कस्टम हैंडल या किसी अलग इंटरपोलेशन के साथ संयोजित न करें। प्रीसेट बैच और बल्क टेम्पलेट में काम करते हैं। GUI प्रीसेट ease ("Ease (Default)") साधारण Bezier इंटरपोलेशन में उपयोग किए गए नेटिव हैंडल से अलग है। बैक प्रीसेट्स एंडपॉइंट मानों को ओवरशूट कर सकते हैं।
नेटिव कर्व इवैल्युएटर का उपयोग करके रेंडरिंग से पहले गति का निरीक्षण करें:
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
पूर्वावलोकन केवल-पढ़ने योग्य है और प्रभावों और संक्रमणों के लिए समान रूप से काम करता है। यह मान और साइन किए गए incoming_rate / outgoing_rate को प्रति सेकंड प्रॉपर्टी यूनिट में लौटाता है, जो तुरंत आस-पास के फ्रेम से गणना किए जाते हैं। ये सीमित अंतर हैं, विश्लेषणात्मक व्युत्पन्न नहीं। नेटिव फ्रेम 1 पर incoming rate शून्य होता है। आस-पास के फ्रेम दर अनुरोधित सीमा के बाहर भी निरीक्षण कर सकते हैं। आंतरिक बिंदु के आसपास लगभग शून्य दरें एक विराम दिखाती हैं; भिन्न दरें गति परिवर्तन दिखाती हैं। कॉन्स्टेंट इंटरपोलेशन गंतव्य पर एक छलांग दिखाता है।
रेंज के बिना, पूर्वावलोकन कर्व के पहले और अंतिम बिंदुओं को कवर करता है। रेंज समावेशी होती हैं, डिफ़ॉल्ट रूप से 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 रहना चाहिए। नेटिव सामान्यीकृत Bézier हैंडल और इंटरपोलेशन प्रत्येक बिंदु के साथ चलते हैं; हैंडल पूर्ण फ्रेम निर्देशांक नहीं हैं। set --handles केवल प्रदान किए गए हैंडल बदलता है। इंटरपोलेशन गंतव्य बिंदु का होता है।
clear नेटिव फ्रेम 1 पर एक स्थिर बेस पॉइंट बनाए रखता है: --value निर्दिष्ट करें या --at के साथ मौजूदा कर्व का नमूना लें (डिफ़ॉल्ट नेटिव फ्रेम 1)। अंतिम बिंदु हटाने से भी स्थिर बेस बना रहता है, इसलिए बाद के कीफ्रेम जोड़ना मान्य रहता है।
कई क्लिप का चयन और संपादन
प्रोजेक्ट बदले बिना बैच को मान्य करने के लिए edit apply --dry-run का उपयोग करें। प्रत्येक चयनित क्लिप के लिए एक छोटा कमांड टेम्पलेट दोहराने के लिए edit bulk का उपयोग करें, जिसमें सभी परिवर्तन एक ही undo चरण में समूहित हों।
पहले चयन का पूर्वावलोकन करें:
openshot-cli edit select --json '{"layer":1000000,"start":5,"end":20,"effect":"Saturation"}'
सेलेक्टर्स ids (अद्वितीय क्लिप आईडी सूची), layer, start/end (टाइमलाइन सेकंड), file_id, effect (क्लास नाम या उपनाम), और text (true टेक्स्ट क्लिप चुनता है) का समर्थन करते हैं। फ़िल्टर AND के साथ संयोजित होते हैं। समय सीमा उन क्लिप्स का चयन करती है जो [start, end) के साथ ओवरलैप करते हैं; वे उन क्लिप्स को ट्रिम नहीं करते। परिणाम स्थिति, लेयर, फिर ID के अनुसार क्रमबद्ध होते हैं, और इनमें IDs, सारांश, लॉक स्थिति, और वर्तमान संशोधन शामिल होते हैं। अज्ञात IDs त्रुटियाँ हैं। खाली सेलेक्टर अस्वीकार किया जाता है; हर क्लिप के लिए स्पष्ट रूप से {"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 से अधिक विस्तारित कमांड को अस्वीकार करते हैं। प्रत्येक विस्तारित ऑपरेशन किसी भी लाइव संपादन से पहले अलग प्रीफ़्लाइट पास करता है। ड्राई रन उत्पन्न IDs आरक्षित नहीं करते। पुराने चयन को अस्वीकार करने के लिए --expect-revision का उपयोग करें। सफल बैच एक अनडू चरण होते हैं, जिसमें सहेजने/पुनः खोलने के बाद भी शामिल है। GUI रिफ्रेश बैच में होते हैं। अप्रत्याशित रनटाइम/लिसनर त्रुटियाँ अभी भी आंशिक लेनदेन छोड़ सकती हैं; त्रुटि पूरी हुई ऑपरेशनों की रिपोर्ट करती है और अनडू उस समूह को पूर्ववत करता है, जैसा कि edit apply के साथ होता है।
प्रोफाइल
प्रोफाइल खोजें और बिना IDs का अनुमान लगाए आयातित वीडियो से मेल करें:
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}}'
कैटलॉग प्रविष्टियों में स्थिर IDs, विवरण, आयाम, युक्तिसंगत FPS, पहलू अनुपात, और स्कैन सेटिंग्स शामिल हैं। सूची/खोज पृष्ठित होती है। स्रोत मिलान सटीक IDs और स्पष्ट अंतर के साथ रैंक किए गए विकल्प लौटाता है। फ़ाइल से सेटिंग के लिए सटीक मेल आवश्यक है जब तक कि --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 डिफ़ॉल्ट रूप से उपयोग किए गए ट्रैकों, ऑब्जेक्ट IDs, टाइमलाइन/स्रोत अंतराल, स्ट्रीम स्थिति, गेन, और गैप/ओवरलैप के साथ संक्षिप्त टेक्स्ट होता है। विवरण चुनने के लिए --detail summary|clips|full का उपयोग करें, संरचित संदर्भ के लिए --format json, और परिणाम पर ध्यान केंद्रित करने के लिए --start/--end, --layer, और पेजिनेशन।
timeline overview छवि बाइट्स के बिना संक्षिप्त संरचित संदर्भ प्रदान करता है: क्रमबद्ध IDs, प्रति ट्रैक अनुक्रम, टाइमलाइन/स्रोत अंतराल, दृश्य ट्रिम रेंज, फ्रेम निर्देशांक, ऑडियो/वीडियो स्थिति, प्रभाव, और पड़ोसी गैप या ओवरलैप। अंतराल और फ्रेम स्पैन अंत-विशिष्ट हैं; फ्रेम नंबर एक-आधारित हैं। स्रोत फ्रेम स्रोत 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 इसे स्पष्ट रूप से चुनता है। कैप्चर संपादक के व्यूपोर्ट या प्रोजेक्ट को नहीं बदलता। प्रतिक्रियाओं में क्लिप आईडी और समय के साथ पिक्सेल सीमाएँ शामिल होती हैं।
छवियाँ डिफ़ॉल्ट रूप से 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 आकार शामिल होते हैं। निरीक्षण छवि के समाप्त होने का इंतजार करता है, और बड़े अनुरोध अस्थायी रूप से संपादक को व्यस्त कर सकते हैं।
कमांड टाइमआउट को संभालना
एक अनुरोध टाइमआउट का मतलब यह नहीं है कि परिवर्तन विफल हो गया। पुनः प्रयास करने से पहले त्रुटि में ऑपरेशन आईडी का उपयोग करें operation get ID के साथ। operation list हाल के परिवर्तनों और उनकी स्थितियों, संशोधनों, और परिणामों का पता लगाता है। पूर्ण ऑपरेशन अपने परिणाम तब तक रखते हैं जब वे छोटे हों, जिसमें लौटाए गए ऑब्जेक्ट आईडी शामिल हैं। संग्रहण 100 ऑपरेशनों और 4 MiB तक सीमित है, और 256 KiB से ऊपर के व्यक्तिगत परिणाम निकायों को छोड़ दिया जाता है। ये रिकॉर्ड केवल चल रहे सत्र के लिए रहते हैं। वे क्रैश के बाद प्रोजेक्ट्स को पुनर्स्थापित नहीं करते या एक ही संपादन को दोहराए गए कमांड से लागू होने से नहीं रोकते। एक्सपोर्ट जॉब्स के अपने स्वयं के स्थिति/सूची कमांड होते हैं।