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

Qt音視頻開發(fā)38-ffmpeg視頻暫停錄制的設(shè)計(jì)

這篇具有很好參考價(jià)值的文章主要介紹了Qt音視頻開發(fā)38-ffmpeg視頻暫停錄制的設(shè)計(jì)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言

基本上各種播放器提供的錄制視頻接口,都是只有開始錄制和結(jié)束錄制兩個(gè),當(dāng)然一般用的最多的也是這兩個(gè)接口,但是實(shí)際使用過程中,還有一種可能需要中途暫停錄制,暫停以后再次繼續(xù)錄制,將中間部分視頻不需要錄制,跳過這部分不需要的視頻,而且錄制的視頻文件必須是能夠正常播放的連續(xù)的。vlc和mpv都只提供了開始錄制和停止錄制接口,ffmpeg既然是自己解碼,所以錄制完全自己控制,存儲的時(shí)候,每一幀的數(shù)據(jù)都要寫入pts和dts,每次重新計(jì)算時(shí)間基準(zhǔn)保證時(shí)間正確,不然不是連續(xù)的幀保存后會(huì)跳。

打通了視頻暫停錄制功,還有個(gè)應(yīng)用場景就可以迎難而解,就是多個(gè)通道的視頻,不同時(shí)段分開存入同一個(gè)視頻文件,類似于將輪詢的過程中展示的視頻挨個(gè)存儲到同一個(gè)視頻文件,當(dāng)然分辨率必須保持一致,不一致可能存儲會(huì)出問題,這種場景還是比較常見的,比如視頻通道輪詢過程中,指定某個(gè)位置的視頻存儲的同一個(gè)視頻文件,將輪詢的整個(gè)過程錄制下來,后期以便回放查閱視頻。在當(dāng)前封裝的組件中,除了打開和關(guān)閉錄制,中途只需要將視頻幀傳入即可,會(huì)自動(dòng)計(jì)算換算成正確的pts/dts存儲到MP4文件中。

二、效果圖

Qt音視頻開發(fā)38-ffmpeg視頻暫停錄制的設(shè)計(jì)文章來源地址http://www.zghlxwxcb.cn/news/detail-419724.html

三、體驗(yàn)地址

  1. 國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun
  2. 國際站點(diǎn):https://github.com/feiyangqingyun
  3. 個(gè)人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 體驗(yàn)地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 文件名:bin_video_demo/bin_linux_video。

四、相關(guān)代碼

void FFmpegThread::recordStart(const QString &fileName)
{
#ifdef videosave
    AbstractVideoThread::recordStart(fileName);
    if ((saveVideoType > 1) && !onlyAudio) {
        this->setFileName(fileName);
        //處于暫停階段則切換暫停標(biāo)志位(暫停后再次恢復(fù)說明又重新開始錄制)
        if (saveFile->getIsPause()) {
            isRecord = true;
            saveFile->pause();
            emit recorderStateChanged(RecorderState_Recording, fileName);
        } else {
            saveFile->setPara(saveVideoType, videoWidth, videoHeight, frameRate, formatCtx->streams[videoIndex], (videoType == VideoType_Camera));
            saveFile->open(fileName);
            if (saveFile->getIsOk()) {
                isRecord = true;
                emit recorderStateChanged(RecorderState_Recording, fileName);
            }
        }
    }
#endif
}

void FFmpegThread::recordPause()
{
#ifdef videosave
    AbstractVideoThread::recordPause();
    if ((saveVideoType > 1) && !onlyAudio) {
        if (saveFile->getIsOk()) {
            isRecord = false;
            saveFile->pause();
            emit recorderStateChanged(RecorderState_Paused, fileName);
        }
    }
#endif
}

void FFmpegThread::recordStop()
{
#ifdef videosave
    AbstractVideoThread::recordStop();
    if ((saveVideoType > 1) && !onlyAudio) {
        if (saveFile->getIsOk()) {
            isRecord = false;
            saveFile->stop();
            //執(zhí)行過轉(zhuǎn)換合并的不用再發(fā)信號
            if (!saveFile->isConvertMerge) {
                emit recorderStateChanged(RecorderState_Stopped, fileName);
            }
        }
    }
#endif
}

void FFmpegSave::save()
{
    //從隊(duì)列中取出數(shù)據(jù)處理
    //qDebug() << TIMEMS << videoFrames.count() << videoPackets.count();
    if (videoFrames.count() > 0) {
        mutex.lock();
        AVFrame *frame = videoFrames.takeFirst();
        mutex.unlock();
        FFmpegHelper::encode(this, videoCodecCtx, videoPacket, frame, true);
        FFmpegHelper::freeFrame(frame);
    }

    if (videoPackets.count() > 0) {
        mutex.lock();
        AVPacket *packet = videoPackets.takeFirst();
        mutex.unlock();
        this->writePacket(packet);
        FFmpegHelper::freePacket(packet);
    }
}

void FFmpegSave::close()
{
    //寫入過開始符才能寫入文件結(jié)束符(沒有這個(gè)判斷會(huì)報(bào)錯(cuò))
    if (packetCount > 0 && saveVideoType == SaveVideoType_Mp4) {
        av_write_trailer(formatCtx);
    }

    //清空隊(duì)列中的數(shù)據(jù)
    foreach (AVFrame *frame, videoFrames) {
        FFmpegHelper::freeFrame(frame);
    }

    foreach (AVPacket *packet, videoPackets) {
        FFmpegHelper::freePacket(packet);
    }

    packetCount = 0;
    videoFrames.clear();
    videoPackets.clear();

    //釋放臨時(shí)數(shù)據(jù)包
    if (videoPacket) {
        FFmpegHelper::freePacket(videoPacket);
        videoPacket = NULL;
    }

    //關(guān)閉編碼器上下文并釋放對象
    if (videoCodecCtx) {
        avcodec_free_context(&videoCodecCtx);
        videoCodec = NULL;
        videoCodecCtx = NULL;
    }

    //關(guān)閉文件流并釋放對象
    if (formatCtx) {
        avio_close(formatCtx->pb);
        avformat_free_context(formatCtx);
        formatCtx = NULL;
        videoStreamOut = NULL;
        videoStreamIn = NULL;
    }

    //執(zhí)行轉(zhuǎn)換合并音頻文件到一個(gè)文件
    isConvertMerge = false;
    if (convertMerge) {
        if (saveVideoType == SaveVideoType_H264) {
            isConvertMerge = FFmpegRun::aacAndH264ToMp4(fileName);
        } else if (saveVideoType == SaveVideoType_Mp4) {
            isConvertMerge = FFmpegRun::aacAndMp4ToMp4(fileName);
        }
    }
}

void FFmpegSave::setPara(const SaveVideoType &saveVideoType, int videoWidth, int videoHeight, int frameRate, AVStream *videoStreamIn, bool camera)
{
    this->saveVideoType = saveVideoType;
    this->videoWidth = videoWidth;
    this->videoHeight = videoHeight;
    if (camera) {
        this->frameRate = frameRate > 15 ? 16.621 : frameRate;
    } else {
        this->frameRate = frameRate > 25 ? 25 : frameRate;
    }
    this->videoStreamIn = videoStreamIn;
}

void FFmpegSave::writeVideo(AVFrame *frame)
{
    //沒打開或者暫停階段不處理
    if (!isOk || isPause) {
        return;
    }

    //可以直接寫入到文件也可以排隊(duì)處理
    if (directSave) {
        FFmpegHelper::encode(this, videoCodecCtx, videoPacket, frame, true);
    } else {
        mutex.lock();
        videoFrames << av_frame_clone(frame);
        mutex.unlock();
    }
}

void FFmpegSave::writeVideo(AVPacket *packet)
{
    //沒打開或者暫停階段不處理
    if (!isOk || isPause) {
        return;
    }

    //可以直接寫入到文件也可以排隊(duì)處理
    if (directSave) {
        this->writePacket(packet);
    } else {
        mutex.lock();
        videoPackets << FFmpegHelper::creatPacket(packet);
        mutex.unlock();
    }
}

五、功能特點(diǎn)

5.1 基礎(chǔ)功能

  1. 支持各種音頻視頻文件格式,比如mp3、wav、mp4、asf、rm、rmvb、mkv等。
  2. 支持本地?cái)z像頭設(shè)備,可指定分辨率、幀率。
  3. 支持各種視頻流格式,比如rtp、rtsp、rtmp、http等。
  4. 本地音視頻文件和網(wǎng)絡(luò)音視頻文件,自動(dòng)識別文件長度、播放進(jìn)度、音量大小、靜音狀態(tài)等。
  5. 文件可以指定播放位置、調(diào)節(jié)音量大小、設(shè)置靜音狀態(tài)等。
  6. 支持倍速播放文件,可選0.5倍、1.0倍、2.5倍、5.0倍等速度,相當(dāng)于慢放和快放。
  7. 支持開始播放、停止播放、暫停播放、繼續(xù)播放。
  8. 支持抓拍截圖,可指定文件路徑,可選抓拍完成是否自動(dòng)顯示預(yù)覽。
  9. 支持錄像存儲,手動(dòng)開始錄像、停止錄像,部分內(nèi)核支持暫停錄像后繼續(xù)錄像,跳過不需要錄像的部分。
  10. 支持無感知切換循環(huán)播放、自動(dòng)重連等機(jī)制。
  11. 提供播放成功、播放完成、收到解碼圖片、收到抓拍圖片、視頻尺寸變化、錄像狀態(tài)變化等信號。
  12. 多線程處理,一個(gè)解碼一個(gè)線程,不卡主界面。

5.2 特色功能

  1. 同時(shí)支持多種解碼內(nèi)核,包括qmedia內(nèi)核(Qt4/Qt5/Qt6)、ffmpeg內(nèi)核(ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5)、vlc內(nèi)核(vlc2/vlc3)、mpv內(nèi)核(mpv1/mp2)、海康sdk、easyplayer內(nèi)核等。
  2. 非常完善的多重基類設(shè)計(jì),新增一種解碼內(nèi)核只需要實(shí)現(xiàn)極少的代碼量,就可以應(yīng)用整套機(jī)制。
  3. 同時(shí)支持多種畫面顯示策略,自動(dòng)調(diào)整(原始分辨率小于顯示控件尺寸則按照原始分辨率大小顯示,否則等比例縮放)、等比例縮放(永遠(yuǎn)等比例縮放)、拉伸填充(永遠(yuǎn)拉伸填充)。所有內(nèi)核和所有視頻顯示模式下都支持三種畫面顯示策略。
  4. 同時(shí)支持多種視頻顯示模式,句柄模式(傳入控件句柄交給對方繪制控制)、繪制模式(回調(diào)拿到數(shù)據(jù)后轉(zhuǎn)成QImage用QPainter繪制)、GPU模式(回調(diào)拿到數(shù)據(jù)后轉(zhuǎn)成yuv用QOpenglWidget繪制)。
  5. 支持多種硬件加速類型,ffmpeg可選dxva2、d3d11va等,mpv可選auto、dxva2、d3d11va,vlc可選any、dxva2、d3d11va。不同的系統(tǒng)環(huán)境有不同的類型選擇,比如linux系統(tǒng)有vaapi、vdpau,macos系統(tǒng)有videotoolbox。
  6. 解碼線程和顯示窗體分離,可指定任意解碼內(nèi)核掛載到任意顯示窗體,動(dòng)態(tài)切換。
  7. 支持共享解碼線程,默認(rèn)開啟并且自動(dòng)處理,當(dāng)識別到相同的視頻地址,共享一個(gè)解碼線程,在網(wǎng)絡(luò)視頻環(huán)境中可以大大節(jié)約網(wǎng)絡(luò)流量以及對方設(shè)備的推流壓力。國內(nèi)頂尖視頻廠商均采用此策略。這樣只要拉一路視頻流就可以共享到幾十個(gè)幾百個(gè)通道展示。
  8. 自動(dòng)識別視頻旋轉(zhuǎn)角度并繪制,比如手機(jī)上拍攝的視頻一般是旋轉(zhuǎn)了90度的,播放的時(shí)候要自動(dòng)旋轉(zhuǎn)處理,不然默認(rèn)是倒著的。
  9. 自動(dòng)識別視頻流播放過程中分辨率的變化,在視頻控件上自動(dòng)調(diào)整尺寸。比如攝像機(jī)可以在使用過程中動(dòng)態(tài)配置分辨率,當(dāng)分辨率改動(dòng)后對應(yīng)視頻控件也要做出同步反應(yīng)。
  10. 音視頻文件無感知自動(dòng)切換循環(huán)播放,不會(huì)出現(xiàn)切換期間黑屏等肉眼可見的切換痕跡。
  11. 視頻控件同時(shí)支持任意解碼內(nèi)核、任意畫面顯示策略、任意視頻顯示模式。
  12. 視頻控件懸浮條同時(shí)支持句柄、繪制、GPU三種模式,非絕對坐標(biāo)移來移去。
  13. 本地?cái)z像頭設(shè)備支持指定設(shè)備名稱、分辨率、幀率進(jìn)行播放。
  14. 錄像文件同時(shí)支持打開的視頻文件、本地?cái)z像頭、網(wǎng)絡(luò)視頻流等。
  15. 瞬間響應(yīng)打開和關(guān)閉,無論是打開不存在的視頻或者網(wǎng)絡(luò)流,探測設(shè)備是否存在,讀取中的超時(shí)等待,收到關(guān)閉指令立即中斷之前的操作并響應(yīng)。
  16. 支持打開各種圖片文件,支持本地音視頻文件拖曳播放。
  17. 視頻控件懸浮條自帶開始和停止錄像切換、聲音靜音切換、抓拍截圖、關(guān)閉視頻等功能。
  18. 音頻組件支持聲音波形值數(shù)據(jù)解析,可以根據(jù)該值繪制波形曲線和柱狀聲音條,默認(rèn)提供了聲音振幅信號。
  19. 各組件中極其詳細(xì)的打印信息提示,尤其是報(bào)錯(cuò)信息提示,封裝的統(tǒng)一打印格式。針對現(xiàn)場復(fù)雜的設(shè)備環(huán)境測試極其方便有用,相當(dāng)于精確定位到具體哪個(gè)通道哪個(gè)步驟出錯(cuò)。
  20. 代碼框架和結(jié)構(gòu)優(yōu)化到最優(yōu),性能強(qiáng)悍,持續(xù)迭代更新升級。
  21. 源碼支持Qt4、Qt5、Qt6,兼容所有版本。

5.3 視頻控件

  1. 可動(dòng)態(tài)添加任意多個(gè)osd標(biāo)簽信息,標(biāo)簽信息包括名字、是否可見、字號大小、文本文字、文本顏色、標(biāo)簽圖片、標(biāo)簽坐標(biāo)、標(biāo)簽格式(文本、日期、時(shí)間、日期時(shí)間、圖片)、標(biāo)簽位置(左上角、左下角、右上角、右下角、居中、自定義坐標(biāo))。
  2. 可動(dòng)態(tài)添加任意多個(gè)圖形信息,這個(gè)非常有用,比如人工智能算法解析后的圖形區(qū)域信息直接發(fā)給視頻控件即可。圖形信息支持任意形狀,直接繪制在原始圖片上,采用絕對坐標(biāo)。
  3. 圖形信息包括名字、邊框大小、邊框顏色、背景顏色、矩形區(qū)域、路徑集合、點(diǎn)坐標(biāo)集合等。
  4. 每個(gè)圖形信息都可指定三種區(qū)域中的一種或者多種,指定了的都會(huì)繪制。
  5. 內(nèi)置懸浮條控件,懸浮條位置支持頂部、底部、左側(cè)、右側(cè)。
  6. 懸浮條控件參數(shù)包括邊距、間距、背景透明度、背景顏色、文本顏色、按下顏色、位置、按鈕圖標(biāo)代碼集合、按鈕名稱標(biāo)識集合、按鈕提示信息集合。
  7. 懸浮條控件一排工具按鈕可自定義,通過結(jié)構(gòu)體參數(shù)設(shè)置,圖標(biāo)可選圖形字體還是自定義圖片。
  8. 懸浮條按鈕內(nèi)部實(shí)現(xiàn)了錄像切換、抓拍截圖、靜音切換、關(guān)閉視頻等功能,也可以自行在源碼中增加自己對應(yīng)的功能。
  9. 懸浮條按鈕對應(yīng)實(shí)現(xiàn)了功能的按鈕,有對應(yīng)圖標(biāo)切換處理,比如錄像按鈕按下后會(huì)切換到正在錄像中的圖標(biāo),聲音按鈕切換后變成靜音圖標(biāo),再次切換還原。
  10. 懸浮條按鈕單擊后都用名稱唯一標(biāo)識作為信號發(fā)出,可以自行關(guān)聯(lián)響應(yīng)處理。
  11. 懸浮條空白區(qū)域可以顯示提示信息,默認(rèn)顯示當(dāng)前視頻分辨率大小,可以增加幀率、碼流大小等信息。
  12. 視頻控件參數(shù)包括邊框大小、邊框顏色、焦點(diǎn)顏色、背景顏色(默認(rèn)透明)、文字顏色(默認(rèn)全局文字顏色)、填充顏色(視頻外的空白處填充黑色)、背景文字、背景圖片(如果設(shè)置了圖片優(yōu)先取圖片)、是否拷貝圖片、縮放顯示模式(自動(dòng)調(diào)整、等比例縮放、拉伸填充)、視頻顯示模式(句柄、繪制、GPU)、啟用懸浮條、懸浮條尺寸(橫向?yàn)楦叨?、縱向?yàn)閷挾龋腋l位置(頂部、底部、左側(cè)、右側(cè))。

到了這里,關(guān)于Qt音視頻開發(fā)38-ffmpeg視頻暫停錄制的設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ffmpeg把RTSP流分段錄制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音視頻開發(fā)的難度直接就降一個(gè)維度啊

    ffmpeg把RTSP流分段錄制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音視頻開發(fā)的難度直接就降一個(gè)維度啊

    比如,原來我們要用ffmpeg錄一段RTSP視頻流轉(zhuǎn)成MP4,我們有兩種方案: 方案一:可以使用以下命令將rtsp流分段存儲為mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_timestamps 1 -strftime 1 output_%Y-%m-%d_%H-%M-%S.mp4 方案二:可以直接調(diào)用ffmpeg庫avcode

    2024年02月10日
    瀏覽(36)
  • 使用ffmpeg調(diào)用電腦自帶的攝像頭和揚(yáng)聲器錄制音視頻

    使用ffmpeg調(diào)用電腦自帶的攝像頭和揚(yáng)聲器錄制音視頻

    1、打開cmd,執(zhí)行 chcp 65001 ,修改cmd的編碼格式為utf8,避免亂碼 2、執(zhí)行指令 ffmpeg -list_devices true -f dshow -i dummy ,查看當(dāng)前window的音頻和視頻名稱 3、打開windows系統(tǒng)的\\\"打開聲音設(shè)置\\\"–“麥克風(fēng)隱私設(shè)置”–\\\"允許應(yīng)用訪問你的麥克風(fēng)\\\"點(diǎn)擊開啟 錄制視頻: 錄制音頻: 錄制音視頻:

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

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

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

    2024年02月03日
    瀏覽(116)
  • FFMpeg-3、基于QT實(shí)現(xiàn)音視頻播放顯示

    FFMpeg-3、基于QT實(shí)現(xiàn)音視頻播放顯示

    1、音視頻播放的基礎(chǔ)知識 內(nèi)容來自雷神博客 1、在Windows平臺下的視頻播放技術(shù)主要有以下三種:GDI,Direct3D和OpenGL;音頻播放技術(shù)主要是DirectSound。 SDL本身并不具有播放顯示的功能,它只是封裝了底層播放顯示的代碼 記錄三種視頻顯示技術(shù):GDI,Direct3D,OpenGL。其中Direct3D包

    2024年02月03日
    瀏覽(37)
  • 項(xiàng)目實(shí)戰(zhàn)——Qt實(shí)現(xiàn)FFmpeg音視頻轉(zhuǎn)碼器

    項(xiàng)目實(shí)戰(zhàn)——Qt實(shí)現(xiàn)FFmpeg音視頻轉(zhuǎn)碼器

    本文記錄使用 Qt 實(shí)現(xiàn) FFmepg 音視頻轉(zhuǎn)碼器項(xiàng)目的開發(fā)過程。 1、首先創(chuàng)建一個(gè) Qt 項(xiàng)目,選擇 MSVC2017 32bit 作為其編譯器 2、將 FFmpeg 相關(guān)庫及源文件拷貝到當(dāng)前目錄下 3、注釋 prepare_app_arguments 函數(shù)(這里方便后面我們運(yùn)行時(shí)可以指定相應(yīng)的轉(zhuǎn)碼參數(shù)) 4、將所需的一些 dll 動(dòng)態(tài)庫

    2024年01月23日
    瀏覽(27)
  • qt+ffmpeg 實(shí)現(xiàn)音視頻播放(二)之音頻播放

    qt+ffmpeg 實(shí)現(xiàn)音視頻播放(二)之音頻播放

    通過? avformat_open_input ()?打開媒體文件并分配和初始化? AVFormatContext?? 結(jié)構(gòu)體。 函數(shù)原型如下: int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); 參數(shù)說明: - `ps`:指向 `AVFormatContext` 結(jié)構(gòu)體指針的指針,用于存儲打開的媒體文件的信息。

    2024年04月22日
    瀏覽(38)
  • FFmpeg 音視頻開發(fā)工具

    FFmpeg 音視頻開發(fā)工具

    目錄 FFmpeg 下載與安裝 ffmpeg 使用快速入門 ffplay 使用快速入門 1、FFmpeg 是處理音頻、視頻、字幕和相關(guān)元數(shù)據(jù)等多媒體內(nèi)容的庫和工具的集合。一個(gè)完整的跨平臺解決方案,用于錄制、轉(zhuǎn)換和流式傳輸音頻和視頻。 官網(wǎng):https://www.ffmpeg.org/ 源碼:https://github.com/FFmpeg/FFmpeg。

    2024年02月15日
    瀏覽(29)
  • 音視頻開發(fā)---ffmpeg rtmp推流

    音視頻開發(fā)---ffmpeg rtmp推流

    推流是將輸入視頻數(shù)據(jù)推送至流媒體服務(wù)器, 輸入視頻數(shù)據(jù)可以是本地視頻文件(avi,mp4,flv......),也可以是內(nèi)存視頻數(shù)據(jù),或者攝像頭等系統(tǒng)設(shè)備,也可以是網(wǎng)絡(luò)流URL。本篇介紹將本地視頻文件通過FFmpeg編程以RTMP直播流的形式推送至RTMP流媒體服務(wù)器的方法。 推流的網(wǎng)絡(luò)拓?fù)?/p>

    2024年02月16日
    瀏覽(34)
  • 音視頻開發(fā)-ffmpeg介紹-系列一

    音視頻開發(fā)-ffmpeg介紹-系列一

    目錄 一.簡介 FFmpeg框架的基本組成包含: 二.?FFmpeg框架梳理音視頻的流程?編輯 基本概念: 三.ffmpeg、ffplay、ffprobe區(qū)別 ? ? ?4.1 ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程序? 4.2?fffplay是用于播放的應(yīng)用程序? ? ? ?4.3?ffprobe是用于查看文件格式的應(yīng)用程序 ? ? ?4.4?ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程

    2024年02月16日
    瀏覽(32)
  • 玩賺音視頻開發(fā)高階技術(shù)——FFmpeg

    玩賺音視頻開發(fā)高階技術(shù)——FFmpeg

    隨著移動(dòng)互聯(lián)網(wǎng)的普及,人們對音視頻內(nèi)容的需求也不斷增加。無論是社交媒體平臺、電商平臺還是在線教育,都離不開音視頻的應(yīng)用。這就為音視頻開發(fā)人員提供了廣闊的就業(yè)機(jī)會(huì)。根據(jù)這些年來網(wǎng)站上的音視頻開發(fā)招聘需求來看,音視頻開發(fā)人員的需求量大,且薪資待遇

    2024年02月13日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包