一些打印
static void print_report(intis_last_report, int64_t timer_start, int64_t cur_time){
secs= FFABS(pts) / AV_TIME_BASE;
us = FFABS(pts) % AV_TIME_BASE;
mins = secs / 60;
secs %= 60;
hours = mins / 60;
mins %= 60;
//时分秒毫秒是由pts得到。
bitrate = pts && total_size >= 0 ? total_size * 8 / (pts /1000.0) : -1;
//比特率是总文件大小除以秒数。
speed = t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1;
//总倍数是文件时长除以转码时长。
if (is_last_report)
print_final_stats(total_size);
}
如果不结束时,调用 print_report(0, timer_start, cur_time);。
如果结束时,调用print_report(1, timer_start, av_gettime_relative());
No more output streams to write to, finishing
依赖于need_output函数。
{
int i;
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
OutputFile *of = output_files[ost->file_index];
AVFormatContext *os = output_files[ost->file_index]->ctx;
if (ost->finished ||
(os->pb && avio_tell(os->pb) >= of->limit_filesize))
continue;
if (ost->frame_number >= ost->max_frames) {
int j;
for (j = 0; j < of->ctx->nb_streams; j++)
close_output_stream(output_streams[of->ost_index + j]);
continue;
}
return 1;
}
return 0;
}