@@ -421,10 +421,11 @@ struct ffmpeg *ffmpeg_open(const char *ffmpeg_video_codec, char *filename,
421421
422422 ffmpeg -> video_st -> time_base .num = 1 ;
423423 ffmpeg -> video_st -> time_base .den = 1000 ;
424- if (strcmp (ffmpeg_video_codec , "swf" ) == 0 ) {
424+ if ((strcmp (ffmpeg_video_codec , "swf" ) == 0 ) ||
425+ (ffmpeg -> tlapse != TIMELAPSE_NONE ) ) {
425426 ffmpeg -> video_st -> time_base .num = 1 ;
426427 ffmpeg -> video_st -> time_base .den = rate ;
427- if (rate > 50 ){
428+ if (( rate > 50 ) && ( strcmp ( ffmpeg_video_codec , "swf" ) == 0 ) ){
428429 MOTION_LOG (NTC , TYPE_ENCODER , NO_ERRNO , "%s The FPS could be too high for the SWF container. Consider other choices." );
429430 }
430431 }
@@ -671,18 +672,19 @@ int ffmpeg_put_frame(struct ffmpeg *ffmpeg, AVFrame *pic){
671672 my_packet_unref (pkt );
672673 return -2 ;
673674 }
674- pts_interval = ((1000000L * (tv1 .tv_sec - ffmpeg -> start_time .tv_sec )) + tv1 .tv_usec - ffmpeg -> start_time .tv_usec ) + 10000 ;
675- pkt .pts = av_rescale_q (pts_interval ,(AVRational ){1 , 1000000L },ffmpeg -> video_st -> time_base );
676- if (pkt .pts < 1 ) pkt .pts = 1 ;
677- pkt .dts = pkt .pts ;
678-
679- // MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO, "%s: pts:%d dts:%d stream:%d interval %d",pkt.pts,pkt.dts,ffmpeg->video_st->time_base.den,pts_interval);
680675 }
681676 if (ffmpeg -> tlapse == TIMELAPSE_APPEND ) {
682677 retcd = timelapse_append (ffmpeg , pkt );
678+ } else if (ffmpeg -> tlapse == TIMELAPSE_NEW ) {
679+ retcd = av_write_frame (ffmpeg -> oc , & pkt );
683680 } else {
681+ pts_interval = ((1000000L * (tv1 .tv_sec - ffmpeg -> start_time .tv_sec )) + tv1 .tv_usec - ffmpeg -> start_time .tv_usec ) + 10000 ;
682+ pkt .pts = av_rescale_q (pts_interval ,(AVRational ){1 , 1000000L },ffmpeg -> video_st -> time_base );
683+ if (pkt .pts < 1 ) pkt .pts = 1 ;
684+ pkt .dts = pkt .pts ;
684685 retcd = av_write_frame (ffmpeg -> oc , & pkt );
685686 }
687+ // MOTION_LOG(ERR, TYPE_ENCODER, NO_ERRNO, "%s: pts:%d dts:%d stream:%d interval %d",pkt.pts,pkt.dts,ffmpeg->video_st->time_base.den,pts_interval);
686688 my_packet_unref (pkt );
687689
688690 if (retcd != 0 ) {
0 commit comments