欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Qt如何實(shí)現(xiàn)vlc讀取和控制

這篇文章給大家分享的是有關(guān)Qt如何實(shí)現(xiàn)vlc讀取和控制的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

站在用戶的角度思考問題,與客戶深入溝通,找到文圣網(wǎng)站設(shè)計(jì)與文圣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋文圣地區(qū)。

一、前言

vlc本身是個(gè)全功能的很牛逼的播放器,你能夠想到的播放的功能他都有,比如獲取視頻文件的長度、唱片的封面、當(dāng)前播放進(jìn)度、設(shè)置播放進(jìn)度、聲音控制、靜音控制等,這些vlc都給你封裝好了,你直接調(diào)用對應(yīng)的api函數(shù)即可。

看vlc的官方對vlc的更新頻率也是蠻高的,所以在各種新的視頻標(biāo)準(zhǔn)和格式出來以后,他也是在不斷的更新完善,比如H265,8K視頻等,都能正常的播放,查閱vlc的動態(tài)庫目錄可以看見,vlc的部分解碼用的就是ffmpeg,所以知道了為啥他這么強(qiáng)大了吧,原來是依賴ffmpeg這個(gè)超級牛逼的全功能解碼庫呢。

用vlc做控制這塊有兩種處理方式,一種是在線程中來定時(shí)讀取,比如讀取播放進(jìn)度、當(dāng)前各種狀態(tài)、當(dāng)前音量、靜音等,還有一種方式是采用事件回調(diào)的形式,默認(rèn)建議事件回調(diào)的機(jī)制,能夠拿到很多事件消息,效率也更高。你只需要在打開視頻以前調(diào)用libvlc_event_attach訂閱自己感興趣的事件,在不需要的時(shí)候比如關(guān)閉的時(shí)候調(diào)用libvlc_event_detach注銷訂閱的事件即可。

二、功能特點(diǎn)

  1. 多線程實(shí)時(shí)播放視頻流和本地視頻。

  2. 支持windows+linux+mac,支持vlc2和vlc3。

  3. 多線程顯示圖像,不卡主界面。

  4. 自動重連網(wǎng)絡(luò)攝像頭。

  5. 可設(shè)置邊框大小即偏移量和邊框顏色。

  6. 可設(shè)置是否繪制OSD標(biāo)簽即標(biāo)簽文本或圖片和標(biāo)簽位置。

  7. 可設(shè)置兩種OSD位置和風(fēng)格。

  8. 可設(shè)置是否保存到文件以及文件名。

  9. 可直接拖曳文件到vlcwidget控件播放。

  10. 支持h365視頻流+rtmp等常見視頻流。

  11. 可暫停播放和繼續(xù)播放。

  12. 支持回調(diào)模式和句柄兩種模式。

  13. 支持線程讀取進(jìn)度等信息和事件回調(diào)兩種處理模式。

  14. 自動將當(dāng)前播放位置和音量大小是否靜音以信號發(fā)出去。

  15. 提供接口設(shè)置播放位置和音量及設(shè)置靜音。

  16. 支持存儲單個(gè)視頻文件和定時(shí)存儲視頻文件。

  17. 自定義頂部懸浮條,發(fā)送單擊信號通知,可設(shè)置是否啟用。

三、效果圖

Qt如何實(shí)現(xiàn)vlc讀取和控制

四、相關(guān)站點(diǎn)

  1. 國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun/QWidgetDemo

  2. 國際站點(diǎn):https://github.com/feiyangqingyun/QWidgetDemo

  3. 個(gè)人主頁:https://blog.csdn.net/feiyangqingyun

  4. 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/

  5. 體驗(yàn)地址:https://blog.csdn.net/feiyangqingyun/article/details/97565652

五、核心代碼

void VlcThread::setSize(int width, int height)
{
    if (vlcPlayer != NULL) {
        QString option = QString("%1:%2").arg(width).arg(height);
        QByteArray data = option.toUtf8();
        const char *arg = data.constData();
        //一旦打開視頻以后要?jiǎng)討B(tài)更改寬高比,值只能是vlc認(rèn)識的比如 16:9 1:1 之類的
        //const char *arg = "4:3";
        libvlc_video_set_aspect_ratio(vlcPlayer, arg);
    }
}

bool VlcThread::getIsPlaying()
{
    bool isPlaying = false;
    if (vlcPlayer != NULL) {
        int result = libvlc_media_player_is_playing(vlcPlayer);
        isPlaying = (result != 0);
    }

    return isPlaying;
}

VlcThread::VlcState VlcThread::getState()
{
    VlcState state = VlcThread::VlcState_NothingSpecial;
    if (vlcPlayer != NULL) {
        state = (VlcState)libvlc_media_player_get_state(vlcPlayer);
    }

    return state;
}

uint VlcThread::getLength()
{
    uint length = 0;
    if (vlcPlayer != NULL) {
        length = libvlc_media_player_get_length(vlcPlayer);
    }

    return length;
}

uint VlcThread::getPosition()
{
    uint positon = 0;
    if (vlcPlayer != NULL) {
        positon = libvlc_media_player_get_time(vlcPlayer);
    }

    return positon;
}

void VlcThread::setPosition(int position)
{
    if (vlcPlayer != NULL && !isRtsp) {
        libvlc_media_player_set_time(vlcPlayer, position);
    }
}

bool VlcThread::getMute()
{
    bool ok = false;
    if (vlcPlayer != NULL) {
        int result = libvlc_audio_get_mute(vlcPlayer);
        ok = (result == 0);
    }

    return ok;
}

void VlcThread::setMute(bool mute)
{
    if (vlcPlayer != NULL) {
        libvlc_audio_set_mute(vlcPlayer, mute ? 1 : 0);
    }
}

int VlcThread::getVolume()
{
    int volume = 0;
    if (vlcPlayer != NULL) {
        volume = libvlc_audio_get_volume(vlcPlayer);
    }

    return volume;
}

void VlcThread::setVolume(int volume)
{
    if (vlcPlayer != NULL) {
        libvlc_audio_set_volume(vlcPlayer, volume);
    }
}

int VlcThread::getTrack()
{
    int track = 0;
    if (vlcPlayer != NULL) {
        track = libvlc_audio_get_track(vlcPlayer);
    }

    return track;
}

int VlcThread::getTrackCount()
{
    int trackCount = 0;
    if (vlcPlayer != NULL) {
        trackCount = libvlc_audio_get_track_count(vlcPlayer);
    }

    return trackCount;
}

void VlcThread::setTrack(int track)
{
    if (vlcPlayer != NULL) {
        track = libvlc_audio_set_track(vlcPlayer, track);
    }
}

感謝各位的閱讀!關(guān)于“Qt如何實(shí)現(xiàn)vlc讀取和控制”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁題目:Qt如何實(shí)現(xiàn)vlc讀取和控制
轉(zhuǎn)載來源:http://aaarwkj.com/article26/gihecg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
久久亚洲精品中文字幕| 99麻豆久久久精品国产| 欧美日韩国产一区二区三区在线观看| 性激烈的欧美三级男同| av天堂久久这里只有精品美国| 丰满人妻被黑人猛烈进入| 欧美日韩国产综合一区二区| 亚洲精品欧美综合第四区| 亚洲国产成人精品女人| 国产H精品在线观看| 插入内射视频在线观看| 国内精品免费视频不卡| 日韩精品国产一区二区在线观看| 国产三级黄色大片在线免费看 | 亚洲一区二区视频在线播放| 亚洲精品偷拍在线观看| 国产精品一区久久91| 人妖系列中文字幕欧美系列| 天堂av免费资源在线观看 | 国产成人公开免费视频| 中文字幕国产精品91| 中国美女下面毛茸茸视频| 免费可以看的黄片欧美| 免费观看久久黄色大片| 在线一区二区三区高清视频 | 日本视频免费一区二区| 亚洲国产av国产av| 亚洲人妻乱人伦中文字幕在线| 欧洲女人av天堂精品| 亚洲欧美日韩成人在线观看| 成人久久精品一区二区| 麻豆一精品传二传媒短视频 | 裸体性做爰免费视频网站| 亚洲欧美日韩颜射极品| 中文字幕乱码亚洲美女精品| 欧美看黄网站在线观看| 国产一区中文字幕在线| 亚洲av少妇一区二区成年男人| 97视频精品全部免费观看| 九九免费在线视频观看| 91久久精品凹凸一区二区 |