Olvastam ezt a cikket , és láttam, hogy a CPU jobb a videotömörítéshez mint egy GPU.
A cikk csak azért mondja, hogy ez azért történik, mert a processzor bonyolultabb algoritmusokat képes kezelni, mint a GPU, de technikaibb magyarázatot szeretnék kapni, némi keresést végeztem az interneten, de nem sikerült talál valamit.
Tehát valaki tudja elmagyarázni vagy linkelni egy webhelyet, volt egy mélyebb magyarázatom erre?
Válasz
Az általad linkelt cikk nem túl jó.
Normál esetben az egyutasos bitráta kódolások konvertálják a bitrátádat RF értékké egy maximális bitráta korlát, és onnan veszi el.
x264 “egyutas ABR ratecontrol nincs CRF + korlátként megvalósítva. Igaza van annak a 2pass messze a legjobb módja annak, hogy elérje a cél bitrátát.
És nyilvánvalóan nem veszi észre, hogy az x264-et szálakkal = 3 vagy hasonlóval kezdheti, hagyjon némi CPU-időt más feladatokra. Vagy állítsa az x264 prioritását nagyon alacsonyra, így csak a CPU idejét kapja meg, amelyet egyetlen más feladat sem kíván.
Ő is összekeveri az = 1 szálakat a CUDA vagy valami más használatával. Nem csoda, hogy kérdései vannak, mert ez A cikknek FELHASZNÁLHATÓ magyarázata van. Az egész cikk alapvetően a következőket foglalja magában: use x264 --preset veryslow --tune film --crf 26 in.m2ts --out out.mkv
, vagy esetleg használjon valamilyen fényszűrést egy bemeneti AviSynth szkript segítségével. Valójában a következőt javasolja: ” placebo “. Ez vidám. Soha nem láttam placebóval kódolt kalózfájlt. (me=esa
vagy me=tesa
alapján megtudhatja, a az összes jó minőségű presethez, egészen a veryslow
ig.
Nem is említi a 10 bites színmélységet. Lassabban kódolni és dekódolni, de még a 8 bitesre történő visszaalakítás után is jobb 8 bites SSIM-et kap. A mozgásvektorok pontossága nyilvánvalóan segít. Ezenkívül nem kell pontosan 8-bites egészre kerekíteni. -bit bit komponensenként, mint sebesség-hack; kvantálás a frekvenciatartományban, majd annak tömörítése a CABAC segítségével azt jelenti, hogy a magasabb bites mélységű együtthatóknak nem kell több helyet foglalni.
(BTW, h. A 265 kevesebb előnyt élvez a 8 bites videók 10 bites kódolásaiból, mert már nagyobb pontossággal rendelkezik a mozgásvektorokhoz. Ha előnye származik a 10 bites x265 használatáról a 8 bites videobemeneteknél, akkor kisebb, mint az x264 esetén. Tehát kevésbé valószínű, hogy a sebességbüntetés csökken Megérem.)
Az aktuális kérdés megválaszolásához:
edit: a doom9 most újra fent van, ezért rendbe teszem a linket. Ehhez keresse fel a megfelelő idézetet, aki mit mondott.
http://forum.doom9.org/showthread.php?p=1135399#post1135399
A Google csak a hülye nyomtatott verziót tárolja, amely “nem mutatja megfelelően az idézetet.” Nem vagyok egészen biztos abban, hogy ezek az üzenetek mely részei idézőjelek, és melyek magának a személynek tulajdoníthatók.
Rendkívül szabálytalan elágazási minták (átugrási módok) és bitmanipuláció (kvantálás / entrópia kódolás) nem felelnek meg a jelenlegi GPU-knak. Az egyetlen IMO jelenleg nagyon jó alkalmazás a teljes keresés ME algoritmusa, bár a gyorsított teljes keresés még mindig lassú, még akkor is, ha gyorsabb, mint a CPU-n.
– MfAValójában alapvetően mindent ésszerűen meg lehet csinálni a GPU-n, kivéve a CABAC-ot (ami megtehető, csak nem lehet párhuzamosítani).
x264 A CUDA egy fullpel-t valósít meg és kezdetben subpel ME algoritmust, később pedig valami olyat tehetünk, mint az RDO egy kis költségű jóváhagyással ximáció a CABAC helyett.
Mivel mindent egyetlen precíziós lebegőpontos művelettel kell megtennie
– MfARossz, a CUDA támogatja az egész matematikát.
– Sötét Shikari
Sötét Shikari kb. 2007 óta az x264 karbantartója és fejlesztője a legtöbb funkciónak.
AFAIK, ez a CUDA projekt nem tűnt el. Támogatás érhető el az OpenCL használatával bizonyos munkák lekerüléséhez a lookahead szálból (gyors I / P / B döntés, nem a keret kiváló minőségű végső kódolása).
Megértésem szerint az, hogy a videokódolás keresési területe olyan nagy, hogy a CPU-k keresési útvonalainak korai befejezéséhez szükséges intelligens heurisztika megveri a brute-force GPU-kat hozza az asztalra, legalábbis a kiváló minőségű kódolás érdekében. Csak a -preset ultrafast
-hez képest, ahol ésszerűen választhatja a HW-kódolást az x264 felett, pl. Ha lassú CPU-ja van (például kétmagos laptop és hiperszálas nincs). Gyorsan CPU (i7 négymagos, hipermenettel), az x264 superfast
valószínűleg olyan gyors lesz, és jobban fog kinézni (ugyanazon a bitráta mellett).
Ha olyan kódot készít, ahol egyáltalán számít a sebesség-torzítás (a fájlméretre eső minőség), akkor x264 -preset medium
vagy lassabbat használjon. Ha ” ha újra archivál valamit, akkor most egy kicsit több CPU-időt tölt el, a bájtok megtakarításra kerülnek, mindaddig, amíg a fájlt nem tartja körül.
mellékelt megjegyzés: ha valaha is látod a deadrats üzeneteit egy video fórumon, akkor ” s nem lesz hasznos. Tévedett a legtöbb dologgal kapcsolatban, amiről minden szálban beszéltem, amit valaha láttam. A bejegyzéseit egy pár szálon fordultam meg, és gugliztam az x264 GPU kódolással kapcsolatban. Nyilvánvalóan nem érti, miért nem könnyű, és többször is közzétette, hogy elmondja az x264 fejlesztőknek, miért butulnak …
Válasz
2017-es frissítés:
ffmpeg támogatja a h264 és h265 NVENC GPU által gyorsított videokódolást . Megteheti az 1 vagy 2 lépéses kódolást a kívánt minőségben, akár hevc_nvenc, akár h264_nvenc esetén, vagy akár egy belépő szintű GPU-val is sokkal gyorsabb, mint a nem gyorsított kódolás és az Intel Quick Sync gyorsított kódolás.
Két lépéses kiváló minőségű kódolás:
ffmpeg -i in.mp4 -vcodec h264_nvenc -preset slow out.mp4
1-pass alapértelmezett kódolás:
ffmpeg -i in.mp4 -vcodec h264_nvenc out.mp4
NVENC ffmpeg súgó és opciók:
ffmpeg -h encoder=nvenc
Használja, sokkal gyorsabb, mint a CPU kódolása.
Ha nincs GPU-ja, használhatja az Intel Quick Sync, a h264_qsv, a hevc_qsv vagy az mpeg2_qsv kodeket, amelyek szintén sokkal gyorsabbak, mint a nem gyorsított kódolások.
Megjegyzések
- Használja ha a fájlméretenként magasabb minőséget értékeli a sebesség (és az alacsony CPU-felhasználás). Egyes használati esetekben, pl. “2e2d55c5c8”>
amit akarsz (különösen az alacsony CPU-használat). Más esetekben, pl. Kódolj egyszer egy fájl létrehozásához, amelyet sokszor továbbítanak / néznek meg, akkor sem vagy t meg fogja verni a-c:v libx264 -preset slower
-et (ami nem olyan lassú, mint a valós idejű 1920x1080p24 esetében a Skylake i7-6700k esetében.)
ffmpeg
és a -vcodec h264_qsv
használatával régebbi Intel noteszgépemen, Intel HD Grpahics 4000-el, sokkal gyorsabb lett a megjelenítés! Válasz
Kicsit részletesebben kifejtve, amit Peter mond, több processzor használata általában segít azokban az esetekben, amikor több független feladat van, amelyek mindegyike meg kell tenni, de nem függenek egymástól, vagy egy olyan feladattól, ahol ugyanazt a matematikát hajtja végre nagy mennyiségű adatnál.
Ha azonban az A számítás kimenetére van szüksége a B számítás bemeneteként, és a B számítás kimeneteként a C számítás bemeneteként, akkor nem “gyorsíthatja fel, ha az egyes feladatokhoz (A, B vagy C) más-más alapmunkát végez, mert nem lehet” kezdje, amíg a másik befejeződik.
Azonban még a fenti esetben is képes lehet t o párhuzamosítani más módon. Ha darabokra tudja bontani a bemeneti adatokat, akkor lehet, hogy az A, majd a B, majd a C egy adatcsomóval végez egy alapvető munkát, míg egy másik mag az A, majd a B, majd a C egy másik adatrészleten dolgozik. .
Vannak más szempontok is. Talán találna módot a számítások párhuzamosítására, de csak az adatok lemezről vagy a hálózaton keresztül történő olvasása, vagy a GPU-nak való elküldés hosszabb ideig tart, mint a számítások elvégzése. Ebben az esetben nincs értelme párhuzamosítani, mert csak az adatok memóriába vétele hosszabb ideig tart, mint amennyit a párhuzamos számítással megtakarít.
Más szavakkal: ugyanolyan művészet, mint tudomány.
Megjegyzések
- Ó, igen, az x264 elég jól párhuzamos a többmagos CPU-kkal. Szinte lineárisan skálázok legalább 8 magig, és tisztességesen akár a 32. után is. A mozgásbecslés párhuzamosan elvégezhető, csak a szükségszerűen soros munkát hagyva egy másik szálra és hasonló trükkökre.
- A kérdés nem A ‘ t párhuzamosság általában ‘ s különösen a GPU-k. ‘ sokkal szigorúbbak abban a kódban, amelyet futtatni lehet őket, mint a CPU-kat. Úgy gondolom, hogy ‘ s, mert ‘ nem lehet kódja olyan elágazásokkal, amelyek a kép különböző blokkjain különböző módon haladnak. Nem ‘ nem értem pontosan, miért, de szerintem ‘ valami ilyesmi. Minden adatfolyam-feldolgozó olyan egyszerű, és olyan korlátozott eszközökkel, hogy a többitől függetlenül futni tudjon, vagy vagy mindig a leglassabb befejezésére kell várni, vagy egyáltalán korlátozott az elágazás, vagy mindkettő.
- Ha számítógépek csoportja volt (független RAM-mal rendelkező processzorok, amelyek nem ‘ nem versenyeztek egymással a memória sávszélességéért és a CPU gyorsítótáráért), akkor ‘ d ossza szét a bemeneti videót GOP-kra, és küldje el a még tömörített bemeneti videó szakaszait, hogy dekódolják és tömörítsék azokat a fürt többi gépén.Tehát csak a tömörített bemeneti vagy kimeneti videót kellene átvinni. Egy többmagos megosztott gyorsítótár / RAM rendszer, mint például egy multisocket x86 munkaállomás, több szál működik egyszerre ugyanazon a kereten. (ez azt is jelenti, hogy nem kell ‘ új kódra van szüksége a kódok szegmentálásához szükséges globális ellenőrzéshez.)