शिकंजास्ट की एनिमेटेड GIF छवियां कैसे बनाएं?


476

मैंने स्क्रीन कास्ट की एनिमेटेड GIF छवियों को देखा है (जैसे नीचे वाला) उत्तर को बेहतर बनाने के तरीके के रूप में इस साइट पर कुछ बार प्रचार किया।

एनिमेटेड GIF छवि

इन्हें बनाने के लिए किस टूलचिन का उपयोग किया जा रहा है? क्या कोई ऐसा कार्यक्रम है जो यह स्वचालित रूप से करता है, या लोग स्क्रैनास्ट ले रहे हैं, उन्हें स्थिर फ्रेम की एक श्रृंखला में परिवर्तित कर रहे हैं, और फिर जीआईएफ छवियां बना रहे हैं?


6
LICEcap (http://www.cockos.com/licecap) नीचे दिए गए किसी भी समाधान की तुलना में बहुत सरल है, क्योंकि यह GUI- आधारित है। यह स्वतंत्रता और कीमत के रूप में स्वतंत्र है। केवल नकारात्मक पक्ष यह है कि आपको इसे वाइन के माध्यम से चलाना होगा।
डेनिस

4
संबंधित: जीआईएफ स्क्रैंचस्टिंग; यूनिक्स और लिनक्स स्टैक एक्सचेंज से यूनिक्स रास्ता
क्रिस्टियान सियुपिटु


2
क्या यह उदाहरण स्क्रीनशॉट विंडोज पर लिया गया है?
क्लेमेंट

@ क्लेमेंट वह पहली चीज थी जिस पर मैंने भी ध्यान दिया था, :)
यूनिवर्सलीयूनीकआईडी

जवाबों:


269

झांकना

एक नया एप्लिकेशन है जो आपको अपनी स्क्रीन से जीआईएफ को आसानी से रिकॉर्ड करने देता है।

झंडे का प्रदर्शन डेमो

वैसे भी, ध्यान रखें कि GIF का रंग बहुत ही सीमित है, इसलिए उनका उपयोग करना बहुत अच्छा विचार नहीं है।

Ubuntu 18.10 के बाद से आप सीधे पीक स्थापित कर सकते हैं।

sudo apt install peek

उबंटू के पुराने संस्करणों के लिए, आप इसके पीपीए से पीक के नवीनतम संस्करण स्थापित कर सकते हैं ।

sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek

GitHub रेपो में अधिक जानकारी प्राप्त करें ।


2
हाँ यह एक महान है। इसका एकमात्र X11 के साथ काम करता है और इसे GNOME 3.
अजिथ आर नायर

2
@BeastWinterwolf और ExillustX: बग रिपोर्ट यहां पोस्ट न करें, मुद्दे ट्रैकर का उपयोग करें जहां लोग वास्तव में उन्हें देखने के बारे में परवाह करते हैं! इसे यहाँ रिपोर्ट करें: github.com/phw/peek/issues
oligofren

2
यह एक महान उपकरण है।
माइक

1
@Jop V. आपने रिकॉर्ड का रिकॉर्ड कैसे बनाया?
दूधोवस्की

1
@milkovsky मैंने इसे रिकॉर्ड नहीं किया। यह कहा गया है, मुझे लगता है कि उन्होंने एक वर्चुअल मशीन का इस्तेमाल किया और इसे रिकॉर्ड किया।
स्टॉमेस्टैक

272

byzanz

सबसे अच्छा सॉफ्टवेयर जिसे मैंने कभी भी जीआईएफ स्क्रैंकोस्ट रिकॉर्ड करने के लिए पाया है वह है बाइज़ानज़।

बीजान्ज महान है क्योंकि यह सीधे जीआईएफ में रिकॉर्ड करता है, गुणवत्ता और एफपीएस प्रभावशाली है जबकि फाइलों का आकार न्यूनतम है।

स्थापना

बायज़ान अब ब्रह्मांड भंडार से उपलब्ध है:

sudo apt-get install byzanz

प्रयोग

जब यह स्थापित हो जाता है तो आप इसे टर्मिनल में चला सकते हैं।

यह एक छोटा सा उदाहरण है जो मैंने अभी अभी किया है

byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif

यहां छवि विवरण दर्ज करें


3
धन्यवाद, अच्छा उपकरण! रंग हमेशा सटीक नहीं होते हैं, लेकिन यह एक मामूली विवरण है। मैंने एक शेल स्क्रिप्ट लिखी है जो विंडो को कैप्चर करने में मदद करता है (उपयोगकर्ता द्वारा रनटाइम पर चयनित), नीचे दिए गए उत्तर में पोस्ट किया गया है
रोब डब्ल्यू

57
Byzanz के पास कोई UI नहीं है! क्या मैं उस क्षेत्र की x, y, चौड़ाई और ऊंचाई का अनुमान लगाना चाहता हूं जिसे मैं रिकॉर्ड करना चाहता हूं? यह थोड़ा हास्यास्पद है कि 2014 में मुझे अभी भी ऐसा करना होगा।
दानस्केलस्कु

5
@DanDascalescu कोई नहीं कहता कि आपको इसका उपयोग करने की आवश्यकता है ... मैं एक GUI की तुलना में एक टर्मिनल पसंद करता हूं, इसमें क्या गलत है?
ब्रूनो परेरा

31
@DanDascalescu का अनुमान लगाने की कोई आवश्यकता नहीं है। आप xwininfoविंडो गुण प्राप्त करने के लिए उपयोग कर सकते हैं ।
मार्कस मोलर

4
अग्रिम में अवधि को जानने से बचने का कोई तरीका? रिकॉर्डिंग करते समय मुझे पहले से पता नहीं था कि कितना समय लगेगा।
निकोलस राउल

236

पहले इसे स्थापित करें:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

उन आवश्यक सामान हैं, ImageMagick, MPlayer और Desktop Recorder। फिर स्क्रीनकास्ट के रूप में उपयोग करने के लिए स्क्रीन / एप्लिकेशन के एक हिस्से पर कब्जा करने के लिए डेस्कटॉप रिकॉर्डर का उपयोग करें। बाद डेस्कटॉप रिकॉर्डर एक में रिकॉर्डिंग बचाया है ogv वीडियो , एम प्लेयर उन्हें 'उत्पादन' निर्देशिका में बचत, जेपीईजी स्क्रीनशॉट पर कब्जा करने के लिए इस्तेमाल किया जाएगा।

एक टर्मिनल पर:

mplayer -ao null <video file name> -vo jpeg:outdir=output

स्क्रीनशॉट्स को एनिमेटेड जिफ़ में बदलने के लिए ImageMagick का उपयोग करें ।

convert output/* output.gif

आप इस तरह से स्क्रीनशॉट ऑप्टिमाइज़ कर सकते हैं:

convert output.gif -fuzz 10% -layers Optimize optimised.gif

35
जिफ़ को ऑप्टिमाइज़ करने का एक और तरीका है जिफ़सील का उपयोग करना: gifsicle -O in.gif -o out.gifमैंने बस कोशिश की और फ़ाइल आकार में 100 गुना की कमी आई।
यारोगिरग

10
सोच रहे लोगों के लिए, @Yrogirg कमांड में पहला झंडा एक राजधानी "O" है, न कि अंक "0" :)
brandizzi

2
वाह, gifsicle बस मेरा तेजी से बना है, लेकिन कोई छोटा नहीं है, और कन्वर्ट ऑप्टिमाइज़ कमांड ने इसे वास्तविक रूप से बदसूरत बना दिया है।
मैल्कमऑनियन

6
मैं अंतिम दो convertचरणों को एक में मिलाने की सलाह देता हूं convert output/* -layers Optimize output.gif:। मेरे लिए, इस प्रसंस्करण समय के साथ-साथ आउटपुट फ़ाइल को छोटा किया गया। मुझे उन चरणों को अलग से करने का कोई कारण नहीं दिखता है। (मैंने -fuzz 10%तर्क की कोशिश नहीं की ।)
जोशवॉल्फ

1
@MalcolmOcean की तरह, convertबयान ने इसे गुप्त से परे बना दिया। डॉक्स ( imagemagick.org/script/command-line-options.php#layers ) के अनुसार , optimizeकार्यान्वयन समय के साथ बदल सकता है। लेकिन झंडे के convertसाथ थोड़ा -coalesceसुधरा हुआ बयान चीजों को बेहतर बनाता है, लेकिन फिर भी जहां यह स्वीकार्य नहीं था। मैंने -layers optimize-transparencyसर्वोत्तम परिणामों के लिए सेटिंग का उपयोग करने के लिए समाप्त कर दिया :convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif

136

अवलोकन

इस उत्तर में तीन शेल स्क्रिप्ट हैं:

  1. byzanz-record-window - रिकॉर्डिंग के लिए एक विंडो का चयन करने के लिए।
  2. byzanz-record-region - रिकॉर्डिंग के लिए स्क्रीन के एक हिस्से का चयन करने के लिए।
  3. MHC द्वारा 1 के लिए एक साधारण जीयूआई फ्रंट-एंड ।

परिचय

धन्यवाद ब्रूनो परेरा ने मुझे परिचय देने के लिएbyzanz ! यह GIF एनिमेशन बनाने के लिए काफी उपयोगी है। कुछ मामलों में रंग बंद हो सकते हैं, लेकिन फ़ाइल का आकार इसके लिए बनाता है। उदाहरण: 40 सेकंड, 3.7Mb

प्रयोग

अपने फ़ोल्डर में निम्नलिखित दो लिपियों में से एक / सभी को सहेजें $PATH। यहां एक विशिष्ट विंडो का एक स्क्रीनकास्ट बनाने के लिए पहली स्क्रिप्ट का उपयोग करने पर एक उदाहरण दिया गया है।

  1. Daud byzanz-record-window 30 -c output.gif
  2. उस विंडो (ऑल्ट-टैब) पर जाएं जिसे आप कैप्चर करना चाहते हैं। इस पर क्लिक करें।
  3. 10 सेकंड प्रतीक्षा करें (हार्ड-कोडेड इन $DELAY), जिसमें आप रिकॉर्डिंग की तैयारी करते हैं।
  4. बीप ( beepफ़ंक्शन में परिभाषित ) के बाद, byzanzशुरू होगा।
  5. 30 सेकंड के बाद (यह 30चरण 1 में अर्थ है ), byzanzसमाप्त होता है। एक बीप फिर से प्रसारित किया जाएगा।

मैंने यह वर्णन करने के लिए -cध्वज को शामिल किया byzanz-record-windowकि मेरी शेल स्क्रिप्ट के किसी भी तर्क को byzanz-recordखुद से जोड़ा जाता है। -cध्वज बताता byzanzभी स्क्रीनकास्ट में कर्सर शामिल करने के लिए। अधिक जानकारी के लिए
देखें man byzanz-recordया byzanz-record --help

byzanz-record-window

#!/bin/bash

# Delay before starting
DELAY=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Duration and output file
if [ $# -gt 0 ]; then
    D="--duration=$@"
else
    echo Default recording duration 10s to /tmp/recorded.gif
    D="--duration=10 /tmp/recorded.gif"
fi
XWININFO=$(xwininfo)
read X <<< $(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y <<< $(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W <<< $(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H <<< $(awk -F: '/Height/{print $2}' <<< "$XWININFO")

echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
    echo $i
    sleep 1
done

beep
byzanz-record --verbose --delay=0 --x=$X --y=$Y --width=$W --height=$H $D
beep

byzanz-record-region

निर्भरता: xrectselसे xrectsel । रिपॉजिटरी को क्लोन करें और makeनिष्पादन योग्य प्राप्त करने के लिए चलाएं । (यदि यह विरोध करता है कि कोई मेकफिल, रन नहीं है ./bootstrapऔर ./configureरनिंग से पहले `मेक) है।

#!/bin/bash

# Delay before starting
DELAY=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Duration and output file
if [ $# -gt 0 ]; then
    D="--duration=$@"
else
    echo Default recording duration 10s to /tmp/recorded.gif
    D="--duration=10 /tmp/recorded.gif"
fi

# xrectsel from https://github.com/lolilolicon/xrectsel
ARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1

echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
    echo $i
    sleep 1
done
beep
byzanz-record --verbose --delay=0 ${ARGUMENTS} $D
beep

का गुई संस्करण byzanz-record-window

( एमएचसी द्वारा टिप्पणी ): मैंने स्क्रिप्ट को सरल जीयूआई संवाद के साथ संशोधित करने की स्वतंत्रता ली है

#!/bin/bash

# AUTHOR:   (c) Rob W 2012, modified by MHC (https://askubuntu.com/users/81372/mhc)
# NAME:     GIFRecord 0.1
# DESCRIPTION:  A script to record GIF screencasts.
# LICENSE:  GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES:   byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd)

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Delay before starting
DELAY=10

# Standard screencast folder
FOLDER="$HOME/Pictures"

# Default recording duration
DEFDUR=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

# Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")

# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif"
beep

# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"

17
क्या इन लिपियों को गितुब की तरह कहीं रखा गया है? वे सुपर उपयोगी हैं, यह अच्छा होगा अगर उन्हें स्टैकऑवरफ्लो उत्तर में पाठ से कहीं बेहतर रखा गया।
KFro

1
@KFro यह उबंटू पूछो, एसओ नहीं;) नहीं, मैंने उन्हें गिट रिपॉजिटरी में नहीं डाला है, क्योंकि स्क्रिप्ट खुद बुरी तरह से प्रलेखित हैं (उपयोगकर्ताओं के लिए)। साथ में प्रलेखन उत्तर के साथ शामिल किया गया है, इसलिए मुझे फ़ाइलों और प्रलेखन को एक जीआईटी भंडार में विभाजित करने का कोई लाभ नहीं दिखता है।
Rob W

1
संपादन का कोई और श्रेय नहीं, लेकिन किया ;-)
रमनो

2
बस इसके लिए एक बहुत बड़ा धन्यवाद कहना चाहता था - भयानक जवाब और मेरी बहुत मदद की। यहाँ है क्या मैं के साथ समाप्त हुआ। मुझे notify-sendमेरी आवाज बंद होने की स्थिति में भी उपयोग करना पसंद है।
डैनियल बकमास्टर

2
@ मासी बायज़ान - और ये स्क्रिप्ट - मेरे लिए १६.०४ में ठीक काम करती हैं
जेफ पकेट

51

ffmpeg Ffmpeg स्थापित करें

मेरे द्वारा उपयोग किए जाने वाले सर्वोत्तम उपकरणों में से एक है ffmpeg। यह अधिकांश वीडियो को एक स्क्रीनकास्ट टूल से ले सकता है जैसे कि kazamऔर इसे दूसरे प्रारूप में परिवर्तित करना।

से स्थापित सॉफ्टवेयर सेंटर आप उत्कृष्ट स्थापित करता है, तो यह स्वचालित रूप से स्थापित किया गया है - ubuntu-restricted-extrasपैकेज।

कज़ाम वीडियो प्रारूपों में आउटपुट कर सकता है mp4या webm। आम तौर पर आपको mp4प्रारूप में बेहतर परिणाम मिलते हैं ।

उदाहरण वाक्यविन्यास बनाने GIF

वीडियो को gif में बदलने का मूल सिंटैक्स है:

ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]

GIF परिवर्तित - विशेष रूप से 25/29 फ्रेम-प्रति-सेकंड वाले वे बहुत बड़े हो सकते हैं। उदाहरण के लिए - 25fps पर एक 800Kb वेब 15 सेकंड का वीडियो 435Mb तक आउटपुट कर सकता है!

आप इसे कई तरीकों से कम कर सकते हैं:

फ्रेम रेट

विकल्प का उपयोग करें -r [frame-per-second]

उदाहरण के लिए ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

आकार 435Mb से घटकर 19Mb हो गया

फ़ाइल का आकार सीमा

विकल्प का उपयोग करें -fs [filesize]

उदाहरण के लिए ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

नोट - यह एक अनुमानित आउटपुट फ़ाइल आकार है, इसलिए आकार निर्दिष्ट से थोड़ा बड़ा हो सकता है।

आउटपुट वीडियो का आकार

विकल्प का उपयोग करें -s [widthxheight]

उदाहरण के लिए ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

इसने 1366x768 वीडियो का आकार घटाकर 26Mb कर दिया

हमेशा के लिए पाश

कभी-कभी आप चाहते हैं कि GIF हमेशा के लिए बंद हो जाए।

विकल्प का उपयोग करें -loop_output 0

ffmpeg -i Untitled_Screencast.webm -loop_output 0 -pix_fmt rgb24 out.gif

आगे अनुकूलन और सिकुड़ना

यदि आप imagemagick convert3% और 10% के बीच फ़ज़ी फ़ैक्टर का उपयोग करते हैं तो आप नाटकीय रूप से छवि का आकार कम कर सकते हैं

convert output.gif -fuzz 3% -layers Optimize finalgif.gif

आखिरकार

पूछो Ubuntu के लिए प्रबंधनीय कुछ को कम करने के लिए इन विकल्पों में से कुछ को मिलाएं।

ffmpeg -i Untitled_Screencast.webm -loop_output 0 -r 5 -s 320x200 -pix_fmt rgb24 out.gif

के बाद

convert output.gif -fuzz 8% -layers Optimize finalgif.gif

उदाहरण

यहां छवि विवरण दर्ज करें


आप डोकर है और अगर आपका वीडियो demo.mkv: यदि आप इस आदेश चला सकते हैं docker run --rm -v $(pwd):/tmp/video/ jrottenberg/ffmpeg -i /tmp/video/demo.mkv -framerate 1/2 -pix_fmt rgb24 -loop 0 /tmp/video/demo.gif,sudo chown $USER:$USER demo.gif
czerasz

2
मेरे लिए यह शिकायत है कि ऐसा कोई विकल्प नहीं है -loop_output...

1
+1 उत्तम उत्तर। लेकिन क्या आपको लगता ubuntu-restricted-extrasहै कि एक q उत्कृष्ट है ??
सेवेरस टक्स

1
@PranoidPanda अब विकल्प है -loop। तो यह होगा -loop 0। यहाँ Ubuntu 16.04.01 में एक काम कर रहा है ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif+500,500100x100 आयत शुरू करने के लिए X, Y स्थिति है। xgrabइनपुट के रूप में स्क्रीन लेता है।
sanbor

34

Silentcast

एनिमेटेड .gif छवियां बनाने के लिए साइलेंटकास्ट एक और बढ़िया gui आधारित टूल है। इसकी विशेषताओं में शामिल हैं:

  • 4 रिकॉर्डिंग मोड:

    1. पूरी स्क्रीन

    2. खिड़की के अंदर

    3. सजावट के साथ खिड़की

    4. कस्टम चयन

  • 3 आउटपुट स्वरूप:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (फ्रेम)

    5. .mkv

  • कोई स्थापना आवश्यक (पोर्टेबल)

  • कस्टम वर्किंग डायरेक्टरी

  • कस्टम एफपीएस

स्थापना

यदि आप एक नियमित स्थापना चाहते हैं और उबंटू का समर्थित संस्करण चला रहे हैं तो आप पीपीए द्वारा साइलेंटकास्ट को स्थापित कर सकते हैं:

sudo add-apt-repository ppa:sethj/silentcast  
sudo apt-get update  
sudo apt-get install silentcast  

यदि आप उबंटू का समर्थित संस्करण नहीं चला रहे हैं (आपको वास्तव में अपग्रेड करना चाहिए!) आपको GitHub पृष्ठ से नवीनतम संस्करण डाउनलोड करना होगा और निर्भरता को मैन्युअल रूप से संतुष्ट करना होगा (आप क्रमशः और यद और ffmpeg को यहां और यहां से खरीद सकते हैं) या, यदि आप 13.10 जैसे थोड़ा और हालिया संस्करण चला रहे हैं, तो आप सीधे .deb डाउनलोड करने का प्रयास कर सकते हैं

यदि आप सूक्ति का उपयोग कर रहे हैं, तो आप साइलेंटकास्ट को रोकना आसान बनाने के लिए टॉपिकंस एक्सटेंशन स्थापित करना चाहते हैं।

प्रयोग

अपने डेस्कटॉप वातावरण के gui से साइलेंटकास्ट शुरू करें या silentcastटर्मिनल में कमांड चलाएं । अपनी सेटिंग्स चुनें और ऑन-स्क्रीन संकेतों का पालन करें। जब आप रिकॉर्डिंग कर लेते हैं, तो आपको कुछ निश्चित फ़्रेमों को हटाकर अंतिम आउटपुट के अनुकूलन के लिए एक संवाद के साथ प्रस्तुत किया जाएगा।

गहराई से उपयोग के दिशानिर्देशों के लिए, README पर एक नज़र डालें, या तो ऑनलाइन GitHub संस्करण या स्थानीय संस्करण जो /usr/share/doc/silentcastकि बिना या आपके पसंदीदा संपादक के साथ संग्रहीत है ।

उदाहरण

टिप्पणियाँ:

साइलेंटकास्ट अभी भी विकास के चरण में है और हालांकि यह काफी स्थिर है आप कुछ बग का सामना कर सकते हैं। यदि आप परियोजना के GitHub मुद्दों पर नजर रखते हैं, तो कृपया उन्हें रिपोर्ट करें । यदि आपको PPA से इंस्टॉल करने में समस्या है और Ubuntu का एक समर्थित संस्करण चला रहे हैं, तो नीचे टिप्पणी छोड़ें या लॉन्चपैड पर अनुचर (मुझे) से संपर्क करें


जैसे ही मैंने 'स्टॉप' मारा, यह दुर्घटनाग्रस्त हो गया ...
फ्रांसिस्को कोरलस मोरालेस

@FranciscoCorralesMorales क्या आप इसे कमांड-लाइन से चला सकते हैं और फिर कोशिश कर सकते हैं? एक बार जब यह क्रैश हो जाता है तो आउटपुट लेते हैं और इसे paste.ubuntu.com पर अपलोड करते हैं और इसे यहाँ वापस लिंक करते हैं ताकि मैं देख सकूँ । धन्यवाद!
सेठ

1
मैं इस काम की पुष्टि कर सकता हूँ! यह खुले खिड़कियों इस जवाब में दिखाया गया के रूप में के बाहर महान संकल्प के साथ एक बहुत छोटे (650 KB) फ़ाइल .gif बनाता है: askubuntu.com/questions/882419/... मैं ए.यू. में पोस्टर जोड़ सकते हैं @Seth एक महान पुरुष है और मदद की मुझे सामान्य चैट रूम ने इसे सेट किया :)
विनयुनुच्स

क्या परियोजना को छोड़ दिया गया है? लगभग दो वर्षों में रिपॉजिटरी में कोई कमिट नहीं किया गया है।
फ्लक्स

@ दुर्भाग्य से, स्वास्थ्य समस्याओं और यूनी के बीच, हाँ। वर्तमान में भंडार को छोड़ दिया गया है। GitHub पर परियोजना हालांकि, नहीं है और आप वहां नवीनतम कोड प्राप्त कर सकते हैं।
सेठ

8

यहां सूचीबद्ध करने के लिए सभी प्रकार के जटिल और अच्छी तरह से काम करने वाले (संभवतः) तरीके हैं। हालांकि, मैं पहले कभी नहीं और न ही उस प्रक्रिया से गुजरना चाहता था। इसलिए, मैं बस एक ऑनलाइन कनवर्टर का उपयोग करता हूं जो मेरी जरूरतों के अनुरूप है, ऐसा करने की आवश्यकता है। मैंने इस साइट का उपयोग किया है:

http://ezgif.com/video-to-gif

यह मेरी साइट नहीं है और मैं किसी भी तरह से उनके साथ संबद्ध नहीं हूं। वे मेरे बुकमार्क में सिर्फ एक हैं और कई और हैं।


मुझे यह पसंद हे। मैं पहले से ही अपने डेस्कटॉप को यूट्यूब पर रिकॉर्ड करने के लिए सिमस्क्रीनस्क्रीनकॉर्डर का उपयोग करता हूं, इसलिए mkv को जिफ़ में बदलना इस तरह आसान था।
isaaclw

8

मैंने बनाया record-gif.sh, रोब डब्ल्यू काbyzanz-record-region एक बेहतर संस्करण :

के लिए एक लंगड़ा GUI byzanz, उपयोगकर्ता अनुभव ( माउस-चयन क्षेत्र , रिकॉर्ड प्रगति बार, फिर से सक्षम रिकॉर्डिंग ) में सुधार हुआ ।

शेल के साथ रिकॉर्ड डेस्कटॉप

  • रिकॉर्डिंग सेट करें duration;
  • save_asगंतव्य निर्धारित करें ;
  • माउस के साथ-रिकॉर्ड करने के लिए क्षेत्र का चयन करें ;
  • रिकॉर्डिंग (cf. $HOME/record.again) फिर से खेलना करने के लिए एक स्क्रिप्ट बनाएँ

इंस्टॉल करें I

मैंने एक इंस्टॉलेशन स्क्रिप्ट भी बनाई

curl --location https://git.io/record-gif.sh | bash -

1
आपको sudo apt install autoconf byzanzइस स्क्रिप्ट को चलाने से पहले करना होगा । यह ubuntu
Crantisz

@Crantisz धन्यवाद, मैंने स्थापित स्क्रिप्ट को स्थापित करने के लिए अद्यतन किया autoconfऔर byzanz। क्या आप इसे आजमा सकते हैं?
atdouard लोपेज

मैंने इसे अन्य पीसी पर परीक्षण किया। मेरे ताजा-स्थापित ubuntu प्रणाली पर git नहीं है। और मुझे पता नहीं क्यों, लेकिन स्क्रिप्ट सेकंड के बाद ही बंद हो जाती है Y / N सवाल। क्या आप सभी आदेशों को एक आदेश में पैक कर सकते हैं?
Crantisz

@Crantisz आदेश एक इंस्टॉलर स्क्रिप्ट है, अगर आप सिर्फ record-gif.sh चाहते आप कर सकते हैं यह रेपो से मिलता है
एडवर्ड लोपेज

4
  1. इन 3 पैकेजों को स्थापित करें: imagemagick mplayer gtk-recordmydesktop
  2. स्क्रीनकास्ट के रूप में उपयोग करने के लिए स्क्रीन / एप्लिकेशन के एक हिस्से पर कब्जा करने के लिए डेस्कटॉप रिकॉर्डर चलाएं
  3. Https://github.com/nicolas-raoul/ogv2gifogv2gif.sh से डाउनलोड करें
  4. Daud: ./ogv2gif.sh yourscreencast.ogv
  5. GIF फाइल को उसी डायरेक्टरी में रखा जाएगा

100% maniat1k के उत्तर से प्रेरित है ।


3

यदि आप भी कट्टरता प्राप्त करना चाहते हैं, तो आप HTMl5 कैनवास स्क्रैचस्टिंग का उपयोग करके एनिमेटेड gif की तुलना में अधिक परिष्कृत विधि का उपयोग कर सकते हैं। X11-कैनवास-स्क्रीनकास्ट परियोजना एक HTML5 कैनवास एनिमेटेड स्क्रीन कैप्चर पैदा करेगा।

इस तकनीक के कुछ प्रसिद्ध उदाहरण आपने सब्बल टेक्स्ट वेबसाइट पर देखे होंगे । x11-canvas-screencastमाउस कर्सर की ट्रैकिंग को शामिल करके इस विधि को एक कदम आगे ले जाता है। यहाँ x11-कैनवस-स्क्रेंकास्ट के उत्पादन का एक डेमो दिया गया है

परिणाम एक एनिमेटेड जिफ़ से बेहतर है क्योंकि यह उन रंगों की संख्या तक सीमित नहीं है जिनके पास कम बैंडविड्थ है।


1
यह अच्छा है और सभी लेकिन आप इसे आसानी से साझा नहीं कर सकते हैं, जैसे स्लैक, ट्विटर आदि
एलिजा लिन

@ एलिजा लायन बहुत सच्चा। यह समाधान उच्च फ्रेम दर, कम बैंडविड्थ, पूर्ण रंग गहराई के लिए अनुकूलित है। यह पोर्टेबल नहीं है (उदाहरण के लिए एक ट्वीट में एम्बेड करना) क्योंकि इसमें जावास्क्रिप्ट की आवश्यकता होती है।
जीन_वुड

3

ठीक है, इसलिए माउस क्लिक पर भी कब्जा करने के लिए, केवल एक चीज मुझे मिली key-mon(README के ​​माध्यम से screenkey):

तब मैं:

  • शुरू key-mon
  • xrectselस्क्रीन निर्देशांकों को एक byzanzकमांड में लाने के लिए उपयोग करें
  • byzanzकमांड चलाएं

... और यह इस तरह दिखता है:

out.gif

ध्यान दें कि key-mon --visible_clickमाउस क्लिक पर माउस पॉइंटर के चारों ओर एक घेरा होगा - जिसे मैं पसंद करूंगा, लेकिन उबंटू में 14.04.5 LTS यह कुछ हद तक टूटा हुआ है, क्योंकि यह सर्कल दिखाई नहीं देता है और क्लिकों को सही ढंग से चित्रित करने के लिए तेजी से गायब हो जाता है (यानी माउस प्रेस और रिलीज)।


2

मैंने हाल ही में यहां पहले से ही पोस्ट की गई स्क्रिप्ट्स का संयुक्त संस्करण बनाया है।
असल में, यह आपको स्क्रीन क्षेत्र को रिकॉर्ड करने की अनुमति देता है, लेकिन सरल जीयूआई के साथ।

उन शांत स्क्रिप्ट प्रदान करने के लिए रोब डब्ल्यू के लिए धन्यवाद

यहाँ कोड (या है सार यदि आप चाहें):

#!/bin/bash

#Records selected screen region, with GUI

#This is combined version of GIF recording scripts, that can be found here: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
#Thanks to Rob W, and the other author (unmentioned), for creating this lovely scripts

#I do not own any rights to code I didn't write
#                                     ~Jacajack

DELAY=5 #Delay before starting
DEFDUR=10 #Default recording duration
TIME=$(date +"%Y-%m-%d_%H%M%S") #Timestamp
FOLDER="$HOME/Pictures/Byzanz" #Default output directory

#Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

#Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

#Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

#Get coordinates using xrectsel from https://github.com/lolilolicon/xrectsel
REGION=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1

notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

for (( i=$DELAY; i>0; --i )) ; do
    sleep 1
done

#Record
beep
byzanz-record --cursor --verbose --delay=0 ${REGION} --duration=$D "$FOLDER/byzanz-record-region-$TIME.gif"
beep

notify-send "GIFRecorder" "Screencast saved to $FOLDER/byzanz-record-region-$TIME.gif"

2

यदि आप भी माउस क्लिक या कुंजी स्ट्रोक की दृश्यमान रिकॉर्डिंग चाहते हैं, तो स्क्रीनकी आपकी सबसे अच्छी शर्त है: https://github.com/waveb/bkey


2
मैं नहीं देखता कि screenkeyमाउस क्लिक को कैसे हैंडल किया जाएगा (यह केवल कीबोर्ड इंडिकेशन के लिए लगता है), हालांकि, इसका README संदर्भित करता key-monहै कि ऐसा कर सकते हैं, नीचे मेरा जवाब देखें।
सादाउ

1

उपयोग gtk-recordmydesktopऔर ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

चलाएँ RecordMyDesktop स्क्रीनकेन के एक हिस्से / एप्लिकेशन को स्क्रीनकास्ट के रूप में उपयोग करने के लिए कैप्चर करें:

gtk-recordmydesktop

ogv2gif.shनिम्नलिखित सामग्री के साथ बनाएँ :

INPUT_FILE=$1
FPS=15
WIDTH=320
TEMP_FILE_PATH="~/tmp.png"
ffmpeg -i $INPUT_FILE -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen $TEMP_FILE_PATH
ffmpeg -i $INPUT_FILE -i $TEMP_FILE_PATH -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" $INPUT_FILE.gif
rm $TEMP_FILE_PATH

इसका इस्तेमाल करें :

./ogv2gif.sh yourscreencast.ogv

संदर्भ:


1

मैं सभी उपरोक्त विधि का परीक्षण करता हूं, सबसे सरल पाया गया है:

  1. ओजीवी पाने के लिए gtk-recordmydesktop और की-मोन का उपयोग करें
  2. ffmpeg -i xx.ogv xx.gif <- बिना किसी पैरामीटर के

एफपीएस मूल है, और जीआईएफ आकार ओगव फ़ाइल से कम है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.