जवाबों:
यहाँ मेरे लिए क्या काम किया गया है:
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
scaleसाथ में crop) फसल हो सकती है , जैसा कि आप केवल 1 पिक्सेल पर काट रहे हैं। स्केलिंग से चीजें धुंधली हो सकती हैं
मेरे मामले में, ffmpegसीधे चाल का उपयोग किया और सबसे अच्छा परिणाम प्रदान किया:
$ ffmpeg -f gif -i infile.gif outfile.mp4
यदि आप आउटपुट को "एन लूप्स" में बनाना चाहते हैं, तो एक शॉट में इस समाधान को देखें
तो, चलिए एक 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
MacO संस्करण निम्नानुसार है:
$ ffmpeg -i input.avi -pix_fmt yuv420p output.mp4