現在、libavcodec を使用して、MP4 (MPEG4 および H264) および MPG (MPEG2) ビデオ ファイルを .MP4、.MPG、および .AVI ファイルにトランスコードしようとしています。入力ファイルと同じ/類似した品質の出力ファイルを保持するために、「-sameq」フラグを使用してFFMpeg.exeを使用してこれを以前に行っていました。
av_open_input_file、av_read_frame、avcodec_decode_video2 を使用して入力ファイルを開き、読み取り、デコードしてから、AVCodecContext を割り当て、avcodec_encode_video を使用してデータをエンコードします。ただし、出力ファイルのビデオ品質はかなり悪いです。
これらは私が使用している AVCodecContext 設定ですか?:-
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 で必要な追加設定を知っている人はいますか?