av_seek_frame

寫開(kāi)源項(xiàng)目的時(shí)候需要做seek功能,使用了av_seek_frame的功能,記錄如下。先看段文檔


int av_seek_frame   (   AVFormatContext * s,

int stream_index,

int64_t timestamp,

int flags

)

Seek to the keyframe at timestamp.

'timestamp' in 'stream_index'.

Parameters

s   media file handle

stream_index    If stream_index is (-1), a default stream is selected, and timestamp is automatically converted from AV_TIME_BASE units to the stream specific time_base.

timestamp   Timestamp in AVStream.time_base units or, if no stream is specified, in AV_TIME_BASE units.

flags   flags which select direction and seeking mode

#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward

#define AVSEEK_FLAG_BYTE    2 ///< seeking based on position in bytes

#define AVSEEK_FLAG_ANY      4 ///< seek to any frame, even non-keyframes

#define AVSEEK_FLAG_FRAME    8 ///< seeking based on frame number

Returns

>= 0 on success

解釋###

timebase指的是時(shí)間戳,對(duì)應(yīng)pts時(shí)間戳,如果index是-1,則使用AV_TIMEBASE作為timebase并由ffmpeg自動(dòng)轉(zhuǎn)換成默認(rèn)時(shí)間戳, 如果指定了stream那么就要使用相應(yīng)的stream的timebase來(lái)計(jì)算pts了。這里注意的是比如seek到32s不能簡(jiǎn)單的直接32*AV_TIMEBASE來(lái)計(jì)算時(shí)間戳,因?yàn)閜ts不一定是從0開(kāi)始的,所以要加上起始的pts。

stream_index是選擇針對(duì)哪一條媒體流來(lái)做seek

flag用來(lái)指定尋找尋找的I幀和指定點(diǎn)之間的位置關(guān)系,因?yàn)閟eek過(guò)去的時(shí)間點(diǎn)不一定就處在I幀的地方,解碼需要依賴于I幀,所以這時(shí)候就得選擇一個(gè)附近的I幀,flag表明要seek到當(dāng)前幀的前面一個(gè)I幀還是后面一個(gè)I幀

seek到32s的例子###


int ret = av_seek_frame(inputFormatContext, -1, ((double)ms/(double)1000)*AV_TIME_BASE + (double)inputFormatContext->start_time, AVSEEK_FLAG_BACKWARD);//不指定stream進(jìn)行seek

int ret = av_seek_frame(inputFormatContext, videoIndex, (double)videoTimeBase.den/(double)videoTimeBase.num * ((double)ms/(double)1000)*AV_TIME_BASE + (double)inputFormatContext->start_time/(double)AV_TIME_BASE*((double)videoTimeBase.den/(double)videoTimeBase.num)*/, AVSEEK_FLAG_BACKWARD);//指定stream進(jìn)行seek

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,988評(píng)論 0 3
  • 圖片轉(zhuǎn)視頻 為什么想將圖片轉(zhuǎn)視頻? 是這樣的,我打造的任性動(dòng)圖軟件,在編輯制作GIF動(dòng)圖方面,已經(jīng)基本完善?,F(xiàn)在想...
    古典小說(shuō)閱讀 1,964評(píng)論 1 0
  • 一片葉 凋零了數(shù)載 一朵云 空靈了時(shí)光 靜 觸碰了流金的歲月 言 到蒼老了雙鬢 回眸間 片刻嫣然 剎那時(shí) 羅衣婆娑...
    拂曉晨曦i閱讀 415評(píng)論 27 70
  • 今天看二美轉(zhuǎn)發(fā)的這一則新聞: 噩夢(mèng)!女孩裸體逃出公寓樓,不停的向路人喊著“報(bào)警!報(bào)警!報(bào)警!” 據(jù)安徽電視臺(tái)報(bào)道,...
    碼字好玩兒閱讀 290評(píng)論 2 1
  • 我一直以為我適合當(dāng)一個(gè)作家(小說(shuō)家),因?yàn)槲蚁矚g讀書。 一個(gè)月前給《意林》投稿,是續(xù)寫小說(shuō)。我信心滿滿,花了一天來(lái)...
    非魚38432閱讀 273評(píng)論 0 0

友情鏈接更多精彩內(nèi)容