Zaloguj się Zacznij streamować
← Baza wiedzy
Wszystkie platformyWIDEO

Kodowanie wideo transmisji za pomocą HandBrake lub ffmpeg

16 lip 2026 · 6 min czytania

Steam nie sprawdza transmisji przed jej emisją - waliduje konto, połączenie i kodowanie. Popełnij błąd w którymkolwiek z nich, a sygnał zostanie od razu odrzucony albo zerwany w trakcie streamu bez żadnego ostrzeżenia. Ten artykuł obejmuje wszystkie trzy elementy: kto może transmitować, opublikowaną przez Valve specyfikację kodowania i dlaczego każde ustawienie istnieje, dokąd faktycznie trafia stream oraz czego realistycznie się spodziewać, gdy już jest na żywo.

Czy to konto w ogóle może transmitować?

Żadne z poniższych ustawień kodowania nie ma znaczenia, jeśli samo konto nie ma uprawnień do transmitowania, a to krok, który ludzie pomijają, bo nie ma nic wspólnego z wideo. Steam wymaga, by konto streamujące było nieograniczone (non-limited) - czyli miało co najmniej $5 historycznych wydatków na platformie - oraz posiadało uprawnienie "Broadcast Live" albo było zapisane do Store Broadcast Beta. Konto musi też posiadać grę, która ma być transmitowana, lub mieć do niej dostęp w inny sposób, i nie może być objęte Community Ban. Pomiń którykolwiek z tych warunków, a nawet w pełni zgodny sygnał H.264 High@4.1 i tak nie wejdzie na żywo, a awaria z zewnątrz wygląda identycznie jak błędne kodowanie - stream po prostu odmawia startu, a w logu enkodera nie ma niczego, co można by za to winić. Wyeliminuj tę możliwość, zanim spędzisz wieczór na podważaniu swoich ustawień bitrate. To pięciominutowa kontrola w porównaniu z wielogodzinną króliczą norą kodowania, i tanie ubezpieczenie, by zrobić to na początku, a nie na końcu.

Pełna specyfikacja Valve

Wszystko poniżej pochodzi z oficjalnej dokumentacji Valve na partner.steamgames.com, a nie z zgadywania. Kodek wideo musi to być H.264, Profile High, Level 4.1. Liczba klatek to 30 lub 60 FPS, proporcje obrazu to 16:9, a odstęp klatek kluczowych musi wynosić 2 sekundy. Maksymalny bitrate to 7000 kbps CBR. Dźwięk to AAC-LC, ograniczony do 128 kbps. Żadne z tych wartości nie są sugestiami - Valve waliduje stream względem nich w momencie połączenia, a pole poza specyfikacją to powód, dla którego transmisja wyglądająca dobrze w Twoim enkoderze nigdy nie wchodzi na żywo. Te same liczby omawiamy z szerszym kontekstem w specyfikacjach wideo i kodowaniu dla Steam.

Łączenie się ze Steam: strona RTMP

Kodowanie zgodnie ze specyfikacją daje Ci zgodny sygnał; nadal musisz gdzieś go wysłać, a ta część rzadziej sprawia problemy nie dlatego, że jest nieudokumentowana, tylko dlatego, że jest prostsza niż ustawienia kodowania. Punkt przyjmowania transmisji Steam to standardowy endpoint RTMP: rtmp://ingest-rtmp.broadcast.steamcontent.com/app. Regionu nie wybierasz sam - Steam wybiera za Ciebie faktyczny serwer przesyłania na podstawie lokalizacji konta, tak samo jak wybiera serwery pobierania przy instalacjach gier. Klucz streamu jest generowany na steamcommunity.com/broadcast/upload pod "Create RTMP Token." Podczas tworzenia wybierasz podstawowe App ID gry, a nie wpis DLC czy dema, ponieważ transmisja jest przypięta do podstawowej aplikacji niezależnie od tego, którą edycję promujesz.

OBS to oprogramowanie, po które sięga większość ludzi, by to przetestować, ale nie jest ono niczym specjalnym dla Steam - każdy enkoder obsługujący RTMP łączy się tak samo, czy to OBS, vMix, urządzenie sprzętowe, czy ffmpeg wysyłający bezpośrednio na powyższy adres URL swoim kluczem streamu. W terminologii OBS to usługa streamingowa "Custom", z adresem punktu przyjmowania w polu Server i kluczem w polu Stream Key. Warstwie RTMP nie zależy, co wyprodukowało bity - liczy się tylko, czy po dotarciu są zgodne ze specyfikacją Valve.

Jedna rzecz warta sprawdzenia, jeśli samo połączenie w ogóle się nie nawiązuje, niezależnie od czegokolwiek związanego z kodowaniem: RTMP domyślnie działa na porcie TCP 1935. W domowym połączeniu to rzadko problem, ale w sieci biurowej, firmowym VPN-ie czy zamkniętej maszynie wirtualnej w chmurze wychodzący ruch na porcie 1935 może zostać zablokowany przez zaporę sieciową, która nie ma żadnego problemu ze zwykłym ruchem webowym na portach 80 i 443. Jeśli enkoder w ogóle nie może dotrzeć do adresu przyjmowania transmisji - nie chodzi o odrzucony stream, tylko o brak połączenia - to pierwsza rzecz do wykluczenia, zanim założysz, że problem leży po stronie Steam.

Jedno ustawienie, które zawodzi całkowicie: odstęp klatek kluczowych

Większość pól specyfikacji degraduje się łagodnie, jeśli lekko odbiegniesz od normy - bitrate nieco powyżej limitu może zostać po prostu ograniczony przez punkt przyjmowania Steam. Odstęp klatek kluczowych nie działa w ten sposób. Valve wprost mówi, że jeśli nie wynosi on dokładnie 2 sekundy, Twój stream nie uruchomi się w ogóle. Bez taryfy ulgowej.

Odstęp klatek kluczowych wynoszący 2 sekundy oznacza, że pełna klatka jest kodowana co 2 sekundy, a klatki pomiędzy nimi się do niej odwołują. Przy 30 fps to długość GOP wynosząca 60 klatek; przy 60 fps to 120. Większość enkoderów domyślnie ustawia coś innego - często 4 lub 5 sekund, dostrojone pod rozmiar pliku, a nie zgodność na żywo - więc to ustawienie, które ludzie pomijają, nawet gdy wszystko inne jest poprawne. Valve wymienia tu z nazwy vMix: jego domyślne ustawienie to Main Profile na Level 3.0, i tę kombinację trzeba zmienić, zanim wyjście z vMix przejdzie walidację. Potraktuj to jako ostrzeżenie, że domyślne ustawienia Twojego własnego enkodera też prawdopodobnie nie są domyślnymi ustawieniami Steam, i sprawdź je wprost, zamiast zakładać.

Dlaczego stały bitrate, a nie zmienny

Specyfikacja Valve wymaga CBR, a nie VBR, a powód jest specyficzny dla streamingu na żywo, a nie dla jakości wideo w ogóle. Zmienny bitrate pozwala enkoderowi przeznaczyć więcej bitów na złożone klatki, a mniej na proste, co świetnie sprawdza się w pliku, który obejrzysz raz od początku do końca. Serwer przyjmujący transmisję na żywo musi buforować w oparciu o mniej więcej stałą, oczekiwaną szybkość transferu danych; stream wahający się od 2000 kbps do 9000 kbps i z powrotem sprawia, że ten bufor albo głoduje, albo się przepełnia, a każde z tych zjawisk objawia się jako zacinanie lub zerwane połączenie. CBR poświęca odrobinę jakości na prostych scenach na rzecz szybkości transferu danych, wokół której strona przyjmująca może planować - a dokładnie tego potrzebuje transmisja 24/7.

7000 kbps to udokumentowany przez Valve limit, a nie cel do osiągnięcia. Działanie tuż przy tej granicy nie zostawia marginesu, jeśli Twój materiał źródłowy chwilowo skoczy powyżej ustawionej szybkości transferu, co jest normalnym zachowaniem enkodera nawet w trybie CBR. Bezpieczniejszym celem jest kodowanie kilkaset kbps poniżej limitu - 6000 kbps to rozsądny wybór, i to właśnie z tego powodu jest naszym domyślnym ustawieniem.

Co Steam robi z Twoim sygnałem po jego przyjęciu

Warto wiedzieć, co dzieje się z sygnałem po jego zaakceptowaniu - głównie po to, byś nie budował rozwiązania problemu, który Steam już rozwiązuje. Gdy transmisja przekroczy mniej więcej 10 jednoczesnych widzów, Steam automatycznie włącza transkodowanie i generuje wersje o niższej rozdzielczości - 720p, 480p i 360p - obok Twojego oryginalnego sygnału 1080p. Dzieje się to całkowicie po stronie serwera; nigdy nie wgrywasz więcej niż jeden stream i nigdy sam nie konfigurujesz drabinki rozdzielczości. Pojedynczy sygnał CBR opisany powyżej to jedyny enkoding, za który odpowiadasz. Jeśli jesteś przyzwyczajony do platform, na których samodzielnie wysyłasz wiele wariantów bitrate, tutaj możesz porzucić ten nawyk - jeden czysty sygnał 1080p zgodny z powyższą specyfikacją to cała robota, a to też oznacza, że jakość tego jednego sygnału ma jeszcze większe znaczenie, nie mniejsze, bo to on jest materiałem źródłowym, z którego poniżej progu transkodowania wyprowadzane jest wszystko inne.

Kodowanie w HandBrake

HandBrake da Ci zgodny plik wyjściowy, ale pola istotne dla Steam znajdują się poza domyślnymi presetami. Ustaw kontener na MP4, a kodek wideo na H.264 (x264). W sekcji Framerate wybierz swój cel - 30 lub 60 - i ustaw go na Constant, nie Variable. Do kontroli przepływności użyj Average Bitrate i ustaw ją na 6000 kbps zamiast trybu opartego na jakości (CRF), ponieważ CRF z założenia generuje zmienny bitrate.

Profil, poziom i odstęp klatek kluczowych znajdują się w ciągu opcji x264 na karcie Advanced. Ustaw Profile na High i Level na 4.1 w ich własnych listach rozwijanych, a następnie dodaj keyint=60:min-keyint=60 do ciągu opcji dla 30 fps, lub keyint=120:min-keyint=120 dla 60 fps - to Twój 2-sekundowy odstęp wyrażony w klatkach. Na karcie audio zakoduj dźwięk jako AAC przy 128 kbps.

To samo w ffmpeg

Jeśli wolisz zrobić to skryptem, każde z powyższych pól odpowiada jednej fladze. Poniższe polecenie koduje zgodnie ze specyfikacją przy 30 fps, z docelowym bitrate 6000 kbps i 2-sekundowym GOP:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level 4.1 -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -b:v 6000k -maxrate 6000k -bufsize 12000k -c:a aac -b:a 128k -ar 44100 -pix_fmt yuv420p output.mp4

Kombinacja warta wyjaśnienia to -b:v, -maxratei -bufsize ustawione na te same lub powiązane wartości - to właśnie sprawia, że libx264 faktycznie trzyma się CBR, zamiast dryfować w stronę swojego domyślnego, zbliżonego do VBR zachowania. -g 60 to długość GOP dla 30 fps (użyj 120 przy 60 fps), a -sc_threshold 0 powstrzymuje enkoder przed wstawianiem dodatkowej klatki kluczowej przy cięciach scen, co inaczej złamałoby stały 2-sekundowy odstęp wymagany przez Valve.

Sprawdzanie pliku wyjściowego, zanim uruchomisz go na żywo

Zamiast ufać, że enkoder zrobił dokładnie to, o co prosiłeś, warto odczytać plik jeszcze przed wysłaniem go do punktu przyjmowania Steam. ffprobe, który jest dostarczany razem z ffmpeg, wypisze rzeczywisty profil, poziom i liczbę klatek na sekundę znalezione w pliku wyjściowym, a nie te, o które prosiłeś:

ffprobe -v error -select_streams v:0 -show_entries stream=profile,level,r_frame_rate,bit_rate -of default=noprint_wrappers=1 output.mp4

To pokazuje dokładnie to, co zostało zapisane w pliku - jeśli profil wskazuje "Main" zamiast "High", albo poziom pokazuje 3.1 zamiast 4.1, dowiesz się o tym, zanim powie Ci o tym Steam w twardy sposób. Długość GOP jest nieco trudniejsza do bezpośredniego potwierdzenia, ale zgrubne sprawdzenie polega na policzeniu pakietów wideo w pierwszych kilku sekundach; przy 30 fps z 2-sekundowym odstępem powinieneś zobaczyć klatkę kluczową mniej więcej co 60. klatkę. To mały krok, ale zamienia "stream został odrzucony, co teraz" w "poziom jest zły, popraw to jedno pole" - dużo krótszą pętlę debugowania.

Opóźnienie: czego naprawdę się spodziewać

Valve nie publikuje oficjalnej wartości opóźnienia dla transmisji na stronie sklepowej, więc wszystko, co przeczytasz na ten temat - łącznie z tym tekstem - traktuj jako zgłaszaną wartość, a nie specyfikację. Przy tym zastrzeżeniu: użytkownicy powszechnie zgłaszają opóźnienie rzędu 30 sekund przy transmisjach na stronie sklepowej, wobec około 15 sekund na Twitchu. Własne notatki wydań Valve twierdziły o opóźnieniu poniżej 1 sekundy, ale konkretnie dla transmisji 1 na 1 między znajomymi, a nie sygnału na stronie sklepowej, a niektórzy użytkownicy zgłaszają, że ta poprawa w ogóle nigdy nie pojawiła się przy transmisjach na stronie sklepowej. Traktuj wartość ~30 sekund jako przybliżoną liczbę zgłaszaną przez społeczność, a nie coś, za czym Valve stoi na piśmie.

Dla zapętlonego, nagranego wcześniej wideo nic z tego w praktyce nie ma znaczenia. Opóźnienie staje się problemem tylko wtedy, gdy ktoś po drugiej stronie musi wchodzić w interakcję z tym, co dzieje się na żywo - czytać czat, reagować w czasie rzeczywistym, mierzyć czas odliczania. Pętla 24/7 zwiastuna lub materiału z rozgrywki nie ma niczego na żywo, co mogłoby się rozsynchronizować, więc 30-sekundowe opóźnienie jest niewidoczne dla kogoś, kto po prostu ogląda Twoją stronę sklepową. To realne ograniczenie tylko wtedy, gdy próbujesz przeprowadzić coś interaktywnego przez to samo połączenie; zobacz prowadzenie zapętlonej, nagranej wcześniej transmisji , by dowiedzieć się, co sprawdza się jako pętla, a co nie.

Albo pomiń enkoder całkowicie

Wszystko powyższe istnieje dlatego, że punkt przyjmowania Steam jest bezwzględny wobec kodowania, a nie dlatego, że te liczby trudno znaleźć. Dzięki Loopcast wgrywasz dowolny plik, jaki masz, a my automatycznie transkodujemy go do 1920x1080 przy 30 fps, z 2-sekundowym odstępem klatek kluczowych, 6000 kbps CBR i dźwiękiem AAC-LC przy 128 kbps i 44.1 kHz - dokładnie ta sama specyfikacja opisana powyżej, zastosowana bez dotykania przez Ciebie ustawień kodeka czy adresu RTMP. Gdy już masz klucz streamu od Steam, zobacz jak zdobyć klucz streamu , by go podłączyć, a jeśli stream kiedykolwiek odmówi uruchomienia, rozwiązywanie problemów z transmisją opisuje najczęstsze przyczyny, zarówno związane z kodowaniem, jak i z uprawnieniami.

Pomiń ustawienia enkodera

Wgraj film, wklej swój klucz streamu Steam, kliknij start. Od $0.72/dzień.

Zacznij streamować · $0.72/dzień
Coś nie działa? Zapytaj na naszym Discordzie →