[Libav-user] FFMpeg - x254 and how to calculate the pts and dts values correctly.
Denis
info at denisgottardello.it
Thu Sep 15 12:17:10 CEST 2011
In this mode
pAVFrame->pts= Frames;
//pCodecCtx->coded_frame->pts= Frames;
//qDebug() << pCodecCtx->coded_frame->pts << pAVFrame->pkt_dts;
int OutSize= avcodec_encode_video(pCodecCtx, pOutBuffer, BYTEPIC, pAVFrame);
if (OutSize> 0) {
AVPacket Packet;
av_init_packet(&Packet);
if (pCodecCtx->coded_frame->pts != AV_NOPTS_VALUE) {
Packet.pts= av_rescale_q(pCodecCtx->coded_frame->pts, pCodecCtx->time_base, pVideoStream->time_base);
}
if (pCodecCtx->coded_frame->key_frame) Packet.flags |= AV_PKT_FLAG_KEY;
Packet.stream_index= pVideoStream->index;
Packet.data= pOutBuffer;
Packet.size= OutSize;
if (av_interleaved_write_frame(pFormatCtx, &Packet)!= 0) qDebug() << "av_interleaved_write_frame Error!";
}
Frames++;
I insert a packet in the video stream. When I try to play the produced file I obtain this error:
PachetCount: 1 , 32768 bytes, pBufferSize: 32768
[mpegts @ 0x8eca320] Invalid timestamps stream=0, pts=0, dts=8589927392, size=1186
[mpegts @ 0x8eca320] Invalid timestamps stream=0, pts=14400, dts=8589930992, size=21
[mpegts @ 0x8eca320] max_analyze_duration 5000000 reached at 5000000
[mpegts @ 0x8eca320] Estimating duration from bitrate, this may be inaccurate
dump_format begin
Input #0, mpegts, from 'foo.mpg':
Duration: N/A, start: 0.000000, bitrate: N/A
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0.0[0x100]: Video: h264 (High), yuv420p, 320x240, 25 fps, 25 tbr, 90k tbn, 50 tbc
dump_format end
0
"fps: 25"
This error appears only in CODEC_ID_H264 mode and not in CODEC_ID_MPEG4 mode.
Which is the right way for calculate the pts and dts value?
--
www.denisgottardello.it
Skype: mrdebug
Videosurveillance and home automation!
http://www.denisgottardello.it/DomusBoss/DomusBossIndice.php
More information about the Libav-user
mailing list