亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

解密FFmpeg播放狀態控制內幕

2024-06-28 13:20:57
字體:
來源:轉載
供稿:網友
解密FFmpeg播放狀態控制內幕

上一篇文章(http://my.oschina.net/u/2336532/blog/400790)我們解決了在FFmpeg下如何處理H264和AAC的擴展數據,根據解出的NALU長度恢復了H264的起始碼和AAC的ADTS頭,這樣一般來說播放是沒有問題。本篇文章來談談如何實現基于FFmpeg的track mode控制,也就是如何用FFmpeg提供的功能來實現基本的seek、快進、快退。好了,廢話少了,下面開始基于FFmpeg的track mode之旅。

FFmpeg提供了一個seek函數,原型如下:

int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,int flags);

參數說明:

s:操作上下文;

stream_index:基本流索引,表示當前的seek是針對哪個基本流,比如視頻或者音頻等等。

timestamp:要seek的時間點,以time_base或者AV_TIME_BASE為單位。

Flags:seek標志,可以設置為按字節,在按時間seek時取該點之前還是之后的關鍵幀,以及不按關鍵幀seek等,詳細請參考FFmpeg的avformat.h說明。基于FFmpeg的所有track mode幾乎都是用這個函數來直接或間接實現的。

  • 文件的seek功能實現

要轉跳到視頻100秒(100 000毫秒)處的第一個I幀(如果沒有則向前找第一個):

av_seek_frame(pFormatCtx, vid_index, 100000*vid_time_scale/time_base, AVSEEK_FLAG_BACKWARD);

跳到音頻80秒(80 000毫秒)處的幀(采樣):

av_seek_frame(pFormatCtx, aud_index, 80000*aud_time_scale/ time_base, AVSEEK_FLAG_BACKWARD);

跳到文件開始的地方開始播放:

av_seek_frame(pFormatCtx, vid_index, 0, AVSEEK_FLAG_BACKWARD);

上面的time_scale、time_base都能通過流信息獲取到,請參考前面的文章。有的文件不一定能seek成功,可以考慮在失敗的情況下將AVSEEK_FLAG_BACKWARD改為AVSEEK_FLAG_ANY再次seek,不過seek到的視頻幀可能不是I幀。

這個函數不管你當前在什么時間點上,都可以seek到任何合理位置。比如要實現在當前的基礎上向后或向前跳轉10秒,我們可以在av_read_frame函數拿到的包中含有當前時間戳的基礎上增加或較少一個10000(換算成播放時間單位)再seek即可。所以這個函數可以用做進度的拖放、前進/后退一定時間、循環播放等功能。

  1. 快進快退

對于快進來說,一般解碼器能實現2倍甚至再高倍速的播放,這種情況直接按照上一篇文章的基本播放流程就可以了。但對于4倍、8倍、16倍、32倍等高速播放,一般不能像傳統播放那樣一幀一幀的送數據,不只是解碼能力問題,數據讀取也可能因為帶寬不夠跟不上,我們只能提取其中的I幀進行播放,將B幀和P幀丟掉。下面我們就來討論這個過程的實現流程。

快進時,通過當前數據包獲得當前的時間PTS,將該PTS換算成時間再加上一小段時間,作為seek時間點向后找關鍵幀,此時flags可設置為AVSEEK_FLAG_FRAME。之后用av_read_frame獲取到該關鍵幀。完成該幀解碼顯示后,再在該幀的PTS時間上增加一小段時間后seek,這樣一直重復上述過程,流程如下圖:

快退時,通過當前數據包獲得當前的時間PTS,將該PTS換算成時間再減去一小段時間,作為seek時間點向前找關鍵幀,此時flags可設置為AVSEEK_FLAG_BACKWARD。之后用av_read_frame獲取到該關鍵幀。完成該幀解碼顯示后,再在該幀的PTS時間上減去一小段時間后seek,這樣一直重復上述結果,過程如下圖:

這樣,我們通過以上對av_seek_frame函數的運用,即可完成文件playback的各種track mode實現,其實理解了這個函數后,你還會有很多其他辦法來實現,這里只是提供了一種簡單且占內存少的辦法。在特定的情況下還可以先全部走一遍所有幀,并記錄下全部的I幀的時間戳、幀編號、位置信息等需要的信息,然后直接從該表里面獲取信息后進行seek和讀取這些關鍵幀進行快速播放。

想第一時間獲得更多原創文章,請關注個人微信公眾平臺:程序員互動聯盟(coder_online),掃一掃下方二維碼或者搜索微信號coder_online即可關注,里面有大量Android,Chromium,linux,編程技巧等相關文章等著您,我們還可以在線交流。

如需轉載本文,請注明出處:http://my.oschina.net/u/2336532。

謝謝合作!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜免费在线观看精品视频| 久久男人av资源网站| 亚洲国产日韩精品在线| 亚洲精品视频网上网址在线观看| 一区二区三区天堂av| 国产精品久久久久999| 美女啪啪无遮挡免费久久网站| 成年人精品视频| 国产精品一区二区av影院萌芽| 亚洲人成五月天| 国产精品综合久久久| 国产精品成人va在线观看| 在线观看日韩专区| 欧美亚洲成人精品| 97av在线视频| 亚洲人成绝费网站色www| 亚洲专区国产精品| 5278欧美一区二区三区| 成人啪啪免费看| 成人观看高清在线观看免费| 成人免费自拍视频| 欧美韩日一区二区| 日韩电影免费在线观看中文字幕| 国产91色在线播放| 97在线免费视频| 亚洲免费成人av电影| 国产精品27p| 亚洲风情亚aⅴ在线发布| 一区二区成人av| 6080yy精品一区二区三区| 国产精品免费久久久| 欧美精品激情在线观看| 美女撒尿一区二区三区| 成人免费看黄网站| 日韩女优人人人人射在线视频| 国产亚洲精品综合一区91| 欧美自拍大量在线观看| 国产日韩欧美夫妻视频在线观看| 日韩视频在线免费| xxx欧美精品| 久久人人爽亚洲精品天堂| 日韩av电影在线播放| 成人黄色av网站| 欧美成人亚洲成人日韩成人| 欧美综合国产精品久久丁香| 另类专区欧美制服同性| 国产精品一区二区三区在线播放| 啊v视频在线一区二区三区| 欧美国产日韩一区| 亚洲精品国产欧美| 久久亚洲精品国产亚洲老地址| 国产精品久久久一区| 久久91亚洲精品中文字幕奶水| 亚洲精品99999| 青青草原一区二区| 国产一区二区美女视频| 在线成人一区二区| 久久久久久久网站| 久久中国妇女中文字幕| 国产精品丝袜久久久久久不卡| 国产在线视频91| 红桃av永久久久| 日韩激情av在线免费观看| 精品国产欧美成人夜夜嗨| 亚洲国产91精品在线观看| 亚洲男人天堂2019| 97超级碰在线看视频免费在线看| 欧美夫妻性生活视频| 精品福利在线视频| 久久91精品国产| 国产美女主播一区| 午夜精品一区二区三区在线| 麻豆乱码国产一区二区三区| 91系列在线观看| 亚洲日本欧美日韩高观看| 国产成人啪精品视频免费网| 亚洲国产精品人人爽夜夜爽| 成人妇女免费播放久久久| 欧美精品激情blacked18| 日产精品久久久一区二区福利| 国产精品69久久| 欧美午夜精品久久久久久久| 一区二区欧美久久| 亚洲日本aⅴ片在线观看香蕉| 精品成人国产在线观看男人呻吟| 狠狠躁18三区二区一区| 91在线无精精品一区二区| 亚洲老板91色精品久久| 国产精品91免费在线| 欧美黄色片视频| 国产精品h片在线播放| 欧美日韩亚洲精品内裤| 国产精品丝袜视频| 日韩高清电影好看的电视剧电影| 久久99久久久久久久噜噜| 国产精品自产拍在线观看中文| 亚洲国产免费av| 92版电视剧仙鹤神针在线观看| 91久久久久久久久久久久久| 97色在线播放视频| 欧美日韩在线免费| 国产精品99久久久久久www| 国产精品视频1区| 51久久精品夜色国产麻豆| 久久夜色精品亚洲噜噜国产mv| 亚洲日韩第一页| 亚洲精品免费av| 午夜剧场成人观在线视频免费观看| 亚洲综合精品伊人久久| 成人h猎奇视频网站| 亚洲精品综合久久中文字幕| 91精品久久久久久久| 91久久精品一区| 久久综合免费视频影院| 日本高清+成人网在线观看| 国产亚洲免费的视频看| 欧美日韩在线免费观看| 欧美日韩性生活视频| 亚洲色无码播放| 日韩av电影手机在线| 成人性生交大片免费看视频直播| 九九精品视频在线| 久久影视电视剧凤归四时歌| 91手机视频在线观看| 亚洲综合精品伊人久久| 668精品在线视频| 亚洲第一页在线| 成人av资源在线播放| 日韩视频中文字幕| 亚洲免费视频网站| 亚洲一品av免费观看| 亚洲美女性生活视频| 狠狠综合久久av一区二区小说| 亚洲欧洲激情在线| 亚洲精品乱码久久久久久按摩观| 欧美电影免费观看| 日本精品久久久| 欧美日韩高清在线观看| 国产精品私拍pans大尺度在线| 在线播放国产一区二区三区| 日本高清+成人网在线观看| 中文字幕亚洲欧美| 久久久久女教师免费一区| 国产精品久久婷婷六月丁香| 久久久久久久97| 国产精品免费网站| 日韩久久免费视频| 欧美怡春院一区二区三区| 国产91精品视频在线观看| 97精品国产91久久久久久| 45www国产精品网站| 欧美老女人性生活| 久久频这里精品99香蕉| 国产性色av一区二区| 日韩黄色高清视频| 日韩在线视频免费观看高清中文| 国内精品伊人久久| 欧美午夜xxx| 国产成人亚洲综合| 欧美日韩色婷婷| 亚洲自拍偷拍网址| 国产日韩在线免费| 国产精品久久久久久久久久免费| 日本欧美爱爱爱|