問題タブ [x264]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ffmpeg - Debian Squeeze の「不明なエンコーダー: libx264」エラー
ここで述べたようにFFMPEGをビルドしてインストールしました。
しかし、このコマンドを実行してビデオを実行すると:
次のエラーが表示されます。
Debian Squeeze を使用しています。どうすればこれを修正できますか? 助けてください
ありがとう!!
ffmpeg - ffmpegのコンパイル:特定のlibx264にリンクするように強制する方法は?
最新バージョンのffmpeg(CentOS 5.3)をコンパイルしようとしています。私は最初にlibx264の最新バージョンをダウンロードし、それをコンパイルして--enable-static
にインストールしました/usr/local/
。ただし、ffmpegをコンパイルすると、次のエラーメッセージが表示されます。
ネットで検索すると、ffmpegが古いバージョンのlibx264を取得している場合にこれが発生する可能性があります/usr/lib
。これは、他のソフトウェアが依存しているため、実際に(で)アンインストールできません。問題は、どうすればffmpegを強制的に必要なlibx264に対してリンクさせることができるかということです。前回(確かに1年前に)これをしなければならなかったとき、私はlibx264の2つのバージョンも持っていました、そして私は特別なことをしなければならなかったことを覚えていません。忘れている設定スイッチはありますか?
.net - x264vfwフィルターから出力データを取得します
x264エンコーダーからH264ストリームを取得し、ある種のライブストリーミングサーバーを作成する必要があります。クライアントはサーバーに接続し、rtsp受信ビデオを介して接続します。x264vfw出力ピンからデータを取得するにはどうすればよいですか?どのようにそれをより良くしますか?
video-encoding - mbtree オプションを使用した libx264 2 パス エンコーディング、最初のパスが失敗する
libx264 を使用するアプリケーションに取り組んでいます。2 パス エンコードを行う場合、mbtree オプションが有効になっていると、最初のパスは統計ファイルに何も入れないようです。
2 回目のパスで x264_encoder_open() を実行すると、失敗メッセージが表示されます。
そのため、最初のパスで失敗しているようです。mbtree をオフにすると、2pass は正常に動作します。mbtree がオフになっている限り、プリセットまたは調整パラメーターを使用して実行できます。最初のパスで mbtree が失敗する可能性のあるパラメーター (上記のリストを参照) はどれですか?
video-streaming - x264 レート制御
ビデオ会議プロジェクトで x264 エンコーダーを使用しています。基本的なストリーミング ビデオは機能していますが、さまざまなレート制御設定が最終的なビットレートを決定する方法を理解するのに苦労しています。次のパラメーターを設定します。
params.rc.i_bitrate パラメーターのみを設定すると、エンコーダーはビットレートを大幅にオーバーシュートするように見えます。i_vbv_max_bitrate と i_vbv_buffer_size パラメーターを設定すると、i_vbv_max_bitrate 設定をピークにする (場合によってはオーバーシュートする) ビットレートが表示されます。ビデオ会議では、バイトレートを厳密に制御することが明らかに重要ですが、ドキュメントは不透明です。ビデオ会議に x264 を使用している人はいますか? エンコーダーの設定はどうしていますか?事前に感謝します。
x264 - x264エンコーディングの高速化(libavcodecを使用したC ++コード)
Windows画面(連続スクリーンショット)をキャプチャしてx264にエンコードしようとしています。そのために、libavcodecで使用可能なavcodec_encode_video2関数を使用しています。ただし、かなりの時間がかかります。個々のフレームをエンコードする時間は、25〜1800ミリ秒の間で変動します。
画面にビデオを録画して、1080pと720pの両方を試してみました。
これらは私が使用している設定です。これは、4GBのRAMを搭載したWindows7、win32リリースビルドでテストされました。
bit_rate = 2000、width = 1920、height = 1080 qmin = 0、qmax = 0、max_b_frames = 0、frame_rate = 25、pixel_format = YUV 4:4:4。残りの設定はデフォルトであり、avcodec_get_context_defaults3()を使用してフェッチされます。
250フレームのセットで20フレーム(連続してランダムに選択)のサンプルデータ(ミリ秒単位)。{121、106、289、126、211、30、181、58、213、34、245、50、56、364、247、171、254、83、82、229}
アプリケーションの場合、少なくとも15fpsをキャプチャする必要があります。フレームレートを改善するためにオプションを使用できるかどうかを誰かが教えてくれますか?ロスレスでエンコードする必要がありますが、ファイルサイズがいくらか大きくなる可能性があります。
前もって感謝します。
ffmpeg - 複数のビットレート出力ファイル用に x264 で ffmpeg を最適化する方法
目標は、単一のソース ファイルからビットレートのみが異なる複数の出力ファイルを作成することです。文書化されたこれに対する解決策は機能しましたが、非効率的でした。私が見つけた最も効率的な解決策は、私が見ることができるどこにも文書化されていませんでした。レビューのためにここに投稿し、実行できる追加の最適化を他の人が知っているかどうかを尋ねています.
各ビットレートでのビデオ品質は重要であるため、「中」プリセットを使用して 2 パス モードで実行しています。
VIDEO_OPTIONS_P2 = -vcodec libx264 -preset medium -profile:v main -g 72 -keyint_min 24 -vf scale=720:-1,crop=720:400
最初のアプローチは、それらすべてを並列プロセスでエンコードすることでした
明らかな非効率性は、ソース ファイルが各プロセスで同じように読み取られ、デコードされ、スケーリングされ、トリミングされることです。これを一度実行してから、エンコーダーに結果をフィードするにはどうすればよいでしょうか?
単一の ffmpeg コマンドですべてのエンコードを生成すると、重複する手順が最適化されることが期待されていました。
ただし、エンコード時間は、以前のマルチプロセス アプローチとほぼ同じでした。これにより、すべてのステップが再び重複して実行されていると思われます。
ffmpeg に読み取り、デコード、およびスケーリングを 1 回だけ実行させるために、これらの手順を 1 つの ffmpeg プロセスに入れ、その結果をエンコードを実行する別の ffmpeg プロセスにパイプしました。これにより、全体の処理時間が 15% ~ 20% 改善されました。
この方法で潜在的な問題が発生する可能性があるか、より良い方法を知っている人はいますか?
ffmpeg - 複数のビットレート出力ファイルに ffmpeg / x264 2-Pass エンコーディングを使用する方法
複数の出力ファイルに 2 パス エンコードを実行しているときに、エラーが発生しました
私の設定では、最初のパスを 1 回実行してから、複数回の 2 回目のパス エンコードを行って、同じ最初のパスの結果を使用して異なるターゲット ビットレートのファイルを出力します。
このシーケンスにより、上記のエラーが発生しました。コード検査で発見したことは、ffmpeg/x264 が 2 番目のパスのエンコーディング パスごとに異なる 1 番目のパス ファイルのセットを探すことです。最初のエンコーディング パスは、最初に作成された一連のファイルを使用します。
2 番目のエンコーディング パスには、次の名前の最初のパス ファイルが必要です。
3 番目のエンコーディング パスには、ffmpeg2pass-4* などで始まる名前の初回パス ファイルが必要です。
私の解決策は、2 番目のパス コマンドを実行する前に、各パスに必要な新しい名前を使用して、最初に作成された一連のファイルへのソフト リンクを作成することでした。
必要な出力エンコードが得られるため、これはうまくいくようです。ただし、この方法が合法かどうかはわかりません。あるビットレート (700k) の最初のパスの出力を、他のビットレートの 2 番目のパスのエンコーディングへの入力として使用すると、最適ではないエンコーディング結果が得られますか?
opengl - opengl と x264 によるリアルタイム 3D グラフィックスの高速エンコーディング
サーバーでレンダリングされるとすぐに実行される 3D グラフィックスからクライアントに圧縮ビデオを送信するシステムに取り組んでいます。私はすでにコードを動作させていますが、もっと高速になる可能性があると感じています (そして、それはすでにシステムのボトルネックになっています)。
これが私がやっていることです:
まず、フレームバッファを取得します
次に、フレームバッファを反転します。これは、変換時に画像を垂直方向に反転する swsScale (色空間変換に使用している) に奇妙なバグがあるためです。私は前もってめくっていますが、空想は何もありません。
次に、YUV420pに変換します
次に、x264エンコーダーを呼び出すだけです。私はすでに zerolatency プリセットを使用しています。
私の推測では、これを行うためのより高速な方法があるはずです。フレームをキャプチャし、YUV420p に変換します。GPU で YUV420p に変換し、その後システム メモリにコピーするだけでよいでしょう。うまくいけば、反転する必要なく色変換を行う方法があります。
より良い方法がない場合、少なくともこの質問は、これをやろうとしている人、私と同じ方法でやろうとしている人を助けるかもしれません.
video - x264でI_PCMモードを強制することは可能ですか?
x264を使用して圧縮されているビデオの一部のIフレームに対して、すべてのブロックでI_PCMモードを使用する必要があります。これらのフレームは膨大なスペースを必要とすることは知っていますが、ソースにできるだけ忠実に保ち、エンコード/デコードを非常に高速にする必要があります(I_PCMは超高速でロスレスである必要があります)。x264にプログラムでこれを実行させる方法はありますか?これを行うためにlibx264を使用していますが、特定のフレーム内でカスタムマクロブロックタイプを指定する方法が見つかりません。サポートされていない場合、ライブラリを変更するのはどれほど難しいでしょうか。また、最初にどこを見ればよいでしょうか。