av_gettime_relative
int64_t av_gettime_relative(void)
{
#if HAVE_CLOCK_GETTIME && defined(CLOCK_MONOTONIC)
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts); 从系统启动这一刻起开始计时,不受系统时间被用户改变的影响。
return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; //秒跟纳秒
#else
return av_gettime();
#endif
}
av_get_channel_layout_nb_channels av_get_default_channel_layout
通过av_get_channel_layout_nb_channels()和av_get_default_channel_layout()这些函数可以得到channels和channellayout的转换。
libavutil中的audioconvert.c定义channellayout和channels的相关map:
channel_layout_map[]
{ "mono",
av_q2d
}
av_rescaleav_sample_get_buffer_size
用来计算音频占用的字节数,音频所占用字节数 = 通道数 * 采用频率(Hz) * 采用位数(byte)。
av_seek_frame
当需要把视频跳转到N秒的时候可以使用下面的方法:
int64_t timestamp = N * AV_TIME_BASE;
av_seek_frame(fmtctx, index_of_video, timestamp, AVSEEK_FLAG_BACKWARD);