2011-01-17 84 views
0

私はffmpegライブラリに大きな問題があります。
まず、タイムスタンプが何らかのランダムな順序で到着しています。
たとえば、解凍する場合、タイムスタンプ8000は4000より前になります。これらのタイムスタンプを無視してビデオを再生すると、フレームが本当にランダムな順序で到着していることがわかります。だから、最初の質問はそれをどう扱うのだろうか?それは普通ですか?私はそれがどうしてそんなに可能なのか本当に理解していない。ffmpeg - mpeg4(H.264)タイムスタンプと画質

質問nubmer two ..
画質がとても悪いです。アンチエイリアスが必要なようです。 VLCは、適切なフレーム順序とはるかに優れた画質で同じクリップを再生します。

私のアプリケーションのカラーフォーマットは標準のYV12です(私は伸張後に変換しませんでした)。ビデオミキシングレンダラー9フィルターでレンダリングされています。 (私はDirectShowフィルタとしてffmpegを使用していません)。

(ffmpegのはそんなに悪いですか、私はそれでフレームを取得するだけでいくつかの余分なスキルを開発する必要がありますか?)

+0

libavformatとlibavcodec C APIを使用しているのですか、コマンドラインからffmpegを使用していますか? –

+0

Jason、私はlibavformat APIとlibavcodec APIを使用しています。私はsws_scale()を使用しません。 –

答えて

1

私はタイムスタンプに問題があると信じているビデオは、(B-フレームが含まれている場合双方向的に予測される)、フレームは、表示順序の外にビットストリーム内で生じる。このため、デコードされたフレームのPTSを決定するときは特に注意する必要があります。 this page of a good ffmpeg tutorialを見て、彼らがこの問題をどのように処理するかを見てください。

基本的に、デコードされたフレームごとに最初のパケットのPTS値を保存する必要があります。デコード後のAVFrame構造体のPTS値は無効です。

品質問題に関しては、これはタイムスタンプの問題と関連しているかもしれないし、そうでないかもしれませんが、私はあなたが広く使用されているffmpegライブラリ自体ではなく、あなたのビデオをデコードする際のVLCによるバックエンド。

私はthe tutorialを見て、ちょうどあなたがそれを動作させることができるかどうかを見るためにちょうど同じものを実装し、次にあなたのニーズに合わせてチュートリアルコードを修正します。

+0

ジェイソン、私はあなたがここに掲載する前にあなたが言及した両方のリンクを調べた。しかし、最初のものはちょっと混乱しますが、「私たちはフレームを並べ替えることができる」と言います。私はそうするだろうと思う。 2番目はかなり古くなっていますが、ffmpegのためにおそらく最も入手可能なドキュメントです。 –

関連する問題