Qt如何實(shí)現(xiàn)mpv錄像存儲(chǔ)

本篇內(nèi)容主要講解“Qt如何實(shí)現(xiàn)mpv錄像存儲(chǔ)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Qt如何實(shí)現(xiàn)mpv錄像存儲(chǔ)”吧!

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、碾子山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為碾子山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、前言

用mpv來做錄像存儲(chǔ),保存視頻文件,從來都沒有如此的方便,直接設(shè)置屬性stream-record對(duì)應(yīng)的文件路徑即可,我的乖乖,一行代碼,如此精簡(jiǎn)美麗大方,搞得我都不敢相信自己的眼睛,mpv除了支持主流的win、linux、mac三大操作系統(tǒng)外,還支持手機(jī)安卓IOS等,尤其是居然支持各種嵌入式linux,記得vlc想要在嵌入式linux上交叉編譯成功的話,難于上青天,各種插件的依賴實(shí)在是太多了,直到你放棄為止,在X86的linux系統(tǒng)還是比較方便一些的,而在這塊,mpv簡(jiǎn)直是完爆vlc啊,直接命令行都可以在嵌入式linux上安裝呢,內(nèi)置的ffmpeg超強(qiáng)解碼器,使得你可以直接命令行調(diào)用mpv來播放音視頻,這在一些嵌入式linux上Qt無法播放音視頻的場(chǎng)景,非常有用,本人在全志H3板子上使用的就是mpv來播放音視頻,默認(rèn)GPU解碼使得CPU占用極地。

前面幾篇文章寫過vlc的錄像存儲(chǔ)和ffmpeg的錄像存儲(chǔ),都是同時(shí)支持了保存成一個(gè)視頻文件和定時(shí)存儲(chǔ)成不同的視頻文件,這個(gè)功能都采用了同樣的策略,那就開個(gè)定時(shí)器來處理,比如開啟了定時(shí)存儲(chǔ)的話,到了時(shí)間先停止錄像,然后再重新開始錄像,重新設(shè)置新的視頻文件名稱,這樣來實(shí)現(xiàn)的,同樣的在mpv這里也是這樣處理的,先設(shè)置屬性stream-record為空字符串則表示停止錄像,然后再重新設(shè)置屬性stream-record為新的文件名稱即可。

二、功能特點(diǎn)

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

  2. 支持windows+linux+mac。

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

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

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

  6. 可直接拖曳文件到mpvwidget控件播放。

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

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

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

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

  11. 可設(shè)置畫面拉伸填充或者等比例填充。

  12. 可對(duì)視頻進(jìn)行截圖(原始圖片)和截屏。

  13. 錄像文件存儲(chǔ)MP4文件。

  14. 支持qsv、dxva2、d3d11va等硬解碼。

三、效果圖

四、核心代碼

void MpvThread::initSave()
{
    if (!saveFile) {
        return;
    }

    if (saveInterval == 0) {
        saveVideo(fileName);
    }
}

void MpvThread::saveVideo()
{
    if (!saveFile) {
        return;
    }

    //重新設(shè)置文件名稱
    QString dirName = QString("%1/%2").arg(savePath).arg(QDATE);
    newDir(dirName);
    fileName = QString("%1/%2_%3.mp4").arg(dirName).arg(fileFlag).arg(STRDATETIME);
    saveVideo(fileName);
}

void MpvThread::saveVideo(const QString &fileName)
{
    if (mpvPlayer) {
        //轉(zhuǎn)成平臺(tái)的路徑,否則中文目錄可能不認(rèn)識(shí)
        QString file = QDir::toNativeSeparators(fileName);
        QByteArray data = file.toUtf8();
        setValue("stream-record", "");
        setValue("stream-record", data.constData());
    }
}

到此,相信大家對(duì)“Qt如何實(shí)現(xiàn)mpv錄像存儲(chǔ)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前名稱:Qt如何實(shí)現(xiàn)mpv錄像存儲(chǔ)
URL分享:http://bm7419.com/article26/ipdsjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作App開發(fā)、網(wǎng)站建設(shè)、企業(yè)建站

廣告

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

網(wǎng)站優(yōu)化排名