I was able to resolve this.  I said something incorrect earlier about
the RTP flags.  Clearly this has nothing to do with the timescaling ..
I just misread the same for loop.

You *must* re-scale the packet timestamps before calling
av_interleaved_write_frame with av_packet_recale_ts().

Call this with the AVCodecContext time_base as the tb_src and the
AVStream time_base as the tb_dest.  This will scale the pts, dts and
duration values.

/**
 * Convert valid timing fields (timestamps / durations) in a packet from one
 * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
 * ignored.
 *
 * @param pkt packet on which the conversion will be performed
 * @param tb_src source timebase, in which the timing fields in pkt are
 *               expressed
 * @param tb_dst destination timebase, to which the timing fields will be
 *               converted
 */
void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst);

corey

On Tue, Jan 9, 2018 at 2:50 PM, Corey Taylor <corey.taylor...@gmail.com> wrote:
>> I set the time_base value in the output AVStream to 1/90000, then stepped 
>> through the code to write the header, some frames, and then the trailer. 
>> Watching the time_base value in the debugger as I stepped through, I noticed 
>> that the values change to the 1/15360 value after the invocation of 
>> av_write_header(), which matches your findings. I am currently working 
>> around the issue by rescaling each frame's PTS/DTS to the new 1/15360 
>> timebase, rather than using the actual timebase associated with the stream 
>> produced by the camera.
>
>
> Where you able to test if the older library modified the time-base at all?
>
> corey
_______________________________________________
Libav-user mailing list
Libav-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to