Ich arbeite mit einer hochauflösenden Kamera: 4008x2672. Ich schreibe ein einfaches Programm, das Frame von der Kamera ergreift und den Frame an eine AVI-Datei sendet. Für das Arbeiten mit solch einer hohen Auflösung habe ich nur einen x264-Codec gefunden, der den Trick machen könnte (Vorschläge willkommen). Ich benutze opencv für die meisten Bildbearbeitung Sachen. Wie in diesem Post http://doom10.org/index.php?topic=1019.0 erwähnt, habe ich die AVCodecContext-Mitglieder wie in ffmpeg Voreinstellungen für libx264 geändert (musste dies tun, um defekte ffmpeg Standardeinstellungen Fehler zu vermeiden). Dies ist Ausgabe ich immer bin, wenn ich versuche, das ProgrammX264 Codierung mit Opencv
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
Aborted
Änderungen am AVCodecContext auszuführen, sind:
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;
}
Ich bin wahrscheinlich nicht die dts Einstellung und pts Werte, die ich geglaubt ffmpeg sollte es für mich einstellen.
Alle Vorschläge willkommen.
Vielen Dank im Voraus