कैसे ffmpeg का उपयोग कर कुछ फ्रेम के साथ वेब के लिए पूर्वावलोकन वीडियो उत्पन्न करने के लिए?


2

केवल ffmpeg का उपयोग करके कुछ फ़्रेम के साथ वेब के लिए एक पूर्वावलोकन वीडियो कैसे उत्पन्न करें? जैसे कि जब आप माउस को वीडियो पर ले जाते हैं और वास्तविक वीडियो लोड करने से पहले पूर्वावलोकन के लिए कुछ फ्रेम खेलता है?

जवाबों:


3

बैच स्क्रिप्ट बलो ऐसा करता है। वेब के लिए अनुकूलित यह मूल वीडियो से ली गई 10 छवियों के साथ एक पूर्वावलोकन वीडियो बनाता है। प्रत्येक छवि 1s के लिए दिखाई देती है। स्क्रिप्ट को छवि के नमूने मिलते हैं, इसलिए पूर्वावलोकन वीडियो पूरे वीडियो से लिए जाते हैं।

  • केवल ffmpeg की आवश्यकता है। (और ffprobe जो ffmpeg पैकेज का हिस्सा है)

  • आउटपुट: mp4 / h.264 ~ 120Kb (मूल वीडियो आकार की परवाह किए बिना)

  • पूरी तरह से विन्यास।

  • अनुकूलित लैंजोस और फिल्टर को तेज करें।

  • मूल वीडियो के पहलू अनुपात को 16: 9 (384x216) फ्रेम में फिट करके रखता है (जब आवश्यक हो तो किनारों पर काली पट्टियाँ भरें)।

  • कोई अस्थायी फ़ाइलों का उपयोग नहीं किया। (ffmpeg से ffmpeg पर उड़ान पाइप पर)

  • एचटीएमएल 5 अनुकूल।

यहाँ केवल पूर्वावलोकन के लिए दो gif उदाहरण हैं। वास्तविक आउटपुट mp4 / h.264 है:

16: 9 वीडियो स्रोत। आउटपुट:

16: 9 वाइडस्क्रीन

4: 3 वीडियो स्रोत। आउटपुट:

4: 3 एस.डी.

विंडोज पर चलाएं लेकिन इसे आसानी से बैश स्क्रिप्ट (लिनक्स) में बदला जा सकता है।

स्क्रिप्ट एक फ़ोल्डर बनाता है ./previewजहां यह सभी उत्पन्न पूर्वावलोकन संग्रहीत करता है:

/My videos
    movie1.mp4 ~ any size
    movie2.mp4 ~ any size
    /preview
        movie1.mp4 ~ 120Kb
        movie2.mp4 ~ 120Kb 

इसे व्यक्तिगत फाइलों पर चलाने के लिए समायोजित किया जा सकता है।

previewGenerator.cmd:

REM ----------------------------------------------
set folder=C:\My videos
set vframes=10
set width=384
set height=216
    rem w = h*16/9
set filetypes=*.mp4
REM ----------------------------------------------
setlocal EnableDelayedExpansion

pushd "%folder%"
if not exist preview md preview
for /f "usebackq delims=" %%f in (`dir /b %filetypes%`) do (
    if not exist "preview\%%~nf.mp4" (  
        for /f %%i in ('ffprobe -v error -show_entries format^=duration "%%f" -of default^=noprint_wrappers^=1:nokey^=1') do set length=%%i
        set /a length=!length!+0
        set /a fps=!length!/%vframes%
        ffmpeg -threads 2 -i "%%f" -an -qscale:v 1 -vf "fps=1/!fps!, scale=iw*min(%width%/iw\,%height%/ih):ih*min(%width%/iw\,%height%/ih):flags=lanczos, pad=%width%:%height%:(%width%-iw*min(%width%/iw\,%height%/ih))/2:(%height%-ih*min(%width%/iw\,%height%/ih))/2, unsharp=5:5:0.5:5:5:0.5" -vframes %vframes% -f image2pipe -vcodec ppm - ^
        | ffmpeg -y -threads 2 -framerate 1 -i pipe:0 -c:v libx264 -profile:v baseline -level 3.0 -tune stillimage -r 30 -pix_fmt yuv420p "preview\%%~nf.mp4"
    )
cls
)

अपडेट: आप HTML5 में प्लेबैक दर को आसानी से नियंत्रित कर सकते हैं <video>जैसा कि यहां दिखाया गया है

इसके बजाय gif का उपयोग क्यों नहीं करते?

  • .gif प्रारूप में सबसे खराब गुणवत्ता है (पिक्सेल रंग / अधिकतम 256 रंग)

  • .gif फ़ाइल का आकार कम से कम 2x बड़ा है।

  • आपके द्वारा बनाए जाने के बाद आप प्लेबैक गति / पॉज़ gif एनिमेशन को नियंत्रित नहीं कर सकते।

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