問題タブ [libavcodec]
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.
c++ - C/C++ の Linux で libavcodec を使用するとエラーが発生する
問題: AVFormatContext::nb_streams の値が小さすぎます。私のC++コード(リストを減らすために省略されたエラー処理、インクルードなど):
ランニング:
しかし、「avplay」プログラムはうまく機能します。
libavcodec - libavcodec を使用した mpeg1 エンコーディングのパフォーマンスの低下
HD および SD コンテンツのプロキシ ビデオを作成するために mpeg1 コーデックを使用しています。Mpeg1の解像度とビットレートは; HD ビデオ プロキシの場合: 704x576 4.5 Mbit SD ビデオ プロキシの場合: 352x288 1.5 Mbit
私のビデオ パラメータは次のようになります。パラメータを変更するためにパフォーマンスを向上させるにはどうすればよいですか...
よろしくお願いします、
encoding - ffmpeg API h264 でエンコードされたビデオがすべてのプラットフォームで再生されない
編集:以前のバージョンでは、非常に古い ffmpeg API を使用していました。現在、最新のライブラリを使用しています。問題は、「メイン」から「高」にわずかに変化しただけです。
ffmpeg C API を使用して、C++ で mp4 ビデオを作成しています。
結果のビデオをできるだけ多くのプラットフォーム、特にモバイルで再生できるように、結果のビデオを「制約付きベースライン」プロファイルにしたいのですが、コーデックをハードコーディングしたにもかかわらず、毎回「高」プロファイルを取得しますプロファイルはFF_PROFILE_H264_CONSTRAINED_BASELINEになります。その結果、ビデオはすべてのテスト プラットフォームで再生されません。
これは、「ffprobe video.mp4 -show_streams」が私のビデオストリームについて語っていることです:
これは、ビデオ ストリームを追加するために使用する関数です。ptr-> から来るすべての値は外部から定義されます。これらの値は、正しいプロファイルを取得するために特定の値である必要がありますか?:
追加情報:
参照ビデオとして、Mozilla がすべてのプラットフォーム/ブラウザーで再生する例として提供する gizmo.mp4 を使用します。それは間違いなく「制約付きベースライン」プロファイルを持ち、テスト中のすべてのスマートフォンで確実に動作します. こちらからダウンロードできます。私たちの自作ビデオは、すべてのプラットフォームで機能するとは限りません。これは、プロファイルが原因であると確信しています。
また、mp4 を作成した後、 qt-faststart.exeを使用してヘッダーをファイルの先頭に移動しています。これは、C++ では適切な方法で直接行うことができないためです。それが問題でしょうか?
明らかに、私は何か間違ったことをしていますが、それが何であるかはわかりません。私はすべてのヒントに感謝します;)
encoding - sws_scaleは、小さいx264mp4エンコーディングで最後のピクセル行を台無しにします
PIX_FMT_ARGB形式の画像をmp4ビデオに多重化しています。
送信画像の最後のピクセル行がめちゃくちゃになっていることを除いて、すべてうまく機能します。ほとんどの場合、最後の行は完全に黒で、他の色がある場合もありますが、それが実行されているマシンに何らかの形で依存しているようです。
スケーリングの前後に画像を保存しているので、エラーはsws_scaleにあるはずです。入力画像にエラーはありませんが、sws_scale()の後で、yuv画像を保存すると、エラーが明らかになります。
次に例を示します。
オリジナル
Yuvfile(sws_scaleの後)
Yuvfileの下部に、黒い行が表示されます。
これは私がスケーリングを行う方法です(それは公式のffmpegの例の後です、多かれ少なかれ):
また、いくつかの異なるSWS_フラグを試しましたが、すべて同じ結果になります。
これはsws_scaleのバグでしょうか、それとも何か間違ったことをしていますか?ffmpegライブラリの最新バージョンを使用しています。
ffmpeg - ffmpeg ライブラリを使用してテキスト字幕を抽出する
私は ffmpeg の libav* ライブラリを使用する C プログラムを作成しており、ドレンジャーのチュートリアルを使用して、オーディオとビデオの両方を正しくデコードできます。現在、字幕を抽出しようとしています。私は実際にそれらを時間通りにデコードしてビデオに表示したくありませんが、実際にはコンテナーから字幕テキストを抽出します。
たとえば、cli では、
お尻のファイルを返してくれます。(何らかの理由で、srts はテキストのみを返します。)
AVSubtitle、avcodec_decode_subtitle2 などをいじってみましたが、字幕が 1 行ずつ返されます。srts のタイムコード、ass のヘッダー情報などが必要です。必要なのは、コンテナーに多重化された字幕テキスト ファイル全体だけです。
android - FFMPEG を使用した動画からのサムネイル/画像抽出の高速化
このコマンドを使用して、ビデオから一連の画像を抽出し、それらをビデオの視覚的な時間枠として表現しています。
ffmpeg -i inputfile.mp4 -r 1 -t 12 image-%d.jpeg
私のビデオのほとんどは mp4 形式です。画像を正常に抽出できますが、抽出に時間がかかりすぎます。
画像抽出の時間を短縮する方法はありますか?
編集: MP4 形式でエンコードされた 15 秒の長いビデオから 8 つのサムネイルを取得するのに 60 秒かかります。Galaxy Nexus(Android Phone)でこの操作を行っています。操作の速度を向上させる方法はありますか? 〜10秒以内です。
libavcodec - sws_scale の代替
libavcodecを使って、キャプチャーしたwindows画面をx264でエンコードしています。入力はRGBなので、x264に対応するためにYUVに変換しています。同じために sws_scale 関数を使用しています。私の質問は、私の場合はスケーリングを行う必要がないため、この機能に代わるものがあるかどうかです。また、誰かがこの機能のワークフローに光を当ててくれると助かります。
PS: x264 は YUV 色空間でのみ動作すると想定しています。この仮定が間違っている場合は、同じことをお知らせください。
前もって感謝します。
ffmpeg - DVD のタイトルとチャプター情報を取得するには?
ffmpeg を使用した DVD メニューの作成に関する多くの質問を見つけましたが、DVD 構造情報へのプログラムによるアクセスに関する質問は見つかりませんでした。libav (または FFmpeg) ライブラリを使用すると、DVD イメージ (iso ファイル) を開き、ビデオ、オーディオ、字幕ストリームにアクセスできます。しかし、私はAPIを見つけることができませんでした。
VLCプレーヤー(およびlibvlcライブラリ)を使用して、ビデオと見つかった情報を再生できます。しかし、オーディオと字幕ストリームをプログラムで処理する必要があります。SmartRipper などのツールを使用して VOB を分割し、それから処理を行いたくありません。
libav(ffmpeg) には DVD メニューを扱うための API が含まれていますか? そうでない場合、1 フレーム (サンプル、AVPacket) の精度でタイトル (チャプター) の開始時間と終了時間に関する情報を取得するために使用できる他のライブラリをお勧めできますか?
libdvdnav ライブラリについて聞いたことがありますが、それが自分に適しているかどうかはわかりません。libav と DVD 形式の内部構造は初めてです。
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をキャプチャする必要があります。フレームレートを改善するためにオプションを使用できるかどうかを誰かが教えてくれますか?ロスレスでエンコードする必要がありますが、ファイルサイズがいくらか大きくなる可能性があります。
前もって感謝します。