私は高解像度カメラで作業しています:4008x2672。私は、カメラからフレームを取得し、そのフレームをaviファイルに送る簡単なプログラムを書いています。このような高解像度で作業するには、このトリックを行うことができるx264コーデックしか見つかりませんでした(推奨)。私は画像処理の大部分のためにopencvを使用しています。このポストhttp://doom10.org/index.php?topic=1019.0で述べたように、私はlibx264のffmpegプリセットごとにAVCodecContextメンバを変更しました(これは、ffmpegのデフォルト設定の誤りを避けるために行いました)。これは私がAVCodecContextへOpenCvを使ったX264エンコーディング
変更を中止プログラム
libx264 @ 0x992d040]non-strictly-monotonic PTS
1294846981.526675 1 0 //Timestamp camera_no frame_no
1294846981.621101 1 1
1294846981.715521 1 2
1294846981.809939 1 3
1294846981.904360 1 4
1294846981.998782 1 5
1294846982.093203 1 6
Last message repeated 7 times
[avi @ 0x992beb0]st:0 error, non monotone timestamps
-614891469123651720 >= -614891469123651720
OpenCV Error: Unspecified error (Error while writing video frame) in
icv_av_write_frame_FFMPEG, file
/home/ajoshi/ext/OpenCV-2.2.0/modules/highgui/src/cap_ffmpeg.cpp, line 1034
terminate called after throwing an instance of 'cv::Exception'
what(): /home/ajoshi/ext/OpenCV-2.2.0/modules/highgui/src/cap_ffmpeg.cpp:1034:
error: (-2) Error while writing video frame in function icv_av_write_frame_FFMPEG
を実行しようとすると、私は取得しています出力されます:
if(codec_id == CODEC_ID_H264)
{
//fprintf(stderr, "Trying to parse a preset file for libx264\n");
//Setting Values manually from medium preset
c->me_method = 7;
c->qcompress=0.6;
c->qmin = 10;
c->qmax = 51;
c->max_qdiff = 4;
c->i_quant_factor=0.71;
c->max_b_frames=3;
c->b_frame_strategy = 1;
c->me_range = 16;<br>
c->me_subpel_quality=7;
c->coder_type = 1;
c->scenechange_threshold=40;
c->partitions = X264_PART_I8X8 | X264_PART_I4X4 | X264_PART_P8X8 | X264_PART_B8X8;
c->flags = CODEC_FLAG_LOOP_FILTER;
c->flags2 = CODEC_FLAG2_BPYRAMID | CODEC_FLAG2_MIXED_REFS | CODEC_FLAG2_WPRED | CODEC_FLAG2_8X8DCT | CODEC_FLAG2_FASTPSKIP;
c->keyint_min = 25;
c->refs = 3;
c->trellis=1;
c->directpred = 1;
c->weighted_p_pred=2;
}
私はおそらく、DTSを設定し、I値は、PTSておりませんffmpegは私のために設定する必要があります信じています。
どなたでも歓迎します。
ありがとうございます事前に