サインイン 配信を始める
← ナレッジベース
すべてのプラットフォーム動画

HandBrakeまたはffmpegで配信動画をエンコードする

2026年7月16日 · 読了6分

Steamは配信を放送前に審査しません。検証するのはアカウント、接続、そしてエンコードです。そのいずれか1つでも間違えると、フィードは即座に拒否されるか、警告なしに配信の途中で切れます。この記事はその3つすべてを扱います。誰が配信を許可されているか、Valveが公開しているエンコード仕様と各設定が存在する理由、ストリームが実際にどこへ向かうのか、そして配信開始後に現実的に何を期待すべきかです。

そもそもこのアカウントは配信できるのか

以下のエンコードは、アカウント自体が配信を許可されていなければどれも意味を持ちません。そしてこれは、動画とは何の関係もないために人々が飛ばしてしまう手順です。Steamは、配信アカウントが制限なし、すなわちプラットフォームでの過去の支出が最低$5あること、そして「Broadcast Live」の権限を持っているか、Store Broadcast Betaに登録されていることを要求します。アカウントはさらに、配信されるゲームを所有しているか、そうでなければアクセス権を持っている必要があり、Community Bannedであってはなりません。そのいずれか1つでも欠ければ、完全に仕様に準拠したH.264 High@4.1のフィードでも配信は始まらず、その失敗は外から見ると不正なエンコードとまったく同じに見えます。ストリームがただ起動を拒否するだけで、エンコーダーのログには責めるべきものが何もありません。ビットレート設定を一晩じゅう疑う前に、これを除外しておいてください。数時間に及ぶエンコードの泥沼に対して、これは5分の確認であり、最後ではなく最初に行っておくのが安上がりな保険です。

Valveの仕様、その全容

以下のすべては、Valve自身のドキュメント、 partner.steamgames.comから来ており、当て推量ではありません。映像コーデックはH.264、Profile High、Level 4.1でなければなりません。フレームレートは30または60 FPSのいずれか、アスペクト比は16:9、そしてキーフレーム間隔は2秒でなければなりません。最大ビットレートは7000 kbps CBRです。音声はAAC-LCで、128 kbpsが上限です。これらはどれも推奨事項ではありません。Valveは接続時にストリームをこれらに照らして検証し、仕様外の項目こそが、エンコーダー上では問題なさそうに見える配信が一向に始まらない理由なのです。同じ数値をより詳しい背景とともに、 Steam向けの映像仕様とエンコードで扱っています。

Steamへの接続。RTMPの側面

仕様どおりにエンコードすれば準拠したフィードは得られますが、それをどこかへ送らなければなりません。この部分で人がつまずくことが少ないのは、文書化されていないからではなく、エンコード設定より単純だからです。Steamの配信取り込み先は標準的なRTMPエンドポイントです。 rtmp://ingest-rtmp.broadcast.steamcontent.com/app。リージョンを自分で選ぶことはありません。Steamが、ゲームのインストール時にダウンロードサーバーを選ぶのと同じように、アカウントの所在地に基づいて実際のアップロードサーバーをあなたのために選びます。ストリームキーは、 steamcommunity.com/broadcast/upload の「Create RTMP Token」で生成される分です。作成する際には、DLCやデモのエントリーではなく、ゲームの基本アプリケーションIDを選択します。配信は、あなたがどのエディションを宣伝していても、基本アプリに紐づくからです。

OBSは、これをテストするために多くの人が手に取るソフトウェアですが、Steamにとって特別なものではありません。RTMPに対応したエンコーダーなら、OBSでも、vMixでも、ハードウェア機器でも、ストリームキーを使って上記のURLへ直接送り込むffmpegでも、どれも同じように接続します。OBSの用語で言えば、これは「Custom」のストリーミングサービスで、Serverの欄に取り込みURLを、Stream Key の欄にキーを入れます。RTMPの層は、ビットが何によって生成されたかを気にしません。到着した時点でValveの仕様に一致していることだけを気にします。

接続そのものが確立しない場合に、エンコードに関するどんなことともは別に確認する価値のあることが1つあります。RTMPはデフォルトでTCPポート1935上で動作します。家庭の回線ではこれが問題になることはめったにありませんが、オフィスのネットワーク、企業のVPN、あるいは制限の厳しいクラウドVMでは、80や443での通常のウェブトラフィックには何の問題もないファイアウォールによって、送信方向の1935がブロックされることがあります。エンコーダーが取り込みURLにそもそも到達できない場合、つまり拒否されたストリームではなく、単に接続がない場合、それがSteam側の問題だと決めつける前に最初に除外すべきことです。

手ひどく失敗する唯一の設定。キーフレーム間隔

仕様の項目のほとんどは、少しずれていてもうまく劣化して吸収されます。上限を少し超えたビットレートは、Steamの取り込み側で単に上限に抑えられるだけかもしれません。キーフレーム間隔はそのようには働きません。Valveは、それがちょうど2秒でなければストリームは起動に失敗すると明言しています。部分点はありません。

キーフレーム間隔が2秒というのは、2秒ごとに完全なフレームがエンコードされ、その間のフレームがそれを参照する、という意味です。30 fpsではGOP長は60フレーム、60 fpsでは120フレームになります。ほとんどのエンコーダーは別の値をデフォルトにしており、多くはライブ準拠ではなくファイルサイズに合わせて調整された4秒や5秒です。そのため、これは他のすべてが正しくても人が見落とす設定です。ValveはここでvMixを名指しで挙げています。そのデフォルトはMain ProfileのLevel 3.0であり、vMixの出力が通るためにはその組み合わせを変更しなければなりません。それを、あなた自身のエンコーダーのデフォルトもおそらくSteamのデフォルトではないという警告として受け止め、思い込みで済ませずに明示的に確認してください。

なぜ可変ではなく固定ビットレートなのか

Valveの仕様はVBRではなくCBRを求めており、その理由は映像品質一般ではなくライブ配信に特有のものです。可変ビットレートは、エンコーダーが複雑なフレームにより多くのビットを、単純なフレームにより少ないビットを割り当てることを可能にし、これは通しで一度見るファイルには最適です。ライブ取り込みサーバーは、おおよそ一定と見込まれるデータレートを前提にバッファリングしなければなりません。2000 kbpsから9000 kbpsへ、そしてまた戻るというように振れるストリームは、そのバッファを枯渇させるかあふれさせるかのどちらかにし、そのどちらもカクつきや接続断として現れます。CBRは、単純なシーンでの品質を少し犠牲にして、取り込み側が見込みを立てられるデータレートと引き換えにします。それがまさに24時間365日配信に必要なものです。

7000 kbpsはValveが文書化した上限であって、目標ではありません。ぎりぎりまで攻めると、ソース素材が設定したレートを一瞬上回って跳ねた場合に余裕がなくなります。これはCBRモードでも通常のエンコーダーの挙動です。より安全な目標は、上限より数百kbps低くエンコードすることです。6000 kbpsは妥当な選択であり、私たちも同じ理由でそれをデフォルトにしています。

取り込み後にSteamがあなたのフィードに対して行うこと

フィードが受理された後に何が起きるかを知っておく価値があります。主に、Steamがすでに解決している問題に対して過剰に作り込まないためです。配信が同時視聴者おおよそ10人を超えると、Steamは自動的にトランスコードを有効にし、オリジナルの1080pフィードと並んでより低い解像度版、720p、480p、360pを生成します。それは完全にサーバー側で起こります。あなたが2つ以上のストリームをアップロードすることも、解像度の段階を自分で設定することも決してありません。上で説明した単一のCBRフィードが、あなたが責任を負う唯一のエンコードです。自分で複数のビットレートのバリアントを送り出すプラットフォームに慣れているなら、ここではその習慣を捨てて構いません。上記の仕様どおりのきれいな1080pフィードが1つ、それが仕事のすべてです。そしてそれは、その1つのフィードの品質が、より小さくではなくより大きく重要になることも意味します。それはトランスコード閾値の下で他のすべてが派生する元となるマスターだからです。

HandBrake でのエンコード

HandBrake でも規格に準拠した出力は得られますが、Steam にとって重要な設定項目はデフォルトのプリセットの外側にあります。コンテナを MP4 に、動画コーデックを H.264 (x264) に設定してください。Framerate では目標値 - 30 または 60 - を選び、Variable ではなく Constant に設定します。レート制御には Average Bitrate を使い、品質ベース (CRF) モードではなく 6000 kbps に設定してください。CRF はその仕組み上、可変ビットレートを生成するためです。

プロファイル、レベル、キーフレーム間隔は、Advancedタブのx264オプション文字列の中にあります。それぞれのドロップダウンでProfileをHighに、Levelを4.1に設定し、30 fpsの場合はオプション文字列に keyint=60:min-keyint=60 を、60 fpsの場合は keyint=120:min-keyint=120 を追加します。それがフレームで表現したあなたの2秒間隔です。オーディオタブでは、AACで128 kbpsにエンコードします。

ffmpeg で同じことを行う

スクリプトで処理したい場合は、上記のすべての項目がフラグに対応します。以下は、30 fps・6000 kbps 目標・2 秒 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

説明する価値のある組み合わせは、 -b:v-maxrate-bufsize を同じ値、または関連する値に設定することです。それこそが、libx264をデフォルトのVBRのような挙動へ流れさせるのではなく、実際にCBRを守らせるものです。 -g 60 は30 fpsのGOP長で(60 fpsでは120を使います)、 -sc_threshold 0 は、エンコーダーがシーンの切り替わりで余分なキーフレームを挿入するのを止めます。さもなければValveが要求する固定2秒間隔を崩してしまうからです。

配信を開始する前に出力を確認する

エンコーダーが指示どおりに動作したと信じ込むのではなく、Steam のイングェストに送る前にファイルを読み返してみる価値があります。ffmpeg に付属する ffprobe は、あなたが要求した値ではなく、出力ファイルから実際に検出したプロファイル、レベル、フレームレートを表示します:

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

これは、ファイルに実際に焼き込まれた内容をそのまま表示します - プロファイルが "High" ではなく "Main" と表示されたり、レベルが 4.1 ではなく 3.1 と表示されたりすれば、Steam に厳しく指摘される前に気づけます。GOP 長を直接確認するのはもう少し手間がかかりますが、大まかなチェックとしては最初の数秒間の動画パケットを数える方法があります。30 fps で 2 秒間隔なら、おおよそ 60 フレームごとにキーフレームが見えるはずです。小さな手順ですが、これによって「配信が拒否された、さてどうしよう」が「レベルが間違っている、その一項目を直せばいい」に変わります - デバッグのループがずっと短くなります。

レイテンシ:実際にどの程度を見込むべきか

Valve はストア配信の公式なレイテンシ値を公表していないため、これについて読むもの - ここに書かれているものも含めて - は仕様ではなく報告値として扱ってください。その但し書きの上で言えば、ユーザーはストア配信で約 30 秒のレイテンシをよく報告しており、これは Twitch のおよそ 15 秒に対しての数字です。Valve 自身のパッチノートでは 1 秒未満のレイテンシが謳われたことがありますが、それはストアページのフィードではなく、特に 1 対 1 のフレンド配信に関するものであり、その改善はストア配信ではまったく現れなかったと報告するユーザーもいます。この約 30 秒という数字は、Valve が文書で保証しているものではなく、コミュニティが報告する大まかな数値として捉えてください。

ループする録画済みの動画にとって、これらは実際にはどれも問題になりません。遅延が問題になるのは、向こう側にいる誰かがライブで起きていることとやり取りする必要があるとき、つまりチャットを読んだり、リアルタイムで反応したり、カウントダウンのタイミングを合わせたりするときだけです。トレーラーやゲームプレイ映像を24時間365日ループするものには、ずれるべきライブの要素が何もないため、30秒の遅延はあなたのストアページをただ見ている人には気づかれません。それが本当の制約になるのは、同じ接続を通じて何かインタラクティブなものを動かそうとしている場合だけです。ループとして何がうまく機能し、何が機能しないかについては、 ループする録画済み配信を運用する を参照してください。

あるいはエンコーダーを完全に省略する

上記のすべてが存在するのは、数値を見つけるのが難しいからではなく、Steam のイングェストがエンコードに対して容赦がないからです。Loopcast なら、手持ちのどんなファイルでもアップロードするだけで、こちらが自動的に 1920x1080・30 fps・2 秒キーフレーム間隔・6000 kbps CBR、そして 128 kbps・44.1 kHz の AAC-LC 音声にトランスコードします - 上で説明したのと同じ規格を、コーデック設定や RTMP URL に一切触れることなく適用します。Steam からストリームキーを取得したら、 ストリームキーの取得 を参照して接続してください。また、配信がどうしても開始しない場合は、 配信のトラブルシューティング でエンコードと資格の両面から、最も一般的な原因を解説しています。

エンコーダー設定を省略する

動画をアップロードし、Steam ストリームキーを貼り付けて、スタートを押すだけ。$0.72/日 から。

配信を始める · $0.72/日
困ったときは Discord で質問できます →