इस प्रोजेक्ट के बारे में
# SRT व्हाइटबोर्ड एनीमेशन Skill
SRT सबटाइटल को कथा क्रम में खींचे जाने वाले व्हाइटबोर्ड हस्त-चित्रण वीडियो Skill में बदलता है। यह **ज़ोन मास्क व्यवस्था** और **स्ट्रीमिंग स्ट्रोक ड्रॉइंग** को जोड़ता है: प्रत्येक तत्व सबटाइटल के अनुसार क्रमशः प्रकट होता है, पेन की नोक क्षेत्र में लगातार स्याही डालती है, फिर धीरे-धीरे रंग जोड़ती है, और अंत में MP4 निर्यात करती है।
ज्ञान व्याख्या, कहानी वॉयसओवर, पाठ्यक्रम सबटाइटल या लघु वीडियो कॉपी को गर्म क्रीम-पीले कागज़ की पृष्ठभूमि वाले हस्त-चित्रण एनीमेशन में बनाने के लिए उपयुक्त है।
## प्रभाव उदाहरण
**दृश्य: बंदर पहाड़ पर केला छीनना** —— सबटाइटल के कथा क्रम के साथ, क्रमशः नकली पहाड़ और छोटा बंदर, केला छीनने वाला बड़ा बंदर, और देख रहे बच्चों को चित्रित करता है।

मूल रेखाचित्र: [PNG देखें](examples/scene-01-monkey-mountain.png)।
## मुख्य क्षमताएँ
- SRT सबटाइटल पार्स करता है, और सुझाए गए 25–35 सेकंड की अवधि के अनुसार दृश्य विभाजित करता है
- पहले स्टोरीबोर्ड और चित्रण रणनीति आउटपुट करता है, यह सुनिश्चित करते हुए कि प्रत्येक दृश्य केवल एक मुख्य अर्थ व्यक्त करे
- स्क्रीन निर्देशांक के बजाय सबटाइटल घटनाओं के अनुसार तत्वों के लिए अर्थपूर्ण ड्रॉइंग क्रम स्थापित करता है
- `annotation.json` से क्षेत्र, समय-क्रम, सबटाइटल संबंध और ओवरलैप संरक्षण क्षेत्र प्रबंधित करता है
- प्रत्येक क्षेत्र निरंतर स्ट्रीमिंग स्ट्रोक का उपयोग करता है: पहले `ink` से रेखाचित्र बिछाता है, फिर `color` से रंग जोड़ता है
- ब्राउज़र प्रीव्यू स्टेशन में क्षेत्र, क्रम, समय और सबटाइटल संबंध समायोजित करने का समर्थन करता है
- दृश्य-दर-दृश्य रेंडरिंग और बहु-दृश्य विलय का समर्थन करता है, पूर्ण MP4 आउटपुट करता है
## कार्य प्रणाली
इस Skill की कुंजी "सबटाइटल-संचालित, चरण-दर-चरण पुष्टि" है। प्रत्येक चरण पूरा होने के बाद पुष्टि की प्रतीक्षा करता है, ताकि स्टोरीबोर्ड, रेखाचित्र या एनोटेशन अंतिम न होने पर रेंडरिंग लागत बर्बाद न हो:
1. SRT पार्स करें, स्टोरीबोर्ड और चित्रण रणनीति आउटपुट करें।
2. पुष्टि के बाद एकीकृत शैली के रेखाचित्र बनाएँ।
3. रेखाचित्र की पुष्टि के बाद, सबटाइटल और मूल चित्र के साथ एनोटेशन बनाएँ, और प्रीव्यू स्टेशन में लोड करें।
4. एनोटेशन की पुष्टि के बाद, ज़ोन और दिशा जाँच चित्र बनाएँ।
5. प्रीव्यू स्टेशन में क्षेत्र, कथा क्रम, समय-क्रम और सबटाइटल संबंध समायोजित करें और सहेजें।
6. अंतिम एनोटेशन की पुष्टि के बाद, दृश्य-दर-दृश्य MP4 रेंडर करें।
7. बहु-दृश्य परियोजना में प्रत्येक दृश्य के तैयार वीडियो की पुष्टि के बाद विलय करें।
## दृश्य विनिर्देश
- गर्म क्रीम-पीला कागज़ पृष्ठभूमि: सुझाव `#F5EBD7`
- गहरे भूरे रंग की स्केच रेखाएँ, लाल, नारंगी, नीला केवल थोड़े वैचारिक अलंकरण के रूप में
- अत्यंत सरल हस्त-चित्रण, स्वच्छ पृष्ठभूमि और पर्याप्त खाली स्थान
- दृश्य पाठ, लेबल, फोटोग्राफिक अनुभव, 3D प्रभाव या जटिल बनावट का उपयोग न करें
## स्थापना और वातावरण
Skill में स्वतंत्र Python वर्चुअल वातावरण तैयारी स्क्रिप्ट शामिल है। पहली बार चलाते समय निष्पादित करें:
```bash
python scripts/prepare_env.py --check
python scripts/prepare_env.py
```
सफल होने पर पहला कमांड `ENV_PY=<पथ>` आउटपुट करेगा; बाद की रेंडरिंग में निर्भरता अलगाव सुनिश्चित करने के लिए उसी इंटरप्रेटर का उपयोग करें।
## परियोजना सामग्री संरचना
```text
assets/whiteboard/<परियोजना नाम>/
├── scene-01-<नाम>.png
├── scene-01-<नाम>.annotation.json
├── scene-01-<नाम>-whiteboard.mp4
└── scene-01-<नाम>-preview.mp4
```
चित्र और एनोटेशन का नाम समान होना चाहिए, उदाहरण के लिए `scene-01-demo.png` के अनुरूप `scene-01-demo.annotation.json`।
## एनोटेशन प्रारूप
प्रत्येक तत्व मूल चित्र के पूर्णांक पिक्सेल निर्देशांक का उपयोग करता है, और `sequence`, `subtitle` तथा `narrativeRole` के माध्यम से सबटाइटल की घटनाओं से जुड़ता है। क्षेत्रों को "दृश्य आधार → मुख्य पात्र/वस्तु → क्रिया या परिवर्तन → प्रतिक्रिया/परिणाम" क्रम में व्यवस्थित करना चाहिए।
```json
{
"sceneId": "scene-01",
"canvas": { "width": 1672, "height": 941 },
"storyBasis": "छोटा बंदर बंदर पहाड़ पर केला लिए बैठा है, बड़ा बंदर केला छीन लेता है, बच्चे पास में देख रहे हैं।",
"sceneDurationMs": 9000,
"elements": [
{
"id": "rockery",
"label": "बंदर पहाड़ दृश्य",
"sequence": 1,
"narrativeRole": "कहानी का दृश्य आधार",
"subtitle": "छोटा बंदर बंदर पहाड़ की चोटी पर बैठा है, हाथ में केला लिए हुए।",
"type": "structure",
"region": { "x": 20, "y": 120, "width": 540, "height": 780 },
"reveal": {
"direction": "top_to_bottom",
"startMs": 300,
"durationMs": 2600,
"maskPaddingPx": 22,
"protectedRegions": []
},
"handPath": { "start": [290, 130], "end": [290, 890], "easing": "easeInOut" }
}
]
}
```
`direction` और `handPath` प्रीव्यू स्टेशन के आयताकार प्रॉक्सी के लिए हैं; अंतिम वीडियो के वास्तविक स्ट्रोक स्ट्रीमिंग रेंडरर द्वारा स्वचालित रूप से उत्पन्न होते हैं। परस्पर ढकने वाली वस्तुओं के लिए, पहले वाले तत्व के `protectedRegions` में उन क्षेत्रों को चिह्नित करें जिन्हें बाद में प्रदर्शित करना है, ताकि बाद की सामग्री समय से पहले न दिखे।
## सामान्य कमांड
सबटाइटल पार्स करें और सुझाया गया स्टोरीबोर्ड बनाएँ:
```bash
python scripts/parse_srt.py <सबटाइटल.srt> --target-sec 30 --min-sec 25 --max-sec 35
```
क्षेत्र जाँच चित्र बनाएँ:
```bash
python scripts/render_annotation_preview.py <चित्र पथ> <एनोटेशन पथ> <प्रीव्यू चित्र आउटपुट पथ>
```
`assets/preview.html` खोलें, "फ़ोल्डर खोलें" से दृश्य निर्देशिका लोड करें, फिर क्षेत्र, क्रम, समय और सबटाइटल संबंध संपादित कर सकते हैं।
एकल दृश्य रेंडर करें:
```bash
<ENV_PY> scripts/render_stream_whiteboard.py <चित्र पथ> <एनोटेशन पथ> <आउटपुट.mp4> assets/drawing-hand.png \
--ink-path grid --color-fill contour-wipe
```
बहु-दृश्य विलय करें:
```bash
<ENV_PY> scripts/merge_scenes.py --inputs दृश्य1.mp4 दृश्य2.mp4 दृश्य3.mp4 --output final.mp4
```
## गुणवत्ता जाँच
- पहला फ्रेम स्वच्छ गर्म क्रीम-पीला कागज़ की पृष्ठभूमि है, कोई समय-पूर्व रेखा नहीं दिखती
- `canvas` मूल चित्र के आकार से मेल खाता है, सभी क्षेत्र कैनवास के भीतर पूर्णांक पिक्सेल निर्देशांक हैं
- `sequence`, `startMs` सबटाइटल के कथा क्रम से मेल खाते हैं
- मध्य फ्रेम में, आरंभ न हुए क्षेत्र और संरक्षण क्षेत्र समय से पहले प्रकट नहीं होते
- पेन की नोक वर्तमान स्ट्रीमिंग स्ट्रोक के निकट है; रेखाचित्र स्पष्ट होने पर `--ink-path skeleton` चुन सकते हैं
- प्रत्येक दृश्य समाप्त होने के बाद कम से कम 0.5 सेकंड पूर्ण चित्र रुकता है; बहु-दृश्य विलय क्रम सबटाइटल स्टोरीबोर्ड से मेल खाता है
## रिपॉज़िटरी सामग्री
```text
srt-whiteboard-animation/
├── SKILL.md # पूर्ण कार्यप्रवाह और बाधाएँ
├── assets/
│ ├── drawing-hand.png # हाथ सामग्री
│ ├── preview.html # स्थानीय संपादन प्रीव्यू स्टेशन
├── examples/ # README उदाहरण सामग्री
├── scripts/
│ ├── parse_srt.py # सबटाइटल पार्सिंग और स्टोरीबोर्ड सुझाव
│ ├── render_annotation_preview.py # एनोटेशन जाँच चित्र
│ ├── render_stream_whiteboard.py # स्ट्रीमिंग स्ट्रोक MP4 रेंडरर
│ ├── merge_scenes.py # बहु-दृश्य विलय
│ └── prepare_env.py # निर्भरता वातावरण तैयारी
└── agents/openai.yaml # Codex मेटाडेटा
```
## योगदान
Issue या Pull Request सबमिट करने का स्वागत है। ड्रॉइंग लॉजिक से जुड़े किसी भी बदलाव में वास्तविक सबटाइटल, एनोटेशन और तैयार वीडियो से मास्क संरक्षण, समय-क्रम और अंतिम चित्र की जाँच करनी चाहिए।
## लाइसेंस
यह परियोजना MIT License के तहत खुला स्रोत है, विवरण [LICENSE](LICENSE) में देखें।
## लेखक के बारे में
मछली पालने वाला एक बूढ़ा आदमी / AI Builder / AI टीम से एक-व्यक्ति कंपनी बनाने वाला।
Douyin, Bilibili, WeChat सार्वजनिक खाता: 江哥是老登啊
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.