根據pts來計算一楨在整個視頻中的時間位置: ide
timestamp(秒) = pts * av_q2d(st->time_base) 函數
計算視頻長度的方法: 指針
time(秒) = st->duration * av_q2d(st->time_base) 視頻
這裏的st是一個AVStream對象指針。 對象
時間基轉換公式 io
timestamp(ffmpeg內部時間戳) = AV_TIME_BASE * time(秒) ffmpeg
time(秒) = AV_TIME_BASE_Q * timestamp(ffmpeg內部時間戳) 方法
因此當須要把視頻跳轉到N秒的時候能夠使用下面的方法: im
int64_t timestamp = N * AV_TIME_BASE; 時間戳
av_seek_frame(fmtctx, index_of_video, timestamp, AVSEEK_FLAG_BACKWARD);
ffmpeg提供了不一樣時間基之間的轉換函數:
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
這個函數的做用是計算a * bq / cq,來把時間戳從一個時基調整到另一個時基。
在進行時基轉換的時候,應該首選這個函數,它能夠避免溢出的狀況發生