五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

嵌入式Qt-FFmpeg設(shè)計一個RTSP播放器

2022-09-16 22:48 作者:碼農(nóng)愛學(xué)習(xí)-B站  | 我要投稿

上篇文章,介紹了FFmpeg的交叉編譯,以及在嵌入式Linux平臺,運(yùn)行ffmpeg指令來播放視頻。

本篇,將通過Qt程序,設(shè)計一個RTSP視頻播放器,來播放網(wǎng)絡(luò)視頻,并增加啟動、暫停等操作按鈕。

1 FFMPEG 庫介紹

1.1 ffmpeg的7個庫

ffmpeg有7個library,分別是:

  • avutil

  • swscale

  • swresample

  • avcodec

  • avformat

  • avdevice

  • avfilter

avutil 工具庫

avutil是一個實(shí)用的工具庫用于輔助可移植的多媒體編程。它包含安全的可移植的字符串函數(shù),隨機(jī)數(shù)生成器,數(shù)據(jù)結(jié)構(gòu),附加的數(shù)學(xué)函數(shù),密碼學(xué)和多媒體相關(guān)功能(例如像素和樣本格式的枚舉)。它不是 libavcodec 和 libavformat 都需要的代碼庫。

swscale 視頻像素數(shù)據(jù)格式轉(zhuǎn)換

swscale庫執(zhí)行高度優(yōu)化的圖像縮放以及色彩空間和像素格式轉(zhuǎn)換操作,這個庫執(zhí)行以下轉(zhuǎn)換:

  • Recailing:是改變視頻大小的過程。 有幾個重新縮放選項(xiàng)和算法可用。 這通常是一個有損過程。

  • Pixel format conversion:是將圖像的圖像格式和色彩空間轉(zhuǎn)換的過程,例如從平面YUV420P 到RGB24 打包。 它還處理打包方式轉(zhuǎn)換,即從Packed布局轉(zhuǎn)換為Planar布局。

    注意:如果源和目標(biāo)顏色空間不同,這通常是一個有損過程。

swresample 音頻采樣數(shù)據(jù)格式轉(zhuǎn)換

swresample庫執(zhí)行高度優(yōu)化的音頻重采樣,重矩陣化和樣本格式轉(zhuǎn)換操作,這個庫執(zhí)行以下轉(zhuǎn)換:

  • Resampling:是改變音頻碼率的過程,例如從一個高采樣率44100Hz轉(zhuǎn)化為8000Hz。音頻從高采樣率轉(zhuǎn)換為低采樣率是一個有損的過程。有幾種重采樣選項(xiàng)和算法可用。

  • Format conversion:是一個轉(zhuǎn)換樣本類型的過程,例如從有符號16-bit(int16_t)樣本轉(zhuǎn)換為無符號8-bit(uint8_t)或浮點(diǎn)樣本。它也處理打包方式轉(zhuǎn)換,如從Packed布局轉(zhuǎn)換為Planar布局。

  • Rematrixing:是改變通道布局的過程,例如從立體聲到單聲道。當(dāng)輸入通道不能映射到輸出流時,這個過程是有損的,因?yàn)樗婕安煌脑鲆嬉蜃雍突旌稀?通過專用選項(xiàng)啟用各種其他音頻轉(zhuǎn)換(例如拉伸和填充)。

avcodec 編解碼

avcodec庫提供了一個通用的編碼/解碼框架,并且包含用于音頻、視頻、字幕流的多個編解器和解碼器共享架構(gòu)提供從比特流 I/O 到 DSP 優(yōu)化的各種服務(wù),使其適用于實(shí)現(xiàn)魯棒和快速的編解碼器以及實(shí)驗(yàn)。

avformat 封裝格式處理

libavformat庫為音頻、視頻和字幕流的復(fù)用和解復(fù)用(muxing and demuxing)提供了一個通用框架。它包含多個用于媒體容器格式的多個復(fù)用器和解復(fù)用器,它還支持多種輸入和輸出協(xié)議來訪問媒體資源。

avdevice 設(shè)備的輸入輸出

avdevice 庫提供了一個通用框架,用于從許多常見的多媒體輸入/輸出設(shè)備進(jìn)行抓取和渲染,并支持多種輸入和輸出設(shè)備,包括 Video4Linux2、VfW、DShow 和 ALSA。

avfilter 濾鏡特效處理

avfilter 庫提供了一個通用的音頻/視頻過濾框架,其中包含多個過濾器、源和接收器。

1.2 win平臺FFmpeg庫下載

Win平臺的Qt Creator需要用到Visual Stdio的功能,我電腦的Visual Stdio的2015版(對應(yīng)的是msvc14),因此,我下載的FFmpeg是4.4版的,再高的版本就沒有msvc14的了。

https://github.com/ShiftMediaProject/FFmpeg/releases/tag/4.4.r101753

2 Qt程序設(shè)計

2.1 RTSP解碼與視頻播放流程

先來看下FFmpeg對RTSP解碼的處理流程:

2.2 視頻解碼

對照上面的流程圖,使用FFmpeg對RTSP視頻流的解碼如下:

解碼出一幀圖像后,發(fā)送信號給圖像顯示線程顯示

2.3 視頻顯示

這里是圖像顯示的處理:


2.4 按鍵操作處理

客戶端界面中,有啟動、暫停播放和視頻畫面翻轉(zhuǎn)按鈕,對應(yīng)的處理邏輯如下:

2.5 pro文件

因?yàn)橐玫紽Fmpeg庫,因此需要注意以下對FFmpeg庫的引用,需要修改Qt工程的pro文件


3 運(yùn)行測試

3.1 Win平臺測試

在Win10平臺上測試效果如下:

3.2 嵌入式Linux平臺測試

在嵌入式Linux平臺運(yùn)行,也需要先進(jìn)行FFmpeg運(yùn)行環(huán)境的搭建,上篇文章已介紹如何交叉編譯FFmpeg源碼以及在嵌入式Linux平臺搭建FFmpeg運(yùn)行環(huán)境。

3.2.1 需要安裝4.4版本的庫

由于不同版本FFmpeg的API函數(shù)有些差別,上篇使用的是較新版本的FFmpeg源碼,與4.4版本的可能不太一樣,因此,需要參考上篇文章,重新在嵌入式Linux環(huán)境中安裝4.4版本的FFmpeg。

4.4版本的源碼可從如下鏈接下載:https://ffmpeg.org/download.html

3.2.2 修改pro文件

然后就是將Qt程序拷貝到Ubuntu中進(jìn)行交叉編譯,在編譯之前,還要修改pro文件,使程序能夠鏈接到linux版本的FFmpeg庫,具體的修改如下,主要路徑要修改為自己的ffmpeg庫的安裝位置。

3.3 演示視頻



4 總結(jié)

本篇介紹了通過Qt程序,設(shè)計一個RTSP視頻播放器,運(yùn)行在嵌入式Linux平臺上,來播放網(wǎng)絡(luò)視頻,并增加啟動、暫停、畫面翻轉(zhuǎn)等操作按鈕。



嵌入式Qt-FFmpeg設(shè)計一個RTSP播放器的評論 (共 條)

分享到微博請遵守國家法律
安康市| 揭西县| 平原县| 堆龙德庆县| 临漳县| 陆河县| 安宁市| 忻州市| 临猗县| 土默特左旗| 玛多县| 江山市| 保山市| 灌云县| 洪洞县| 女性| 习水县| 遂溪县| 铅山县| 南靖县| 公主岭市| 滕州市| 抚宁县| 襄城县| 康平县| 观塘区| 麻城市| 莲花县| 四平市| 舟曲县| 永城市| 彰武县| 乡城县| 黄浦区| 静宁县| 遵义市| 开远市| 腾冲县| 噶尔县| 黎城县| 江西省|