[Libav-user] question about timestamp calculation in writing MP4 file
(^@^)
1279318717 at qq.com
Mon Oct 6 16:58:39 CEST 2014
Hi, guys
Anyone takes APIs from avformat lib to write H.264 frames into MP4 file? I am doing this and copied the following code snipset from somewhere.
"
m_pVideoStream->pts.val = m_nProcessedFramesNum;
pkt.pts = av_rescale_q(m_pVideoStream->pts.val, c->time_base, m_pVideoStream->time_base);
pkt.data = pData;
pkt.size = uDataLen;
// Write the compressed frame in the media file
av_interleaved_write_frame(m_pFormatCtx, &pkt)
"
But indeed, I do not understand why I have to convert the video frame's sequence number, m_nProcessedFramesNum, to AVPacket's PTS with the formula,
av_rescale_q(m_pVideoStream->pts.val, c->time_base, m_pVideoStream->time_base);
in above, c is AVCodecContext of the video stream (m_pVideoStream). And the most wired thing to me is that c->time_base and m_pVideoStream->time_base have
different values, say, c->time_base is {1,30 }, but m_pVideoStream->time_base takes {1, 15360 }. So much the gap is!
If I directly set pts to m_nProcessedFramesNum, the outcome MP4 file would be decoded and presented extremely faster than expected. What hell is the reason?
Could anyone please help me to explain this?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20141006/4029cc0d/attachment.html>
More information about the Libav-user
mailing list