25 marca 2019, Paweł Maziarz

Co to jest sprzętowy koder Open Broadcaster (OBS)?

Kategoria: Komputery Podzespoły Oprogramowanie Gry Gry komputerowe Karty graficzne, Tematyka: Nvidia Nvidia GeForce Nvidia Turing Vademecum, Producenci: Nvidia

Tłumaczymy co to jest sprzętowy koder i dlaczego warto z niego korzystać przy streamowaniu rozgrywki w OBS na przykładzie nowego rozwiązania Nvidii.

Open Broadcaster (OBS) to jeden z najlepszych programów do nagrywania i streamowania rozgrywki w grach. Aplikacja współpracuje z najpopularniejszymi serwisami streamingowymi, oferuje sporo przydatnych funkcji, a przy tym jest darmowa. Wysoka jakość przesyłanego materiału wymaga odpowiednio wydajnego komputera, ale można tutaj wykorzystać również sprzętowy koder obrazu. Dlaczego warto zwrócić uwagę na to rozwiązanie?

Streamerzy podczas transmitowania swojej rozgrywki muszą znaleźć odpowiedni kompromis między jakością przesyłanego obrazu a obciążeniem komputera. Lepsza jakość zachęci widzów, ale będzie wymagać większej mocy obliczeniowej i spowolni działanie komputera.

OBS - konfiguracja z dwoma komputerami

Jeszcze do niedawna jednym z najpewniejszych sposobów było zaangażowanie dwóch komputerów, z których jeden odpowiadał za uruchomienie gry, a drugi za przechwytywanie obrazu. Alternatywą było wykorzystanie jednego komputera wyposażonego w grabber wideo. Niestety, obydwa rozwiązania wymagały dodatkowych nakładów finansowych i często były trudne w konfiguracji.

Co to jest sprzętowy koder Open Broadcaster (OBS)?

Lepszym pomysłem okazało się wykorzystanie układu graficznego w roli sprzętowego kodera, który obciążył główny procesor komputera, a przy tym zapewnił dobrą jakość przesyłanego materiału i nie wymagał dodatkowych inwestycji. Można tutaj wyszczególnić technologię Intel Quick Sync Video (QSV) bazującą na zintegrowanym układzie graficznym w procesorach Intela oraz Nvidia NvEnc bazującą na karcie graficznej Nvidia GeForce GTX.

Warto zwrócić uwagę na to drugie rozwiązanie, szczególnie, że niedawno zostało ono dodatkowo usprawnione.

Nvidia NvEnc OBS

Przy okazji premiery kart graficznych GeForce GTX 16 i RTX 20 z generacji Turing, Nvidia wprowadziła usprawniony, sprzętowy koder NvEnc, który został zoptymalizowany specjalnie z myślą o aplikacji OBS. Co ważne, nowy pakiet również radzi sobie jeszcze lepiej z przetwarzaniem transmitowanego materiału.

Nvidia NvEnc Turing - obciążenie procesora

Nowa wersja aplikacji i nowy koder NvEnc zapewniają dużo mniejsze obciążenie procesora, co przekłada się na mniejsze spadki wydajności. Z optymalizacji wprowadzonych w aplikacji mogą też korzystać posiadacze starszych kart z generacji GeForce GTX 600, 700, 900 i 10.

Fortnite - kodowanie OBS

Koder NvEnc z generacji Turing oferuje również dużo lepszą jakość transmitowanego materiału. Producent chwali się, że nowe karty zapewniają o 15% wyższą wydajność w stosunku do kart graficznych poprzedniej generacji Pascal. Oznacza to, że można tutaj ustawić o 15% niższy bitrate przy zachowaniu tego samego poziomu jakości obrazu.

Nvidia NvEnc Turing - jakość transmisji

Mało tego, użytkownicy mogą również uzyskać jakość obrazu porównywalną z kodowaniem x264 Medium, która do tej pory była dostępna tylko dla konfiguracji składających się z dwóch komputerów.

Źródło: Nvidia, Open Broadcaster Software, inf. własna

Komentarze

  • Ari93, #

    h264? Ile można męczyć tak stary i niewydajny standard, już chyba czas najwyższy przeskoczyć na h265... nie mówcie tylko że to wymaga jakiś niebotycznych mocy obliczeniowych, telefony o TDP pewnie 1W jak nie mniej ogarniają nagrywanie w 4k 60fps 40 Mbps a gdzie tu takie wielkie maszyny obliczeniowe jakimi są komputery PC.

  • ghasz, #

    Częściowo masz rację - przydało by się zmienić kodek, ale nie nastąpi to na h265 bo ten jest ograniczony płatną licencją i bardziej spodziewam się skoku do AV1

  • ghasz, #

    Częściowo masz rację - przydało by się zmienić kodek, ale nie nastąpi to na h265 bo ten jest ograniczony płatną licencją i bardziej spodziewam się skoku do AV1

  • Damian Szymański, #

    Z nagrywaniem tak, ale nie ze streamingiem. Myślisz, że dlaczego te wielkie serwisy jak Twitch czy Youtube jeszcze się z tym nie uporały?
    Jak zobaczysz sobie testy to nvenc (x265) wymaga dużo mniejszej szybkości łącza niż x264 to steamowania ale niestety urządzenia bardzo słabo radzą sobie z tzw. live encoding. Co w połączeniu z ciężkimi obwarowaniami licencyjnymi sprawia, że ten kodek niczego wielkiego w dziedzinie streamowania nie osiągnie. Chociaż w wielu aspektach wypada lepiej niż x264 czy VP9. Już prędzej AV1 przejmie streaming niż hevc.

  • Doctor, #

    Odnoszę wrażenie, że autorowi zieloni sypnęli pod stołem, bo jako-tako wiedzę na temat to ma znikomą.

    Koder NVidii nie nadaje się do streamowania, nie ważne jak bardzo by go nie ulepszali. Bo co z tego, że odciążamy procesor, gdy podczas grania obciążenie GPU jest równie ważne, a nawet bardziej?

  • rlistek, #

    Widać, że nie masz pojęcia o czym mówisz. Ten nowy NVENC obiąża GPU może w 1% przy 0,5% obciążeniu CPU, podczas gdy porównywalny jakościowo x264 fast zżera ci większość mocy 8c/16t procka. Mówię z praktycznego doświadczenia z nagrywania/streamowania z 2700x i RTX2080 w 6kbps (maksymalny akceptowalny przez twitcha).

    Także ten nowy NVENC jak najbardziej się nadaje do streamowania jeśli nie potrzebujesz w pełni profesjonalnej jakości, którą osiągniesz jedynie encodując na osobnym komputerze z jakimś Threadripperm.
    Zależnie od gry czasem lepiej wychodzi encodowanie na x264 fast, czasem na Turingowym NVENC, ale jest to jak najbardziej realna i użyteczna alternatywa i w zasadzie jedyne sensowne obecnie rozwiązanie jeśli nie masz 8+ rdzeniowego procka.

    Ładnie się popisałeś ignorancją.

  • Doctor, #

    Widać, że nigdy z OBSem, lub czymkolwiek do nagrywania / streamowania nigdy nie styczności nie miałeś. :)

    Na slajdach napiszą ci że obciążenie to 1%, a ty to wszystko łapiesz jak pelikan. W rzeczywistości NVENC opłaca się korzystać tylko w wypadku gdy CPU jest mocnym bottleneckiem - tak jak w twojej konfiguracji - w sytuacji gdy CPU i GPU są porównywalnie mocne, koder x264 obniża FPSy w znacznie niższym stopniu niż koder NV.

    Połącz swojego RTXa z procesorem o mocnym jednym rdzeniu i taktowaniem powyżej 5GHz (lub co najmniej powyżej 3.7-4.3GHz Threadrippera), a zobaczysz że to nie koder NVidii jest tak dobry, a po prostu karta się nudzi bo gdy grając bez streamowania procek działa na 100%, to karta działa na max. 70-80%.

  • rlistek, #

    Mam ci screeny albo nagrania wrzucić z OBSa i użycia zasobów czy może wg. ciebie ma mi robić róźnicę 217fps zamiast 212fps w grze podczas encodowania, gdzie często, zależnie od gry, na x264 jest znacznie większy spadek bo się proc dusi?
    Czy może mam tobie wierzyć na słowo, pomimo tego, że mój własny sprzęt pokazuje mi zupełnie coś innego niż twierdzisz?

    Skończ z tą pajacerką i nie wypowiadaj się na tematy o których nie masz pojęcia, to może się kolejny raz jak teraz tutaj nie skompromitujesz.

  • Doctor, #

    Sam mi nie zaprzeczyłeś, bo też powiedziałem że to proc się dusi. ;) Ale jak jest się pozbawionym umiejętności czytania ze zrozumieniem to tak później jest.

    Jeżeli grasz w CS:GO lub inną popierdółkę która wykręca 212FPS bez obciążania GPU, to oczywiście że NVENC będzie lepszym rozwiązaniem. Włącz coś bardziej wymagającego, to już nie będzie taki dobry.

    Ale łatwiej zwyzywać kogoś, bo podważa twój "autorytet", zamiast zastanowić się czy przypadkiem nie ma racji. :E

  • rlistek, #

    Proszę bardzo:
    https://www.youtube.com/watch?v=VP-sgNjKBrY

    Overwatch ultra settings.

    x264:
    GPU usage ~97%
    CPU usage ~80%
    211-241fps

    nvenc:
    GPU usage ~98%
    CPU usage ~25%
    209-240fps

    Także nie ma to jak "opinia eksperta", panie Doctor.

  • Doctor, #

    Na własnym filmiku pokazałeś, że obciążenie GPU wzrosło z 50-60% do 70-80% (task manager), więc nie wiem czemu kłamiesz z tym 97%? Chyba że uważasz go za niemiarodajnego, w przeciwieństwie do afterburnera, ale w takim wypadku po co go włączać?

    Z tego co ja widzę, Overwatch kiepsko skaluje się z rdzeniami, masz 25% wykorzystania CPU z czego połowa wątków jest nieużywana a dwa są wykorzystywane w 100%. Do eksperta mi daleko, ale bottlenecka poznałby tutaj nawet amator.

    Jak najbardziej, NVENC nadaje się do streamowania - wtedy gdy masz spory zapas mocy GPU. Gdy karta grafiki nie jest obciążana przez procesor, to x264 pozostaje lepszą opcją - przynajmniej w moim przypadku to się sprawdza. Gdybyś zamiast 2080 miał w budzie 2070, to streamując na x264 miałbyś tyle samo FPSów (to wciąż CPU bottleneck), ale przy NVENC mógłbyś zaliczyć spadek.


    Ale jesteś zbyt przekonany o swojej nieomylności, więc chyba rzucam niczym grochem o ścianę. ;)

  • rlistek, #

    Tu nie chodzi moja nieomylność, a to że nie masz pojęcia o czym mówisz. Twoje wypowiedzi to jak to mówią "gdzieś dzwonią, ale nie wiem w którym kościele".

    Użycie GPU pokazuje afterburner, task manager ma ci tam pokazywać użycie poszczególnych rdzeni, bo poza tym do niczego więcej się chyba nie nadaje. Także to nie ja "kłamię" a ty nie masz pojęcia o monitorowaniu użycia zasobów PC.

    Nie wiem też o jakim bottlenecku mówisz jak GPU elegancko chodzi na tych 97-98%. Overwatch jest akurat bardzo dobry pod względem technicznym, ale jak ci nie pasuje to ci mogę nagrać inna gierkę tylko wtedy i tak zaczniesz pewnie gadać te bzdury przeczytane na jakiś amatorskich forach myśląc, że wiesz o czym mówisz. Testowałem Wiedźmina 3 parę tygodni temu i wyniki były takie same - zarówno na x264 jak i nvenc FPS był taki sam z dokładnością do 1 czy dwóch klatek (przy 130-150fps). Nvenc po prostu ma niesamowicie mały narzut na GPU, a co najważniejsze, przestał odbiegać jakościowo na niskim bitrate, co wcześniej go właśnie skreślało jako encoder do streamowania. Nie żeby już co najmniej kilka osób ci to tu mówiło, a ty dalej swoje.

    Także sorry, ale to ty wchodzisz tutaj, bez żadnego doświadczenia, nie widząc nowego nvenc nawet na oczy i próbujesz ogłaszać wszem i wobec, że ten się do niczego nie nadaje, a slajdy to ściema i oszukują, bo na starej implementacji na starej karcie ci się nie podobało. O tym jest właśnie ten news, że jest nowa wersja, która w przeciwieństwie do starej jest realną alternatywą dla x264 do streamingu. Nie tylko ja ci to piszę, a ty dalej pajacujesz, eh...

    Kup sobie RTXa, sprawdź na własnym kompie na jakiej tam sobie chcesz gierce i tyle. To tego czasu nie masz żadnych podstaw, żeby się wypowiadać w temacie.

  • Doctor, #

    Ale jad z ciebie bije. Jakieś problemy w życiu prywatnym? Nie napisałeś jeszcze ani jednego komentarza bez personalnych docinek.

    Tysiące ludzi uważa, że Ziemia jest płaska. Czy to znaczy, że mam im wierzyć na słowo? Osobiście wolę jakieś dowody, a nie gderanie ludzi "że się nie znam", bo brzmi to jak próbowanie na siłę uzasadnić swój zakup. "Dopóki nie kupisz RTXa, nie masz żadnych podstaw by się wypowiadać"... Taa. :E

    Na szczęście mam twój filmik, który udowadnia że użycie GPU wzrasta z 60% do 80% (task manager, jeżeli nie widzisz to zakreślę ci to kółkiem). Żeby wierzyć że wskazania afterburnera są w tym przypadku prawidłowe to chyba trzeba chcieć w to wierzyć, bo że coś z niczego się bierze, czyli kodowanie przy nie jest w stanie< zmusić GPU na poziomie 1080Ti / 2080 do działania na 100% (spójrz na jakikolwiek test - po połączeniu tej karty z np. i9-9900K, wynik wzrasta o dobre 30-50% w porównaniu do 2700X), bardzo wątpię w te 97% obciążenia, a 60-65% bez kodowania i 80-85% wydaje się bardziej prawdopodobne. Chyba, że masz coś na obronę swojej tezy o niemal 100% obciążeniu? Wciąż czekam.

    Póki co, pozostaję sceptyczny. Poznałem jednak swoją odpowiedź na pierwsze pytanie - tutejszym użytkownikom nie trzeba dopłacać, aby ubóstwiali NVidię. :E

  • rlistek, #

    Irytuje mnie ignorancja, stąd te docinki.

    W każdym razie proszę bardzo. Aż mnie ciekawi czy wreszcie do ciebie dotrze czy dalej będziesz robił z siebie idiotę.

    https://youtu.be/vrMh8SJps8o

    Co teraz powiesz? Octane używa tylko ~40% gpu do renderowania, co nie?

    Swoją drogą, zanim się jeszcze spalisz ze wstydu to wymień mi jedną grę do której streamowania nowy nvenc się wg ciebie nie nadaje, bo chyba już sam nie wiesz o się w ogóle czepiasz.

  • bandan, #

    Chyba sobie gościu żartujesz. Weź sie doucz a nie piszesz bzdury na ogólnym forum.

  • rahl_r, #

    Doktorze ulecz się sam i przestań pisać głupoty, właśnie kodeki NvEnc są ten moment jedynym sensownym rozwiązaniem bez drugiego kompa albo kodeka sprzętowego.
    x264 na CPU zeżre ci co najmniej połowę mocy obliczeniowej nawet mocnego proca i to przy przeciętnej jakości streamu.

  • rahl_r, #

    dubel

  • awesome1337, #

    a ty za to tą wiedza błyszczysz

    po ostatnim patchu obicażenie gpu podczas streamowania z NvEnc jest prawie takie samo jak z uzyciem shadowplay
    czyli 2-5 klatki w najgorszym wypadku

  • Tomasz Słowik, #

    Ale przecież Shadow Play po prostu korzysta z NvEnc (tylko że w nim nie masz wyboru jak w OBS), a dedykowany układ do przechwytywania obrazu w ten sposób pojawił się już przy serii Geforce 9xx. Z resztą, nawet OBS wspiera go od lat. Trochę nie rozumiem dlaczego ten "artykuł" pojawił się dopiero teraz.

  • Tomasz Słowik, #

    Ok, dzięki. Artykuł przedstawia to jednak jak jakieś niesamowite objawienie, a już wcześniej wpływ na wydajność całej platformy był znikomy przy użyciu tego enkodera. Co więcej, korzystając z karty pokroju 2060 lub wyżej ten wzrost wydajności to chwyt marketingowy - poczciwa 970 miała znikomy spadek wydajności przy używaniu tego standardu dobre 4 lata temu.

  • awesome1337, #

    >Artykuł przedstawia to jednak jak jakieś niesamowite objawienie

    ja już od dawna traktuje benchmark jak zrodło tylko newsów które omineły mnie na innych kanałach

    jak chce wiecej szczegółów to googluje temat na który trafiłem tutaj

  • kitamo, #

    Doctor, A Ty widziałes chociaz jak to działa czy spekuklujesz?
    Hardwarowo dekodowany materiał obciaża tak GPU że jest to niezauważalne dosłownie.
    Co innego jak CPU obciaża w 40% a co innego jak GPU w najgorszym przypadku w 4%.

  • Doctor, #

    Widziałem, w moim przypadku enkoder NVENC przynosił znacznie gorsze rezultaty niż x264.

    Może nowa wersja coś poprawiła, ale szczerze powiedziawszy to wątpię. Obstawiam, że slajdy nie mają pokrycia w rzeczywistości, a jedyna sytuacja w której spadek FPSów jest niższy niż w przypadku kodowania przez CPU, to gdy przed włączeniem streama aktywność procesora wynosi 100%, a grafiki ~70%.

  • rlistek, #

    A masz w ogóle RTXa czy płaczesz, że na twoim 960 nvenc nie działa wcale tak dobrze jak piszą? Nie działa bo nie ma działać, nowy nvenc jest tylko dla RTX.

  • rahl_r, #

    Nie trzeba RTX, już na kartach pokroju 1070 zużycie GPU jest marginalne.

  • kitamo, #

    Doctor - na jakiej grafice testowales?

    Ty "obstawiasz" a ja mówie CI jak jest bo sprawdziłem to praktycznie.

  • Doctor, #

    Na Pascalu, także bez tych wspaniałych wodotrysków jakie NVidia obiecuje.

    Jeżeli rzeczywiście wzrosty są takie, że obracają sytuację o 180 stopni, to zwracam honor. Gdy ostatnio się tym zajmowałem, to kodowanie na GPU było znacznie gorszym rozwiązaniem i nie znam się z nikim, kto by z tego korzystał (chociaż większość osób korzysta z drugiego PC, lub zewnętrznego urządzenia, także mniejsza o to).

  • kitamo, #

    Czyli masz threadrippera i najwolniejszego pascala z mozliwych.,

    Ustaw sobie w OBS kodowanie na X264 i nieco lepszej jakosci niz na fast to wtedy zobaczysz jak cpu dostanie wciry.

  • Damian Szymański, #

    Ale z czym ty masz problem? Myślę, że masz niewielkie pojęcie o tym temacie.
    Zauważ, klasyczny x264 czyli tak zwane nagrywanie "software encoding" działa jedynie na CPU. To znaczy, że nagrywanie czy streaming obciąża jedynie CPU. To przy wymagającej grze powoduje, że wydajność gry drastycznie spada. Więc aby zachować względną płynność nawet na mocnym sprzęcie trzeba obniżać parametry nagrywanego materiału. No chyba, że do tego użyjesz CPU Threadrippera albo coś podobnego, gdzie nieużywane rdzenie będziesz mógł zaprzęgnąć do nagrywania.

    Sprzętowe (hardware encoding) zupełnie zmienia postać rzeczy i to nie tylko na sprzęcie od NVIDII gdzie jest NVENC ale również na Intelu QuickSync, również i AMD ma swoje VCE, a na Linuksie dla Intela i AMD można także korzystać z VAAPI (encoding i decoding).
    Te technologie sprawiają, że CPU jest praktycznie nie używany podczas nagrywania/streamowania. Cały nakład pracy spada na GPU. Co ciekawe obciążenie na GPU jest dosyć małe, dzięki temu osiągniemy większą płynność rozgrywki niż używając softwarowego x264.
    Wracając jednak do samego NVENC, skoro nowa wersja zapewnia jeszcze lepsze osiągi to nic tylko brać i się cieszyć. Obecnie nawet "zawodowi" streamerzy czy osoby zwyczajnie wrzucające gameplaye na youtube jeżeli nie mają dedykowanego sprzetu do nagrywania jak zewnętrzne karty do przechwytywania to właśnie korzystają z NVENC i działa to dobrze. Z ulepszonym nvenc powinno być jeszcze lepiej.

  • bandan, #

    Brawa dla tego pana. Ale po co ci threadripper. To jest szajs od amd. a jak ci sie procek nudzi w jakiejś grze to znaczy że to mało wymagająca gra, pewnie jakieś tetris.

Dodaj komentarz

Dodawanie komentarzy tylko w wersji dla PC. Już wkrótce wersja mobilna.

Nie przegap

Psst... Chciałbyś przetestować naszą nową stronę? :)