psychesnet wrote: > > Dear zhivago, > > you can try to set pkt1.pts = 0, and the ffmpeg will calculate for this > packet. > > > Regards, Eric Hsieh, 09/17 > > 2011/9/17 zhivago <[email protected]> > >> Help me please properly set the timestamps. I have created an output >> filter, >> which takes video (MEDIASUBTAYPE_H264) and audio (MEDIASUBTAYPE_AAC). I >> have >> to put it all into a container FLV. To mix the streams, I use libav. How >> to >> calculate for AVPacket presentation timestamp (pts). >> >> static const REFERENCE_TIME UNITS_PER_SECOND = 10000000i64; >> .... >> REFERENCE_TIME startTime = m_lastSampleTime.startTime; >> >> AVPacket pkt; >> av_init_packet( &pkt ); >> pkt.data = pbData; >> pkt.size = lDataLength; >> pkt.flags |= AV_PKT_FLAG_KEY; >> >> if ( video ) >> { >> ASSERT( m_codecContextVideo ); >> >> num = m_codecContextVideo->time_base.num; >> den = m_codecContextVideo->time_base.den; >> >> pkt1.pts ??? // = ::MulDiv( startTime * den, 1, num * >> UNITS_PER_SECOND ); >> pkt1.stream_index = m_streamVideoOutput->index; >> } >> else >> { >> ASSERT( m_codecContextAudio ); >> >> num = m_codecContextAudio->time_base.num; >> den = m_codecContextAudio->time_base.den; >> >> pkt1.pts ??? // = ::MulDiv( startTime * den, 1, num * >> UNITS_PER_SECOND ); >> pkt1.stream_index = m_streamAudioOutput->index; >> } >> >> ASSERT( m_formatContextOutput ); >> >> if ( AllConnected() ) >> { >> >> av_interleaved_write_frame( m_formatContextOutput, &pkt1 ); >> } >> else >> { >> av_write_frame( m_formatContextOutput, &pkt1 ); >> } > Thanks for the feedback, Eric Hsieh. I set pkt1.pts = 0, but the synchronized video and sound only about 1 second. Then file does not play. Maybe have other ideas.
-- View this message in context: http://libav-users.943685.n4.nabble.com/Timestamps-for-AVPaket-tp3818534p3823325.html Sent from the libav-users mailing list archive at Nabble.com. _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
