2011-06-02 10 views
2

現在、MP4(MPEG4およびH264)ビデオファイルを.MP4、.MPGおよび.AVIファイルにトランスコードするためにlibavcodecを使用しようとしています。 FFMpeg.exeで '-sameq'フラグを使用して同じ/類似の品質の出力ファイルを入力ファイルのものと同じにするためにこれを使用しました。libavcodecを使用するときにFFMPEG '-sameq'フラグをエミュレートするために設定する必要があります

av_open_input_file、av_read_frameおよびavcodec_decode_video2を使用して、入力ファイルを開いて読み取り、デコードし、次にAVCodecContextを割り当て、avcodec_encode_videoを使用してデータをエンコードします。しかし、出力ファイルのビデオ品質はかなり悪いです。 ?

codecContextOutput->width = SAME AS INPUT FILE; 
codecContextOutput->height = SAME AS INPUT FILE; 
codecContextOutput->pix_fmt = SAME AS INPUT FILE; 
/* frames per second */ 
AVRational ar; 
ar.num = 1; 
ar.den = 25; 
codecContextOutput->time_base = ar; 
codecContextOutput->gop_size = 10; /* emit one intra frame every ten frames */ 
codecContextOutput->max_b_frames=1; 
codecContextOutput->bit_rate = 480000; 

誰もが「-sameq」に設定するか、どのような追加の設定をエミュレートするために必要な追加設定を改善するためにAVCodecContextで必要とされている知っています - :

これらは、私が使用しているAVCodecContext設定されています出力品質?

答えて

0

Libavformatライブラリでいくつかの異なる呼び出しを使用した結果、出力コンテキストのbit_rateを入力コンテキストと同じに設定する限り、同じ品質を維持できます。 出力帯域幅が必要以上に大きいかもしれないので、MPEG2のような高帯域幅のフォーマットからH264ストリームにトランスコードするときは、これはあまり便利ではありませんが、トランスコードされたファイル。

関連する問題