Többszálú FFmpeg készül!

Egy érdekes hírre találtam a phoronix oldalán, és kicsit körbejártam a témát.
A FFmpeg egyik levelezőlistáján jelent meg a bejelentés:

> Szia,
 ~2 év munka és ~700+ előkészítő commit után végre itt van  a többszálú ffmpeg CLI első "teljesen működőképes" verziója.  Azért van idézőjelben, mert a változások mértéke miatt biztos vagyok benne, hogy néhány dolog  törött, és nem vettem észre…

Maga a hír egyelőre érdektelennek tűnik, de én mindenképp azt fogom csinálni, hogy figyelem a fejleményeket, hiszen a több szálú munka az nagyon meggyorsítja a valóban lassú videó dekódolást, rendelerést, illetve az audió fájlokkal való munkát.
A videó, illetve audio vágási feladatoknak az egyik leglassabb pontja a renderelés, azaz a kész file elkészítése. Ha a kódolórendszer több szálon tud működni, akkor az összes processzor szálat, processzor magot ki fogja tudni rendesen használni, ezzel villámgyorsát tudjuk tenni a amúgy unalmas és lassú munkát!

Egy tapasztalati értéksor jól mutatja a többszálú munka előnyét: ha videóvágó programban egy szálon rendereltettem, akkor a munka egy órás volt. Amikor mind a 12 szál működött hét perc.

Lehet, hogy sokan nem is tudják, de sok grafikus videó illetve audió program az FFmpeg programra támaszkodik. Bár különféle módszerrel megoldják, hogy a grafikus program több szálat, több CPU magot is használjon, de ha ez megvalósul, akkor a gyorsulást maga a háttérben futó FFmpeg is segíti. Nem beszélve a CLI, terminálos megoldásokról, amiket azért sokan használunk.
Bár sok blogbejegyzés jelent meg itt is az FFmpeg programról, de aki nem ismeri:

FFmpeg egy ingyenes és nyílt forráskódú multimédia keretrendszer, amely számos multimédiás fájlformátumot és kódolást támogat. Használata számos különböző területen hasznos lehet:

  1. Multimédia konverzió: FFmpeg lehetővé teszi a különböző multimédiás formátumok közötti konverziót. Például átalakíthat videókat egy formátumból egy másikba, így kompatibilissé teheti különböző eszközök és lejátszók számára.

  2. Videóvágás és összeillesztés: FFmpeg segítségével videókat lehet vágni, összeilleszteni, átalakítani és szerkeszteni. Ez hasznos lehet videókészítéshez vagy szerkesztéshez.

  3. Hangfeldolgozás: FFmpeg támogatja a hangformátumok konverzióját, kivágását és keverését. Ezenkívül képes hangnyomokat hozzáadni vagy eltávolítani videókhoz.

  4. Élő közvetítések: FFmpeg alkalmas élő videó és hangközvetítések kezelésére, például YouTube vagy Twitch közvetítésekhez. Képes monitorképet is rögzíteni, így célprogram futtatása nélkül is vehetünk fel a monitorról.

  5. Parancssori eszköz: FFmpeg egy parancssori eszköz, ami lehetővé teszi a fejlett szkriptek és automatizációs feladatok végrehajtását multimédiás fájlok kezeléséhez.

  6. Multimédiás adatok elemzése: FFmpeg segítségével lehetőség van részletes információk kinyerésére a multimédiás fájlokból, például videó- és hangkódolásról, méretekről, bitráta stb.

  7. Platformfüggetlenség: FFmpeg több platformon és operációs rendszeren elérhető, beleértve a Windows, macOS és Linux rendszereket.

  8. Fejlesztőknek: FFmpeg nyílt forráskódú projekt, amely lehetőséget nyújt a fejlesztőknek saját multimédiás alkalmazások készítésére vagy testreszabására.

Összességében az FFmpeg egy hatékony és sokoldalú eszköz a multimédiás fájlok kezeléséhez és manipulálásához. Hasznos lehet mind az átlagos felhasználók, mind a fejlesztők és a multimédia szakemberek számára.

Hozzászólások

Szia!

Értékelés: 

0
Még nincs értékelve

Szia!
Köszi a hírt! Azt nem tudom, tudtad-e hogy az ffmpeg az nvidia videokártyákat (már amelyik alkalmas erre) is ki tudja használni, és GPU-val is sokszorosára ugrik a teljesítmény!
Ehhez mindössze az h264_nvenc kapcsolót kell megadni.

ffmpeg szkript nvidia kártyákhoz

Értékelés: 

0
Még nincs értékelve

Ehhez itt egy szkript, ha valaki kész megoldásként szeretné használni, egy mappán belül megadott fájlok konvertálására mp4-be. Kimenetként HD felbontású videók készülnek.

#!/bin/bash

###############################################################
## Videófájlok konvertálása MP4-be egy mappán belül ##
###############################################################

clear
echo "----------------------------------------------"
echo "Mindenféle videófájl konvertálás MP4 fájlba"
echo "----------------------------------------------"
echo "Szabványos dimenziók"
echo "4320p (8k): 7680x4320"
echo "2160p (4K): 3840x2160"
echo "1440p (4K): 2560x1440"
echo "1080p (HD): 1920x1080"
echo "720p (HD): 1280x720"
echo "480p (SD): 854x480"
echo "360p (SD): 640x360"
echo "240p (SD): 426x240"
echo "----------------------------------------------"
echo ""

read -p "Add meg az átalakítandó videófájlok kiterjesztését pont nélkül: " kiterjesztes

FILES=`ls *.$kiterjesztes`

for i in $FILES; do

    filename=${i%.*}
    output=$filename".mp4"

    echo ''
    echo 'Bemeneti fájlnév: '$i
    echo 'Kimeneti fájlnév: '$output
    echo ''

    # Forrásfájl dimenzióinak lekérdezése (width, height), majd cut-tal a számérték kinyerése az eredményből
        WIDTH=$(ffprobe -v quiet -show_streams "$i" | grep coded_width)
        WIDTH=${WIDTH#*=}

    if [ $WIDTH -lt 1280 ]
        then

            echo 'A videó dimenziói kisebbek 720p szabványnál! A fájl az eredeti dimenziók alapján lesz mp4-be konvertálva!'
            echo ''
            # ffmpeg -v quiet -stats -i $i -c:v libx264 -preset slow  -level 4.1 $output
            # Nvidia kártya esetén bekapcsolja a GPU feldolgozást (-c:v h264_nvenc). Kb. 6x-os sebességnövekedés érhető el! (A kimeneti minőséget ellenőrizd!)
            /usr/bin/time -f Konvertáláshoz_szükséges_idő:_%E ffmpeg -v quiet -stats -i $i -c:v h264_nvenc -preset slow $output
            echo ''

        else

            echo 'A videó dimenziói nagyobbak vagy egyenlőek 720p szabványnál! 720p formátumba lesz konvertálva!'
            echo ''
            ## ffmpeg -v quiet -stats -i $i -c:v libx264 -preset slow -s 1280x720  -level 4.1 $output
            # Nvidia kártya esetén bekapcsolja a GPU feldolgozást (-c:v h264_nvenc). Kb. 6x-os sebességnövekedés érhető el! (A kimeneti minőséget ellenőrizd!)
            /usr/bin/time -f Konvertáláshoz_szükséges_idő:_%E ffmpeg -v quiet -stats -i $i -c:v h264_nvenc -preset slow -s 1280x720 $output
            echo ''

    fi

    # Fájl eredeti időbélyegének (dátum/idő) visszaállítása
    touch -r $i $output

done

Szia!

Értékelés: 

0
Még nincs értékelve

#1 Olvastam róla, de nekem AMD RX580 a kártya, aminél semmi GPU gyorsítás a kódolásnál nem megy Linux alatt :( Nem gond, csak kellemetlen.