国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ffplay播放器剖析(7)----音視頻暫停模塊分析

這篇具有很好參考價值的文章主要介紹了ffplay播放器剖析(7)----音視頻暫停模塊分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 暫停觸發(fā)流程

1.通過SDL觸發(fā)事件調(diào)用toggle_pause

2.toggle_pause調(diào)用stream_toggle_pause

3.stream_toggle_pause修改暫停變量

2. toggle_pause

static void toggle_pause(VideoState *is)
{
    stream_toggle_pause(is);
    is->step = 0;
}

3. stream_toggle_pause

static void stream_toggle_pause(VideoState *is)
{
    // 如果當(dāng)前是暫停 -> 恢復(fù)播放
    // 正常播放 -> 暫停
    if (is->paused) {// 當(dāng)前是暫停,那這個時候進來這個函數(shù)就是要恢復(fù)播放
        /* 恢復(fù)暫停狀態(tài)時也需要恢復(fù)時鐘,需要更新vidclk */
        // 加上 暫停->恢復(fù) 經(jīng)過的時間
        is->frame_timer += av_gettime_relative() / 1000000.0 - is->vidclk.last_updated;
        if (is->read_pause_return != AVERROR(ENOSYS)) {
            is->vidclk.paused = 0;
        }
        // 設(shè)置時鐘的意義,暫停狀態(tài)下讀取的是單純pts
        // 重新矯正video時鐘

        set_clock(&is->vidclk, get_clock(&is->vidclk), is->vidclk.serial);
    }
    set_clock(&is->extclk, get_clock(&is->extclk), is->extclk.serial);
    // 切換 pause/resume 兩種狀態(tài)
    is->paused = is->audclk.paused = is->vidclk.paused = is->extclk.paused = !is->paused;
    printf("is->step = %d; stream_toggle_pause\n", is->step);
}

這個函數(shù)可以知道,如果當(dāng)前狀態(tài)是暫停的話,那么就會進入if函數(shù)

看一下if函數(shù)流程,首先我們知道我們

is->frame_timer += av_gettime_relative() / 1000000.0 - is->vidclk.last_updated;

這個就是在之前的基礎(chǔ)上加上暫停到開始的時間

set_clock(&is->vidclk, get_clock(&is->vidclk), is->vidclk.serial);

get_clock當(dāng)是暫停狀態(tài)時就是獲取時鐘的pts

set_clock(&is->extclk, get_clock(&is->extclk), is->extclk.serial);

同理是設(shè)置外部時鐘的

is->paused = is->audclk.paused = is->vidclk.paused = is->extclk.paused = !is->paused;

就是將paused取反

看一下這4個pause會影響那些函數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-604103.html

  1. video_refresh 如果是暫停并且沒有強制刷新的話就不會調(diào)用該函數(shù),什么時候強制刷新之前有說過,比如修改ffplay窗口大小
  2. read_thread中的pause只會對網(wǎng)絡(luò)流有效,而其他情況下pause并不會對read_thread有影響,而是繼續(xù)讀數(shù)據(jù)寫入到隊列中
  3. get_master_clock中會調(diào)用get_clock,而get_clock中如果是paused狀態(tài)的話就會直接返回pts
  4. audio_decode_frame函數(shù)會受到paused影響,會直接返回-1,然后sdl_audio_callback接受到會進行判斷,然后輸出靜音數(shù)據(jù),并未有暫停

到了這里,關(guān)于ffplay播放器剖析(7)----音視頻暫停模塊分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 音視頻項目—基于FFmpeg和SDL的音視頻播放器解析(二十一)

    介紹 在本系列,我打算花大篇幅講解我的 gitee 項目音視頻播放器,在這個項目,您可以學(xué)到音視頻解封裝,解碼,SDL渲染相關(guān)的知識。您對源代碼感興趣的話,請查看基于FFmpeg和SDL的音視頻播放器 如果您不理解本文,可參考我的前一篇文章音視頻項目—基于FFmpeg和SDL的音視

    2024年02月02日
    瀏覽(101)
  • FFmpeg 播放器實現(xiàn)音視頻同步的三種方式

    FFmpeg 播放器實現(xiàn)音視頻同步的三種方式

    我們基于 FFmpeg 利用 OpenGL ES 和 OpenSL ES 分別實現(xiàn)了對解碼后視頻和音頻的渲染,本文將實現(xiàn)播放器的最后一個重要功能:音視頻同步。 老人們經(jīng)常說, 播放器對音頻和視頻的播放沒有絕對的靜態(tài)的同步,只有相對的動態(tài)的同步,實際上音視頻同步就是一個“你追我趕”的過

    2024年02月06日
    瀏覽(29)
  • Qt音視頻開發(fā)41-文件推流(支持網(wǎng)頁和播放器播放并切換進度)

    Qt音視頻開發(fā)41-文件推流(支持網(wǎng)頁和播放器播放并切換進度)

    本功能最初也是有一些人提過類似的需求,就是能不能將本地的音視頻文件,通過純Qt程序推流出去,然后用戶可以直接在網(wǎng)頁上播放,也可以用各種播放器播放,然后還可以任意切換播放進度,其實說白了就是個文件服務(wù)器,用戶通過網(wǎng)絡(luò)地址訪問以后,告訴對方當(dāng)前是媒

    2024年02月01日
    瀏覽(42)
  • opencv+ffmpeg+QOpenGLWidget開發(fā)的音視頻播放器demo

    opencv+ffmpeg+QOpenGLWidget開發(fā)的音視頻播放器demo

    ????本篇文檔的demo包含了 1.使用OpenCV對圖像進行處理,對圖像進行置灰,旋轉(zhuǎn),摳圖,高斯模糊,中值濾波,部分區(qū)域清除置黑,背景移除,邊緣檢測等操作;2.單純使用opencv播放顯示視頻;3.使用opencv和openGL播放顯示視頻;4.在ffmpeg解碼后,使用opencv顯示視頻,并支持對視

    2024年02月12日
    瀏覽(36)
  • 【MediaPlayerSource】播放器源內(nèi)部的音視頻sender的創(chuàng)建和使用

    來看下聲網(wǎng)播放中的sender相關(guān)組件設(shè)計: MediaPlayerSourceDummy 是一個MediaPlayerSourceImpl ,輸入音視頻幀到 播放器。

    2024年02月03日
    瀏覽(27)
  • ffplay播放器剖析(1)----數(shù)據(jù)結(jié)構(gòu)剖析

    ffplay播放器剖析(1)----數(shù)據(jù)結(jié)構(gòu)剖析

    ffplay是FFmpeg源碼提供的一個播放器,它是由FFmpeg和SDL的API實現(xiàn)的播放器,對后續(xù)播放器的二次開發(fā)有著借鑒意義,比如嗶哩嗶嗶哩的ijkplayer. 根據(jù)代碼可以看出struct MyAVPacketList是一個AVPacket的一個節(jié)點,而PacketQueue是用管理這群節(jié)點的隊列 接下來看一下操作這個隊列的一些函數(shù) 3

    2024年02月16日
    瀏覽(25)
  • 用Qt開發(fā)的ffmpeg流媒體播放器,支持截圖、錄像,支持音視頻播放,支持本地文件播放、網(wǎng)絡(luò)流播放

    用Qt開發(fā)的ffmpeg流媒體播放器,支持截圖、錄像,支持音視頻播放,支持本地文件播放、網(wǎng)絡(luò)流播放

    本工程qt用的版本是5.8-32位,ffmpeg用的版本是較新的5.1版本。它支持TCP或UDP方式拉取實時流,實時流我采用的是監(jiān)控攝像頭的RTSP流。音頻播放采用的是QAudioOutput,視頻經(jīng)ffmpeg解碼并由YUV轉(zhuǎn)RGB后是在QOpenGLWidget下進行渲染顯示。本工程的代碼有注釋,可以通過本博客查看代碼或者

    2024年02月03日
    瀏覽(116)
  • ffplay播放器剖析(2)----讀取線程刨析

    avformat_alloc_context創(chuàng)建上下文 ic-interupt_callback.callback=decode_interrupt_cb 綁定回調(diào)函數(shù) avformat_open_input 打開媒體文件 avformat_find_stream_info 讀取媒體文件的包獲取更多的stream信息 檢測指定播放起始時間,如果seek到指定位置就使用avformat_seek_file 檢查查找AVStream,將對應(yīng)的index值記錄到st

    2024年02月16日
    瀏覽(22)
  • 瀏覽器網(wǎng)頁內(nèi)嵌Qt-C++音視頻播放器的實現(xiàn),支持軟硬解碼,支持音頻,支持錄像截圖,支持多路播放等,提供源碼工程下載

    瀏覽器網(wǎng)頁內(nèi)嵌Qt-C++音視頻播放器的實現(xiàn),支持軟硬解碼,支持音頻,支持錄像截圖,支持多路播放等,提供源碼工程下載

    ????在瀏覽器中實現(xiàn)播放RTSP實時視頻流,?體上有如下?個?案: ?案一:瀏覽器插件?案 ActiveX、NPAPI、PPAPI ????ActiveX插件適用于IE瀏覽器,NPAPI與PPAPI插件適用于谷歌瀏覽器,不過這些插件都已經(jīng)不被瀏覽器所支持。 ?案二:先轉(zhuǎn)碼再轉(zhuǎn)流?案 ?????作原理是架設(shè)一

    2024年01月17日
    瀏覽(100)
  • 音視頻 ffplay播放控制

    選項 說明 q, ESC 退出播放 f 全屏切換 p, SPC 暫停 m 靜音切換 9, 0 9減少音量,0增加音量 a 循環(huán)切換音頻流 v 循環(huán)切換視頻流 t 循環(huán)切換字幕流 c 循環(huán)切換節(jié)目 w 循環(huán)切換過濾器或顯示模式 s 逐幀播放 left/right 向后/向前拖動10秒 down/up 向后/向前拖動1分鐘 鼠標(biāo)右鍵單擊 拖動與顯

    2024年02月12日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包