मैं कमांड लाइन पर एक एनिमेटेड gif को mp4 या mv4 में कैसे परिवर्तित करूं?


79

क्या मैं एक mp4 या mv4 वीडियो फ़ाइल को एनिमेटेड gif में परिवर्तित करने के लिए उपयोग करूंगा, और इसके विपरीत। यही है, एक एनिमेटेड GIF को mp4 या mv4 में बदलें।

जवाबों:


107

यहाँ मेरे लिए क्या काम किया गया है:

ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4

Movflags - यह विकल्प MP4 फ़ाइल की संरचना का अनुकूलन करता है ताकि ब्राउज़र इसे जितनी जल्दी हो सके लोड कर सके।

Pix_fmt - MP4 वीडियो विभिन्न स्वरूपों में पिक्सेल संग्रहीत करते हैं। हम एक विशिष्ट प्रारूप निर्दिष्ट करने के लिए इस विकल्प को शामिल करते हैं जिसमें सभी ब्राउज़रों में अधिकतम संगतता है।

vf - H.264 का उपयोग करने वाले MP4 वीडियो को आयामों की आवश्यकता होती है जो 2 से विभाज्य हैं। यह विकल्प यह सुनिश्चित करता है कि मामला हो।

स्रोत: http://rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video


4
धन्यवाद यह एकमात्र संस्करण है जिसने मेरे लिए ओएक्सएक्स पर काम किया है।
पाइक्लर

1
इसने मेरे लिए Ubuntu 16.10 पर ffmpeg 3.0.2 के साथ काम किया, जहाँ शीर्ष उत्तर नहीं दिया
cat

1
स्केलिंग की जगह ( scaleसाथ में crop) फसल हो सकती है , जैसा कि आप केवल 1 पिक्सेल पर काट रहे हैं। स्केलिंग से चीजें धुंधली हो सकती हैं
Jezzamon

यह मेरे लिए पिछले कुछ सेकंड काट दिया। परिणामी mp4 जल्दी समाप्त हो गया।
13

38

मेरे मामले में, ffmpegसीधे चाल का उपयोग किया और सबसे अच्छा परिणाम प्रदान किया:

$ ffmpeg -f gif -i infile.gif outfile.mp4

2
ओएस एक्स पर एक खाली (दूषित) वीडियो का उत्पादन किया
पाइकलर

2
@ पाइक्लर आपको संभवतः वर्बोसिटी बढ़ाना चाहिए और / या लॉग फाइल को समझने के लिए जांचें कि क्या हो रहा है।
BenC

मुझे भी, शायद "2 आयामों से विभाज्य" विको वॉल्ट के जवाब में सुझाव दिया गया है। (जो मेरे लिए काम करता है)
लैपो

इस विधि ने मेरे लिए पूरी तरह से काम किया। (शीर्ष उत्तर का अंत होने में 3 सेकंड का समय
लगने का

एक वेब पेज कहता है कि आपको बस जोड़ना चाहिए -pix_fmt yuv420p
beefeather

2

GIF एनीमेशन को वीडियो में बदलने का दूसरा तरीका:

ffmpeg -i your_gif.gif -c:v libvpx -crf 12 -b:v 500K output.mp4

-rf मान 4 से 63 तक जा सकते हैं। निम्न मान का अर्थ बेहतर गुणवत्ता है। -b: v अधिकतम अनुमत बिटरेट है। उच्च का मतलब बेहतर गुणवत्ता।


2

यदि आप आउटपुट को "एन लूप्स" में बनाना चाहते हैं, तो एक शॉट में इस समाधान को देखें

तो, चलिए एक normal.gif को loop.mp4 में बदलते हैं

2 छोरों फिल्म उदाहरण के लिए:

ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y

5 छोरों फिल्म उदाहरण के लिए:

ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y

BE AWARE: एक -y है [ओवरराइट के लिए]


यदि आप बिना इसके पहले ffmpegकमांड चलाते हैं , तो आपके पास गलती से कुछ लिखने की संभावना कम है, जो आप नहीं चाहते हैं। (वहाँ भी शायद अपने आप में वीडियो पाइप करने के लिए एक तरीका है, और मध्यवर्ती फ़ाइल और ओवरराइट के बिना एक पाइप कमांड में ऐसा करें।) -yffmpeg
FeRD

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