問題タブ [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.
linux - FFmpeg スクリーンキャストの記録: 使用するコーデックは?
私は、FFmpeg の X11grab モジュールを使用してスクリーンキャストの記録を実験してきましたが、これまでのところ多かれ少なかれうまく機能しています。A/V エンコーディングは細かい点が多い複雑なプロセスであることは理解していますが、学ぶために最善を尽くしています。
ストリームの記録中にシステムにできるだけ負担をかけないように、ビデオ ストリームを「軽量」に記録したいと考えています。pacat と sox を使用して、2 つのオーディオ ストリームを別々に録音します。その後、全体がフィルター処理、正規化、エンコードされ、Matroska コンテナーに結合されます。
現在、x264 の yuv4 demuxer に供給される rawvideo ストリームを ffmpeg で記録しています。以前、ffv1 とストレート x264 レコーディングを試しました。私のシステムは、最終ストリームに必要な設定で x264 を使用したリアルタイム エンコーディングを処理できないため、記録が完了したら個別に再圧縮する必要があります。ffv1 ではひどいフレーム ドロップが発生し、yuv4 でも発生することがわかりましたが、それほどではありません。これは、記録されたデータを保持するためだけに使用されている SATA3 Caviar Black に座っている場合でも、ハード ドライブの速度が原因であると思われます。
問題は、どのビデオ コーデックの組み合わせを見ればよいかということです。x264 で直接記録し、後で「より良い」x264 に再圧縮しますか? 生のビデオを圧縮しますか? 発生しているフレーム ドロップなどの問題を特定するにはどうすればよいですか?
編集:これは私が現在使用しているffmpeg行です。
android - Androidのスレッドサポートを使用してffmpegとx264をコンパイルするには?
x264 と ffmpeg の両方を ANDROID のスレッド サポートでコンパイルしたい .FFmpeg と x264 は、enable-pthreads と enable-threads をそれぞれ有効にした後でも、スレッド サポートでコンパイルされませんでした。
config.h の両方に #define HAVE_THREAD 0 と #define HAVE_PTHREADS 0 が含まれています
1.スレッド対応でコンパイルする方法。2. 2 番目の質問は、gop サイズを 1 から他の値に増やすと、エンコーダーが後続の特定のフレームに対して 0 を返すことです。これにより、ビデオの再生に 3 ~ 5 秒以上の遅延が発生します。
video - 「keyint 無限」は crf と mb-tree で全体的な圧縮を改善しますか?
イントラリフレッシュの機能を読んだ後、ちょっと混乱しました。私は YouTube 用にエンコードしていますが、いずれにせよ YouTube はビデオ ファイルを再エンコードするので、「これらの重い IDR フレームをすべて削除してみませんか?」と考えました。ビデオをできるだけ圧縮して、ファイルサイズを小さくするのに役立つすべてのものを有効にしながら、高品質を維持したいだけです。
以前はロスレス QP エンコーディングを使用していろいろとテストしていましたが、最大限に活用できたのはmerange だけでした。これが私の x264 設定のペーストです: Pastebin.
視覚的に無損失の品質を維持しながら、最高の圧縮を実現したいと考えています。(約 10 ~ 13 の crf 値と merange 32 を使用)
ビデオを超ハードに圧縮する方法について誰かアドバイスをくれませんか(crf値に触れずに!)。それが本当かどうかも知りたいのですが、keyint 無限は全体的な圧縮を減らします。
ffmpeg - 生の H264 NALU のストリームを MP4 のようなコンテナーにラップする
x264 x264_encoder_encode を使用してオンザフライでエンコーディングから生成された生の h264 NALU を送信するアプリケーションがあります。プレーン TCP を介して取得しているため、フレームが欠落していません。Windows のハードウェア アクセラレーション (DXVA2) を使用して、クライアントでこのようなストリームをデコードできる必要があります。FFMPEGを使用してこれを機能させる方法を見つけるのに苦労しています。Media Foundation や DirectShow を試す方が簡単かもしれませんが、生の H264 は使用できません。次のいずれかが必要です。
サーバー アプリケーションのコードを変更して、mp4 ストリームを返します。私はx264の経験がありません。x264_encoder_encode を呼び出すことで生の H264 を取得できました。次の質問への回答に従ってください: x264 C API を使用して一連の画像を H264 にエンコードする方法は? リアルタイムでストリーミングしながら、これから MP4 でラップされたものに移行するにはどうすればよいですか?
レシーバーでmp4ヘッダーでラップし、DXVAを使用して再生できるものにフィードできます。私はこれを行う方法を知りません
FFMPEG を使用した DXVA など、生の形式で取得する別の方法を使用して、高速化する別の方法を見つけることができました。
重要な制限は、デコードされた各フレームを表示する前に前処理できるようにする必要があることです。単一のステップでデコードと表示を行うソリューションは、私にとってはうまくいきません
どちらのソリューションでも問題ありません
linux - インストールしたのに yasm が見つからない
奇妙な問題が発生しました。x264をインストールしてみました。sudo ./configure --enable-shared を実行すると、次のようになりました。
アセンブラが見つかりません 最小バージョンは yasm-0.7.0 です 本当に asm なしでコンパイルしたい場合は、--disable-asm で設定してください。
しかし、私はすでに yasm-0.7.0 をインストールしていることを証明するために、yasm --version を実行しました。
* yasm 0.7.0.2066 2012 年 5 月 8 日にコンパイル。Copyright (c) 2001-2008 Peter Johnson およびその他の Yasm 開発者。ライセンスの概要と概要については、yasm --license を実行してください。*
yasm を /usr/local/yasm にインストールしましたが、yasm が見つからないのはなぜですか?
c++ - x264 DirectShow フィルターの CLSID
h264 avc video をデコードするためにモノグラムの x264 DirectShow フィルターを使用しました。イントランスを作成し、directshow でグラフにフィルターを追加する必要があります。grapthEdit からその CLSID を確認しました。それは 'x264' です。インスタンスを作成するには、そのフィルターの GUID が必要です。「x264」値を使用してフィルター インスタンスを作成する方法がわかりません。
私はvc++でdirectshowを使用しています
誰でもこれについて考えられますか???
opencv - OpenCV バイナリ展開 (Linux)
研究所では、クラスターで Scientific Linux 5 を使用しており、最新の OpenCV ディストリビューション (2.3.1 または 2.4.0) を使用するアプリをデプロイする必要があります。クラスターに対する root 権限がありません。
基本的に、ffmpeg (およびできれば x264)、opencv のすべての動的バイナリ依存関係をパッケージ化して、アプリを xcopy デプロイできるようにするにはどうすればよいですか?
UbuntuにOpenCV 2.3.1をインストールしています。実行可能ファイルを制御可能にロードし、すべての動的依存関係に沿ってコピーする方法があれば、それを使用できます。
ありがとう、ヴァディム
ffmpeg - ffmpeg で再エンコードする方法 (限定 x264)
これまで、このスクリプトを使用して、ボックス (テレビ デコーダー) のリップを再エンコードしました。
私のubuntuおよびarchlinuxラップトップで動作します。しかし、それは私のデスクトップの魔女がfedoraを実行しているわけではありません。Google によると、rpmfusion から出荷された x264 パッケージは lavf と ffms2 をサポートしていません。そして、smplayer(私が好きな魔女)が必要とするため、アンインストールできません。
わかりましたので、コンパイルする必要があります。次に、Google は、「フラグが正しく参照されるように、ffmpeg、ffms2 tnen x264 をビルドする必要があります」と述べています。まあ、うまくいきませんでした(ffms2はLIBAVを見つけることができません-私がどこにいるのかを教えても-そしてx264はlavfで構成されません...)
私の質問は、ffmpeg を単独で使用して、スクリプトが行うことを実行できるかどうかです。ffmpeg バージョン 0.8.11、x264 0.116.2048 59cb2eb および gcc: 4.6.1 20110804 (Red Hat 4.6.1-7) を使用しています。
編集:わかりました、私はそれを見つけました: ffmpeg -i 入力ファイル -acodec コピー -vcodec libx264 -非常に高速にプリセット -アニメーションを調整 [私が持っていない部分] 出力
linux - Ubuntu 12.04に存在していても、FFmpegはプリセットを認識できません
このドキュメントの手順に従ってffmpegとx264をインストールしました:http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
今、私は実行するこの行を持っています:
次のディレクトリにプリセットがあります。
それでも同じエラーが発生します:プリセット「通常」のファイルが見つかりません
ここでの問題は何ですか?
追加情報-これは私がffmpeg-versionを実行したときに得られるものです
encoding - 複数のビデオを並行してエンコードする方法 (Debian)
Linux Debian でいくつかのビデオ ファイルをMP4およびX264形式にエンコードしたいと考えています。
複数のファイルを並行してエンコードすることは非常に重要です。たとえば、デュアル コード マシンで 2 つのビデオを並行してエンコードし、他のビデオをキューに入れたいとします。ビデオが終了したら、無料のコアがキュー内の次のビデオをエンコードするようにします。また、これが x264 で動作する場合でも、MP4 についてはわかりません。
ここで最善のアプローチは何ですか?x264 は並列エンコードをサポートしていますが、これが複数のファイルの並列エンコードなのか、1 つのビデオの異なるバージョンの並列エンコードなのかはわかりません。エンコーディング プロセスをコア 1 に割り当て、別のプロセスをコア 2 に割り当てる方法はありますか?
敬具、ウルフェン