91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于ESM6802的多媒體編程應(yīng)用方案

英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-10-11 17:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ESM6802是英創(chuàng)公司推出的基于Freescale i.MX6DL雙核處理器(ARM Cortex-A9,主頻1GHz)的高性能工控主板。我們?cè)贓SM6802上做了針對(duì)性的優(yōu)化來(lái)使其更好的支持多媒體音視頻的處理,在測(cè)試時(shí)我們的環(huán)境及測(cè)試效果如下表所示:

硬件環(huán)境
開(kāi)發(fā)板 ESM6802
CPU i.MX6DL
硬件視頻處理模塊(VPU) √ 用于視頻編解碼等處理
硬件圖像處理模塊(GPU √ 用于應(yīng)用界面的圖像顯示
內(nèi)存 1GB 64位DDR3
存儲(chǔ) 4GB eMMC高速存儲(chǔ)
顯示 8.4吋LVDS顯示屏800x600
攝像頭 羅技C310USB攝像頭
軟件環(huán)境及配置
操作系統(tǒng) Linux
圖形界面 X11
編程庫(kù) Qt-5.8.0
開(kāi)發(fā)環(huán)境 QtCreator
音頻格式 MP3
視頻格式 H264(選用),H263,MP4等
視頻分辨率 640x480 30幀
視頻封裝格式 Flv
運(yùn)行效果 優(yōu)化后的系統(tǒng) 未優(yōu)化的系統(tǒng)
硬件加速 無(wú)
錄制效果 流暢無(wú)卡頓 完全卡死
CPU占用率 49.1% >100%
CPU溫度 71.1℃ 75.0℃

下面將介紹ESM6802上面的多媒體編程應(yīng)用方案供客戶在實(shí)際開(kāi)發(fā)中參考。

1、應(yīng)用程序圖形界面

在處理多媒體時(shí),需要提供一個(gè)良好的控制界面,來(lái)控制音視頻的播放或者錄制。ESM6802提供了X11和Qt5.8.0來(lái)給客戶提供一個(gè)良好的編程環(huán)境,X11平臺(tái)能夠使用imx6dl處理器內(nèi)部的GPU模塊,使得圖像顯示獲得硬件加速,但是X11一般不作為直接的開(kāi)發(fā)環(huán)境來(lái)搭建應(yīng)用程序,實(shí)際使用中多是選擇更加高級(jí)的庫(kù)比如Qt以及gtk,在此我們選擇Qt進(jìn)行介紹。ESM6802中預(yù)裝了Qt 5.8.0版本。Qt運(yùn)行于X11(Qt概念中的xcb平臺(tái))上又能獲益于X11得到的硬件圖形顯示加速,從而提升Qt的運(yùn)行效果。Qt官方提供了很完整的文檔以及應(yīng)用示例作為開(kāi)發(fā)的參考的資料,我們不再詳細(xì)介紹著寫內(nèi)容,下面我們將展示Qt例程中的camera以及player的界面,兩者顯示效果如下例圖片,其中camera提供了拍照和錄像兩種模式,兩個(gè)模式分別有自己不同的設(shè)置界面;player提供了文件選擇功能,可以方便的瀏覽選擇視頻文件:

圖1camera顯示界面

圖2錄像設(shè)置界面

圖3拍照設(shè)置界面

圖4player播放界面

這兩個(gè)程序的源碼都可以在Qt源碼中獲得,或者在QtCreator的示例選擇界面獲得,也可以向我們的工程師獲取。

為了方便監(jiān)視程序運(yùn)行的CPU占用以及CPU溫度,我們?cè)赾amera例程中增加了部分代碼,添加兩個(gè)標(biāo)簽用于展示CPU占用率以及CPU溫度。部分代碼如下:

通過(guò)讀取/proc/stat文件獲取CPU占用率:

void CPUINFO::read_cpu_jiffy(jiffy_counts_t *p_jif)

{

FILE *fp = fopen("/proc/stat", "r");

static const char fmt[] = "cpu %llu %llu %llu %llu %llu %llu %llu %llu";

int ret;

char line_buf[80];

if (!fgets(line_buf, 80, fp) || line_buf[0] != 'c' /* not "cpu" */)

return ;

ret = sscanf(line_buf, fmt,

&p_jif->usr, &p_jif->nic, &p_jif->sys, &p_jif->idle,

&p_jif->iowait, &p_jif->irq, &p_jif->softirq,

&p_jif->steal);

if (ret >= 4) {

p_jif->total = p_jif->usr + p_jif->nic + p_jif->sys + p_jif->idle

+ p_jif->iowait + p_jif->irq + p_jif->softirq + p_jif->steal;

/* procps 2.x does not count iowait as busy time */

p_jif->busy = p_jif->total - p_jif->idle - p_jif->iowait;

}

fclose(fp);

return;

}

void CPUINFO::get_cpu_load(double *p_load)

{

total = cur.total - pre.total;

busy = cur.busy - pre.busy;

if ((total > busy) && (total > 0) && (busy > 0))

*p_load = (double)busy / (double)total * 100;

}

讀取/sys/class/thermal/thermalzone0/temp文件獲取CPU溫度:

void CPUINFO::read_cpu_temp(unsigned int *p_temp)

{

FILE *fp = fopen("/sys/class/thermal/thermal_zone0/temp", "r");

fscanf(fp, "%u", p_temp);

fclose(fp);

return;

}

加入CPU占用率和CPU溫度檢測(cè)后的界面如下,CPU信息顯示在右上角:

2、音視頻處理

Freescale官方針對(duì)imx6dl的硬件編解碼器提供了特有的gstreamer插件,gstreamer是一個(gè)基于流水線的流媒體處理框架,以插件的形式提供對(duì)不同格式的音視頻處理的支持。使用Gstreamer可以很容易地創(chuàng)建各種多媒體功能組件,包括簡(jiǎn)單的音視頻回放、錄制、編輯等,但是對(duì)于不熟悉Gstreamer框架的客戶可能獨(dú)立使用Gstreamer編程有一定困難,因此我們將是用Qt的多媒體處理模塊來(lái)進(jìn)行音視頻的播放和錄制。Qt的多媒體處理模塊(multimedia)是基于Gstreamer的,我們將Qt 的multimedia模塊編譯進(jìn)了ESM6802的文件系統(tǒng),同時(shí)針對(duì)imx6dl特有的gstreamer插件修改了Qt源碼,使得用戶在使用中可以參考Qt官方的編程文檔而不需要進(jìn)行特殊設(shè)置,同時(shí)又能夠使用到硬件加速來(lái)處理音視頻,包括視頻的編解碼以及視頻的顯示。

ESM6802硬件支持的視頻格式如下:

支持解碼的視頻格式為:

●H.264 BP/MP/HP

●VC-1 SP/MP/AP

●MPEG-4 SP/ASP (不包括GMC)

●DivX(Xvid)

●MPEG-1/2

●VP8

●AVS

●MJPEG

支持的編碼格式為:

●H.264

●MPEG-4

●H.263

●MJPG

關(guān)于更多詳細(xì)的資料可以參考我們之前的文章以及Qt的官方文檔:

《ESM6802視頻處理簡(jiǎn)介》

《ESM6802支持Qt攝像頭應(yīng)用》

《ESM6802支持基于Qt的視頻播放》

在進(jìn)行視頻錄制時(shí)需要自己設(shè)置使用的編碼格式,視頻播放時(shí)Qt能夠自動(dòng)選擇解碼器。我們下面將介紹怎么在應(yīng)用中選擇要使用的編碼格式,只有選擇硬件編碼器支持的格式才能獲得贏家加速,我們推薦用戶在使用中采用H264的格式,還是以Qt官方例程camera為例,部分代碼如下:

//audio codecs 獲取支持的音頻格式

ui->audioCodecBox->addItem(tr("Default audio codec"), QVariant(QString()));

foreach (const QString &codecName, mediaRecorder->supportedAudioCodecs()) {

QString description = mediaRecorder->audioCodecDescription(codecName);

ui->audioCodecBox->addItem(codecName+": "+description, QVariant(codecName));

}

//sample rate 支持的采樣率:

foreach (int sampleRate, mediaRecorder->supportedAudioSampleRates()) {

ui->audioSampleRateBox->addItem(QString::number(sampleRate), QVariant(sampleRate));

}

ui->audioQualitySlider->setRange(0, int(QMultimedia::VeryHighQuality));

//video codecs 支持的視頻編碼格式

ui->videoCodecBox->addItem(tr("Default video codec"), QVariant(QString()));

foreach (const QString &codecName, mediaRecorder->supportedVideoCodecs()) {

QString description = mediaRecorder->videoCodecDescription(codecName);

ui->videoCodecBox->addItem(codecName+": "+description, QVariant(codecName));

}

ui->videoQualitySlider->setRange(0, int(QMultimedia::VeryHighQuality));

//video codecs 支持的分辨率

ui->videoResolutionBox->addItem(tr("Default"));

QList supportedResolutions = mediaRecorder->supportedResolutions();

foreach (const QSize &resolution, supportedResolutions) {

ui->videoResolutionBox->addItem(QString("%1x%2").arg(resolution.width()).arg(resolution.height()),QVariant(resolution));

}

ui->videoFramerateBox->addItem(tr("Default"));

QList supportedFrameRates = mediaRecorder->supportedFrameRates();

qreal rate;

foreach (rate, supportedFrameRates) {

QString rateString = QString("%1").arg(rate, 0, 'f', 2);

ui->videoFramerateBox->addItem(rateString, QVariant(rate));

}

//containers 支持的封裝格式

ui->containerFormatBox->addItem(tr("Default container"), QVariant(QString()));

foreach (const QString &format, mediaRecorder->supportedContainers()) {

ui->containerFormatBox->addItem(format+":"+mediaRecorder->containerDescription(format), QVariant(format));

設(shè)置采用的視頻格式等參數(shù):

void VideoSettings::setAudioSettings(const QAudioEncoderSettings &audioSettings)

{

return;

selectComboBoxItem(ui->audioCodecBox, QVariant(audioSettings.codec()));

selectComboBoxItem(ui->audioSampleRateBox, QVariant(audioSettings.sampleRate()));

ui->audioQualitySlider->setValue(audioSettings.quality());

}

void VideoSettings::setVideoSettings(const QVideoEncoderSettings &videoSettings)

{

selectComboBoxItem(ui->videoCodecBox, QVariant(videoSettings.codec()));

selectComboBoxItem(ui->videoResolutionBox, QVariant(videoSettings.resolution()));

ui->videoQualitySlider->setValue(videoSettings.quality());

//special case for frame rate

for (int i = 0; i < ui->videoFramerateBox->count(); ++i) {

qreal itemRate = ui->videoFramerateBox->itemData(i).value();

if (qFuzzyCompare(itemRate, videoSettings.frameRate())) {

ui->videoFramerateBox->setCurrentIndex(i);

break;

}

}

}

在使用中進(jìn)入camera程序的錄制視頻的設(shè)置界面就可以看到各個(gè)設(shè)置支持的參數(shù), 然后可以手動(dòng)選擇要使用的參數(shù),之后點(diǎn)擊OK就能是設(shè)置生效。用戶在自己的應(yīng)用程序中可以選擇固定的參數(shù)簡(jiǎn)化應(yīng)用程序,使用硬件編碼加速視頻的錄制。

3、總結(jié)

imx6dl處理器內(nèi)部提供了針對(duì)多媒體處理和圖像顯示的硬件模塊來(lái)輔助相關(guān)功能的實(shí)現(xiàn),在編程中使用這些硬件模塊提供的功能能夠加速應(yīng)用的處理過(guò)程,減小CPU等系統(tǒng)資源的占用。我們針對(duì)這些硬件模塊定制了ESM6802的文件系統(tǒng),提供了Qt+X11的平臺(tái)來(lái)簡(jiǎn)化客戶的應(yīng)用程序開(kāi)發(fā)過(guò)程,用戶使用Qt來(lái)開(kāi)發(fā)自己的圖形界面多媒體處理程序可以直接參考Qt官方的文檔進(jìn)行編程,就可以使用到ESM6802的硬件資源,而不需要做特殊設(shè)置。實(shí)際測(cè)試中,在我們修改過(guò)的Qt上運(yùn)行程序CPU占用率以CPU溫度都相對(duì)于沒(méi)有進(jìn)過(guò)修改的程序有明顯的改善。開(kāi)發(fā)中用戶可以參考以上介紹的程序中的源碼來(lái)實(shí)現(xiàn)自己需要的功能,有興趣的客戶可以直接和我們的工程師進(jìn)行溝通獲取相關(guān)資料以及程序源碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213675
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6100

    瀏覽量

    36289
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    雙核A9工控主板ESM6802即將入市

      ESM6802采用NXP 雙核Cortex-A9 CPU i.MX6DL,可預(yù)裝正版WEC7或Linux-4.1.15操作系統(tǒng),ESM6802核心單元配備了1GB 64-bit DDR3內(nèi)存
    發(fā)表于 01-03 15:51

    ESM6802雙屏顯示(LVDS+HDMI)設(shè)置

    支持 和 多媒體音視頻 )中分別進(jìn)行介紹。用戶閱讀完下面的內(nèi)容之后可以進(jìn)行隨意組合使用雙屏顯示不同或相同內(nèi)容。2、Qt5支持  ESM6802 文件系統(tǒng)已經(jīng)移植好了Qt 5.5.1 版本,支持qml等
    發(fā)表于 01-26 10:41

    WinCE工控主板ESM6802對(duì)音頻的支持

      ETA972是采用Cirrus Logic的CS4272音頻解碼芯片的音頻擴(kuò)展模塊,ESM6802提供了一路I2S信號(hào)可與ETA972相連,以支持音頻播放功能。ESM6802的I2S接口
    發(fā)表于 04-05 15:47

    ESM6802多媒體應(yīng)用方案

    完全卡死CPU占用率49.1%>100%CPU溫度71.1℃75.0℃  下面將介紹ESM6802上面的多媒體編程應(yīng)用方案供客戶在實(shí)際開(kāi)發(fā)中參考。1、應(yīng)用程序圖形界面在處理
    發(fā)表于 10-19 15:38

    ESM6802支持基于Qt的視頻播放

      iMX6DL是工控主板ESM6802主板的核心芯片,該芯片支持多種常見(jiàn)視頻格式的硬件編解碼,可以流暢的播放視頻。目前ESM6802文件系統(tǒng)中已經(jīng)移植了Qt5.8.0,可全面支持
    發(fā)表于 10-19 16:41

    ESM6802支持Qt攝像頭應(yīng)用

      ESM6802是英創(chuàng)公司推出的基于Freescale i.MX6DL雙核處理器(ARM Cortex-A9,主頻1GHz)的高性能工控主板,已經(jīng)移植了Linux 4.1.15版本以及Qt 5.8
    發(fā)表于 10-20 10:33

    ESM6802視頻處理簡(jiǎn)介

    文檔。4、Qt 5.8多媒體處理模塊  ESM6802文件系統(tǒng)已經(jīng)移植了Qt 5.8,Qt的多媒體處理模塊是基于GStreamer框架搭建的,用戶在編寫程序時(shí)可以調(diào)用Qt提供的API來(lái)進(jìn)行視頻處理
    發(fā)表于 10-20 10:36

    用于WinCE的ESM6802 SDK

    ESM6802 SDK for WinCE
    發(fā)表于 09-27 11:18

    ESM6802上燒寫Android系統(tǒng)的過(guò)程

    ESM6802 Android版燒寫說(shuō)明
    發(fā)表于 09-27 11:15

    ESM6802工控主板技術(shù)參考手冊(cè)

    ESM6802工控主板技術(shù)參考手冊(cè)
    發(fā)表于 09-27 06:44

    基于WEC7的ESM6802工控主板使用手冊(cè)

    ESM6802工控主板使用必讀(WEC7)
    發(fā)表于 09-27 11:19

    ESM6802工控主板相關(guān)技術(shù)指標(biāo)

    ESM6802工控主板數(shù)據(jù)手冊(cè)
    發(fā)表于 09-27 13:09

    英創(chuàng)信息技術(shù)WinCE工控主板ESM6802對(duì)音頻的支持

    ETA972是采用Cirrus Logic的CS4272音頻解碼芯片的音頻擴(kuò)展模塊,ESM6802提供了一路I2S信號(hào)可與ETA972相連,以支持音頻播放功能。ESM6802的I2S接口與GPIO
    的頭像 發(fā)表于 02-05 11:15 ?1788次閱讀
    英創(chuàng)信息技術(shù)WinCE工控主板<b class='flag-5'>ESM6802</b>對(duì)音頻的支持

    英創(chuàng)信息技術(shù)ESM6804與ESM6802性能對(duì)比簡(jiǎn)介

    ESM6804是在ESM6802基礎(chǔ)上升級(jí)的更高性能的產(chǎn)品,其采用NXP 四核Cortex-A9 CPU i.MX6Q,而ESM6802使用的是NXP的雙核Cortex-A9 i.MX6DL,兩者
    的頭像 發(fā)表于 02-07 10:41 ?1660次閱讀
    英創(chuàng)信息技術(shù)<b class='flag-5'>ESM</b>6804與<b class='flag-5'>ESM6802</b>性能對(duì)比簡(jiǎn)介

    英創(chuàng)信息技術(shù)ESM6802主板1920x1080高清顯示的兩種接口簡(jiǎn)介

    采用HDMI或者雙通道LVDS接口方式,以提高其抗干擾的能力,其中關(guān)于ESM6802雙通道LVDS信號(hào)接口定義,請(qǐng)參考公司網(wǎng)站上《ESM6802支持雙通道LVDS高清大屏顯示》一文中有詳細(xì)的介紹。本文
    的頭像 發(fā)表于 02-12 10:31 ?2144次閱讀
    英創(chuàng)信息技術(shù)<b class='flag-5'>ESM6802</b>主板1920x1080高清顯示的兩種接口簡(jiǎn)介
    主站蜘蛛池模板: 国产免费爽爽视频免费可以看 | 午夜免费视频网站 | 美女又爽又黄视频 | 天天性综合 | 五月婷婷六月丁香 | 日韩有色| 一本到视频在线 | 高清毛片aaaaaaaaa片 | 手机福利在线 | 国产男女怕怕怕免费视频 | 激情婷婷丁香 | 人人澡人人人人夜夜爽 | 国产黄色的视频 | 欧美在线视频播放 | 狠狠色丁香久久综合网 | 欧美性色欧美a在线观看 | 亚洲一区二区三区四区五区六区 | www国产永久免费视频看看 | 十三以下岁女子毛片免费播放 | 日日夜夜狠狠干 | 最好看最新的中文字幕1 | 天天射天天舔 | 欧美乱理伦另类视频 | 日韩午夜免费 | 成人激情视频网 | 手机看片国产在线 | 国产综合在线观看视频 | xxxxxxxxx18免费视频| 日韩一级免费毛片 | 天天狠天天插 | 麻豆蜜桃 | 美女毛片免费看 | 三级视频网站在线观看播放 | 九九99视频在线观看视频观看 | www.xxx.国产| 欧美日本一道免费一区三区 | 永久在线免费观看 | 免费黄色 | 高h细节肉爽文bl文 高h细节肉爽文男男 | 深夜视频免费在线观看 | 色黄视频网站 |