2013-05-20 48 views
5

これまでは、ffmpegを使用して固定フレームを使用して(プログラムで)エンコーディングをすべて行っていました。今私は可変フレームレートをサポートする必要があります。私はちょうどフレームレートを設定していた私のコードの部分をコメントすることから始めました。 しかし、動作していません。私の関数はavcodec_open2で失敗しています。可変フレームレートをサポートする方法を教えてください。 また、すべてのコーデックで可変フレームレートがサポートされているわけではありません。そのため、通常は可変フレームレートでエンコードするときにどのコーデックが使用されますか。提案してください。ffmpegでの可変フレームレートのエンコーディング

おかげ プラディープ

+0

これを行う方法を理解しましたか?私もこれに興味があります。 @ praks411 – GangstaGraham

答えて

4

私は

fps filterまたはframerate filterを使用して...しかし、私は(私はやった)同じ問題を抱えて、いくつかの人々を助けることができることを願って、ポストはかなり古いです実現。 ffpmeg n00bでも100%の正しさは保証されていませんが、少なくともこれは私のために働いていました:

私はfiltering_video.cの例のようにフィルターグラフを作成しました。 filtersの引数がavfilter_graph_parse_ptrの場合は、たとえばfps=fps=30:round=nearと指定しました。私はいくつかを持っていつでもそれから私はtimestamp秒でフレームの時間であり、timestamp0が記録されて非常に最初のフレームの時間である

float fps = (float)(codecContext->time_base.num)/codecContext->time_base.den; 
this->frame->pts = (__int64)((timestamp - timestamp0)/fps); 

としてPTSを計算し、フィルターグラフにフレームを供給しました。どちらも浮動小数点値で、私のカスタムビルドタイマーの結果です。キャプチャしたフレーム(DirectShowなど)にタイムスタンプを提供するライブラリを使用している場合は、それらを使用する必要があります。

関連する問題