जबकि मुझे कहना होगा कि यह "आवश्यकता" काफी अजीब है, कुछ भी असंभव नहीं है। आप इसे एक छोटी स्क्रिप्ट के साथ प्राप्त कर सकते हैं, जैसा कि मैं नीचे दिखाने जा रहा हूं।
तैयारी
सबसे पहले, हमें कुछ उपकरण स्थापित करने की आवश्यकता है। ये xdotool
टाइपिंग एमुलेशन और विंडो कंट्रोल और byzanz
वीडियो रिकॉर्डिंग के लिए हैं। उनका उपयोग करके स्थापित करें:
sudo apt install xdotool byzanz
अगला, इस उत्तर के अंत में कोड को कॉपी करें और इसे अपनी मशीन पर bash स्क्रिप्ट के रूप में सहेजें, जैसे ~/bin/typerec
। यदि आप इसे अपने फ़ोल्डर में संग्रहीत करते हैं $PATH
, तो आप इसका पथ निर्दिष्ट किए बिना इसे निष्पादित कर पाएंगे। उपयोग करने के बाद इसे निष्पादन योग्य बनाना न भूलें chmod +x PATH/TO/SCRIPT
।
प्रयोग
अब एक विशिष्ट फ़ाइल की टाइपिंग रिकॉर्ड करने के लिए, पहले अपना लक्ष्य संपादक खोलें, जिसमें हम टाइप करेंगे। सुनिश्चित करें कि इसमें किसी भी प्रकार का "ऑटो इंडेंटेशन" फीचर बंद है, अन्यथा टाइप किए गए कोड का इंडेंटेशन गड़बड़ हो जाएगा!
फिर एक टर्मिनल से मेरी स्क्रिप्ट लॉन्च करें। सही सिंटैक्स है
typerec INPUT_FILE OUTPUT_FILE [DELAY]
जहाँ INPUT_FILE
आपके कोड टेक्स्ट फ़ाइल का OUTPUT_FILE
पथ है और आउटपुट फ़ाइल पथ है जहाँ रिकॉर्डिंग संग्रहीत की जाएगी। यह किसी एक्सटेंशन द्वारा स्वीकार किए जाते हैं होना आवश्यक है byzanz
, में से एक यानी gif
, webm
, ogg
, ogv
, flv
, byzanz
(बोल्ड अक्षरों में मेरी सिफारिशें)। DELAY
तर्क वैकल्पिक है और मिलीसेकेंड में दो कीस्ट्रोक्स के बीच देरी तय करता है। डिफ़ॉल्ट 20 है अगर छोड़ा गया है, तो मैं 5 से नीचे नहीं जाने की सलाह देता हूं।
उदाहरण:
typerec /path/to/my/code.py ~/Videos/code.webm 100
आपका माउस कर्सर कुछ प्रकार के क्रॉस-हेयर में बदल जाएगा (स्क्रीनशॉट में दिखाई नहीं दे रहा है) और आपको एक अधिसूचना बुलबुला मिलेगा, जो आपको लक्ष्य संपादक विंडो पर क्लिक करने के लिए कहेगा:
जैसा कि आपको बताया गया है, वैसे करें, लेकिन सावधान रहें ! यदि आप रिकॉर्डिंग शुरू नहीं करना चाहते हैं, तो तुरंत Ctrl+ हिट करें C, जबकि टर्मिनल अभी भी केंद्रित है और कहीं भी क्लिक करने से पहले।
चेतावनी!
जैसे ही आप कहीं भी क्लिक करते हैं, स्क्रिप्ट उस विंडो पर ध्यान केंद्रित करेगी और बाद में आपके इनपुट दस्तावेज़ को टाइप करने के लिए सभी कीस्ट्रोक का अनुकरण करना शुरू कर देगी। यह रुकने योग्य नहीं है! एक बार जब यह शुरू हो जाता है, तो अपने कीबोर्ड को स्पर्श न करें या समाप्त होने तक कहीं भी क्लिक करें! अन्यथा आपका इनपुट उत्सर्जित इनपुट के साथ मिश्रित होगा और अनजाने कार्यों को ट्रिगर कर सकता है, जैसे अन्य विंडो को खोलना / फोकस करना या कीबोर्ड शॉर्टकट सक्रिय करना। आपको तब तक इंतजार करना होगा जब तक कि यह अपने आप बंद न हो जाए!
बस। एक बार जब स्क्रिप्ट समाप्त हो गई (ध्यान दें कि रिकॉर्डिंग पूरी होने के बाद, वीडियो को प्रस्तुत करने और सहेजने के लिए अभी भी कुछ और सेकंड की आवश्यकता हो सकती है), आप रिकॉर्ड किए गए वीडियो को खोल सकते हैं और परिणामों की जांच कर सकते हैं।
यहाँ स्क्रिप्ट है:
#!/bin/bash
THIS="$(basename "$0")"
INPUT_FILE="$1"
OUTPUT_FILE="$2"
DELAY="${3:-20}"
show_usage() {
echo " Usage: $THIS INPUT_FILE OUTPUT_FILE [DELAY]"
echo "where INPUT_FILE is the text file with the content to be typed"
echo "and OUTPUT_FILE is where the recorded video shall get saved."
echo "You can set the DELAY between keystrokes in ms (default 20)."
echo "Note that OUTPUT_FILE will be overwritten if it exists already."
echo "It must have one of the extensions {gif|webm|ogg|ogv|flv|byzanz}."
exit 1
}
if [[ -z "$INPUT_FILE" || ! -r "$INPUT_FILE" ]] ; then
echo "Missing INPUT_FILE argument or file is not existing or readable!"
show_usage
fi
if [[ -z "$OUTPUT_FILE" ]] ; then
echo "Missing OUTPUT_FILE argument!"
show_usage
fi
if [[ ! "$DELAY" -gt 0 ]] ; then
echo "Invalid argument for DELAY, must be a number > 0 or omitted."
show_usage
fi
notify-send -i "media-record" "$THIS" "Please select your target editor window."
eval $(xdotool selectwindow getwindowgeometry --shell)
if [[ -z "$WINDOW" || -z "$X" || -z "$Y" || -z "$WIDTH" || -z "$HEIGHT" ]]; then
echo "Failed to obtain all required target window information. Aborting."
exit 2
fi
TYPE_COMMAND="xdotool windowactivate --sync \"$WINDOW\" \
getactivewindow \
windowfocus --sync \
sleep 1 \
type --clearmodifiers --delay "$DELAY" \
--file <( tr \\\\n \\\\r < \"$INPUT_FILE\" )"
byzanz-record -e "bash -c '$TYPE_COMMAND'" \
-x "$X" -y "$Y" -w "$WIDTH" -h "$HEIGHT" \
"$OUTPUT_FILE" &&
echo "Recording screencast and saving to $OUTPUT_FILE finished successfully."
वैकल्पिक एक-लाइनर
आप कहीं भी स्क्रिप्ट को बचाने के लिए नहीं पसंद करते हैं, एक एक लाइनर जो आप बस टर्मिनल कि मूलतः एक ही करता है में चिपका सकते हैं (लेकिन छोड़ते हुए इनपुट पैरामीटर और सत्यापन, रिकॉर्डिंग file.txt
के रूप में typerec.gif
20 एमएस की देरी के साथ) के नीचे है। आप सही रास्तों का उपयोग करने के लिए इसे संपादित करने और यह सुनिश्चित करने के लिए ज़िम्मेदार हैं कि वहाँ सब कुछ अपने आप सही है।
( eval $(xdotool selectwindow getwindowgeometry --shell) ; byzanz-record -e "bash -c 'xdotool windowactivate --sync $WINDOW getactivewindow windowfocus --sync sleep 1 type --clearmodifiers --delay 20 --file <( tr \\\\n \\\\r < file.txt )'" -x $X -y $Y -w $WIDTH -h $HEIGHT typerec.gif )