版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/Tosonw/article/details/89509356
概要:
vlc編譯, 硬解基于libva庫(kù)(VAAPI), live555(liblivemedia-dev), --enable-live555才能播放rtsp流, 基于liveMedia庫(kù), vlc對(duì)ffmpeg是運(yùn)行時(shí)依賴,把libavcodec_plugin.so刪了就可以。
ps:
重點(diǎn)章節(jié):
“二、VLC編譯與安裝” :
“1.依賴相關(guān)”
“2.VLC編譯”
“4.vainfo”
該章節(jié)是我親自編譯的記錄,基于Ubuntu 16.04。
另外,本來(lái)想用intel核顯解碼,但可惜libva庫(kù)的VAAPI驅(qū)動(dòng)一直未調(diào)通。
一、VLC中GPU解碼簡(jiǎn)介
參考:(https://wiki.videolan.org/VLC_VAAPI/)
1.VLC基于libva庫(kù)(VAAPI):
一個(gè)開(kāi)源庫(kù)和API規(guī)范,可以訪問(wèn)圖形硬件加速功能以進(jìn)行視頻處理。它由一個(gè)主庫(kù)和每個(gè)支持的硬件供應(yīng)商的特定于驅(qū)動(dòng)程序的加速后端組成。
另請(qǐng)參閱:VLC GPU解碼:https://wiki.videolan.org/VLC_GPU_Decoding/
在某些情況下,VLC框架可以使用您的圖形卡(也稱為GPU)來(lái)解碼H.264流(錯(cuò)誤地稱為HD視頻)。
VLC在其模塊化方法及其轉(zhuǎn)碼/流媒體功能中,僅在解碼階段在GPU中進(jìn)行解碼,然后將數(shù)據(jù)恢復(fù)到其他階段(流式傳輸,過(guò)濾或插入任何視頻輸出)。
這意味著,與其他一些實(shí)現(xiàn)相比,VLC中的GPU解碼速度較慢,因?yàn)樗枰獜腉PU獲取數(shù)據(jù)。 但您可以將任何視頻輸出(接收器)插入其中并使用所有VLC視頻過(guò)濾器。
2.VAAPI的介紹
此頁(yè)面是關(guān)于在Linux上支持GPU加速的VLC編譯。
這個(gè)howto由Jean-Baptiste Kempf編寫(xiě)并使用nVidia GPU進(jìn)行測(cè)試。
vaapi:https://www.freedesktop.org/wiki/Software/vaapi/
在Linux / X11上,有兩個(gè)用于硬件視頻解碼的競(jìng)爭(zhēng)接口:
來(lái)自Intel的VA-API,和來(lái)自NVIDIA的VDPAU。
通常,VAAPI用于Intel和Broadcom圖形卡,而VDPAU用于AMD / ATI和NVIDIA卡。
VA-API:
在Ubuntu發(fā)行版上,首先安裝硬件支持包:i965-va-driver,libva-intel-vaapi-driver和vainfo,然后在Preferences→Input&Codecs中激活GPU硬件加速。
??? $ sudo apt-get install i965-va-driver libva-intel-vaapi-driver vainfo
VDPAU:
自VLC版本2.1.0起,VDPAU支持解碼,自VLC 2.2.0起支持后處理和渲染(截至2013年底仍處于開(kāi)發(fā)階段)。
默認(rèn)情況下,VLC版本2.2.0以后將自動(dòng)啟用VDPAU。
有關(guān)技術(shù)詳細(xì)信息,請(qǐng)參閱http://www.remlab.net/op/vlc-vdpau.shtml。
3.在編譯vlc之前保證以下正確安裝
安裝libva(注:We do not support other libraries than the one from Mr Beauchesne.)
https://github.com/intel/libva (https://www.freedesktop.org/wiki/Software/vaapi/)
nvidia驅(qū)動(dòng)(注:Use at least version 0.6.2 )
ATI(注:Use at least 0.6.4.)
#檢查是否正確配置了libva環(huán)境變量:
$ set | grep LIBVA
#應(yīng)輸出如下內(nèi)容:
LIBVA_DRIVER_NAME=xvba
LIBVA_DRIVERS_PATH=/usr/lib64/va/drivers
#如果沒(méi)有,請(qǐng)根據(jù)庫(kù)路徑將這些添加到系統(tǒng)環(huán)境變量(/etc/environment ?)
VLC基于FFmpeg插件。
FFmpeg: https://github.com/FFmpeg/FFmpeg
./configure --enable-gpl --enable-postproc --prefix=/path/to/ --enable-shared --enable-vaapi
make -j12
make install
#將vaapi.h復(fù)制到includes
二、VLC編譯與安裝
1.依賴相關(guān)
sudo apt install libva-dev
sudo apt -y install libvdpau-dev
sudo apt -y install vdpau-va-driver
sudo apt -y install vdpauinfo
sudo apt -y install libavcodec-dev
sudo apt -y install libvdpau-va-gl1
sudo apt install libdrm-dev
sudo apt-get install autoconf automake libtool //運(yùn)行autogen.sh用
sudo apt-get install libffi-dev
sudo apt-get install libx11-dev libxext-dev libxfixes-dev
sudo apt install libxcb-dev //提供X window protocol access
sudo apt install libpciaccess-dev //提供PCI access
以下是我在實(shí)際編譯的時(shí)候仍然缺少的,和異常的依賴項(xiàng):
sudo apt install -y libmad-ocaml-dev
sudo apt install -y libgstreamer-ocaml-dev
sudo apt install -y liba52-0.7.4
sudo apt install -y liba52-0.7.4-dev
sudo apt install -y libxcb-composite0-dev
sudo apt install -y libxcb-xv0-dev
sudo apt install -y libxcb-randr0-dev
sudo apt install -y libxcb-keysyms1-dev
sudo apt install -y wayland-protocols
sudo apt install -y libalsa-ocaml-dev
sudo apt install -y libxcb-xkb-dev
sudo apt install -y libsidplay2-dev
sudo apt install -y libogg-dev
sudo apt install -y libdca-dev
sudo apt install -y libflac-dev
sudo apt install -y libmpeg2-4-dev
sudo apt install -y libvorbis-dev
sudo apt install -y libspeex-dev
sudo apt install -y libtheora-dev
sudo apt install -y libfreetype6-dev
sudo apt install -y libcaca-dev
sudo apt install -y libncursesw5-dev
sudo apt install libbluray-dev
sudo apt install -y libssh2-1-dev
sudo apt install -y libvncserver-dev
sudo apt install -y libfreerdp-dev
sudo apt install libdvbpsi-dev
sudo apt install -y libpulse-dev
sudo apt install -y libcddb2-dev
sudo apt install -y libdbus-1-dev
sudo apt install -y libsystemd-dev
sudo apt install -y libsmbclient-dev
# 版本太高,configure: error: libavutil versions 55 and later are not supported.
#sudo apt purge libavutil-dev
#sudo apt purge libavutil-ffmpeg54
# 依賴問(wèn)題:configure: error: Could not find the LUA byte compiler.
# 可以在編譯時(shí)使用--disable-lua。或者安裝lua,如下:
sudo apt install liblua5.2-dev
sudo apt install liblua50-dev
sudo apt install liblualib50-dev
# 編譯問(wèn)題:yacc: command not found
sudo apt install byacc
# ERROR: flex is not installed.
sudo apt install flex
# ERROR: GNU bison is not installed.
sudo apt install bison
# configure: error: No package 'Qt5Core' found
# No package 'Qt5Widgets' found
# No package 'Qt5Gui' found
# No package 'Qt5Quick' found
# No package 'Qt5QuickWidgets' found
# No package 'Qt5QuickControls2' found
# No package 'Qt5Svg' found. If you want to build VLC without GUI, pass --disable-qt.
# 對(duì)上述問(wèn)題,我使用的是:$ ./configure --disable-qt
# 也可以參考下面一句,自行安裝:(我好像這樣試過(guò),然而不行)
sudo apt install -y qt5-default qtcreator libqt5svg5-dev
# configure: error: Skins2 interface requires FreeType, libxpm, libxext and libxinerama
sudo apt install -y libfreetype6 libfreetype6-dev libxpm-dev libxext-dev libxinerama-dev
# Makefile:1806: recipe for target 'lua/intf/modules/httprequests.luac' failed
# make[2]: *** [lua/intf/modules/httprequests.luac] Error 1
#?? LUAC?? lua/intf/telnet.luac
sudo apt install -y liblua5.1-0-dev liblua5.1-bitop-dev liblua5.1-rrd-dev liblua5.2-dev liblua5.3-dev
sudo apt install -y lua5.1-policy-dev
sudo apt install -y libghc-hslua-dev libluabind-dev libluajit-5.1-dev libtexlua52-dev libtexluajit-dev
sudo apt install -y libtolua++5.1-dev libtolua-dev lua-ansicolors-dev lua-apr-dev lua-bit32-dev lua-cjson-dev
sudo apt install -y lua-cliargs-dev lua-curl-dev lua-curses-dev lua-cyrussasl-dev lua-dbi-mysql-dev
sudo apt install -y lua-dbi-postgresql-dev lua-dbi-sqlite3-dev lua-discount-dev lua-dkjson-dev
sudo apt install -y lua-event-dev lua-expat-dev lua-filesystem-dev lua-iconv-dev lua-ldap-dev lua-leg-dev
sudo apt install -y lua-lemock-dev lua-lgi-dev lua-lpeg-dev lua-lpty-dev lua-luassert-dev lua-md5-dev
sudo apt install -y lua-mediator-dev lua-messagepack-dev lua-penlight-dev lua-posix-dev lua-redis-dev
sudo apt install -y lua-rex-gnu-dev lua-rex-onig-dev lua-rex-pcre-dev lua-rex-posix-dev lua-rex-tre-dev
sudo apt install -y lua-rings-dev lua-rrd-dev lua-say-dev lua-sec-dev lua-socket-dev lua-sql-mysql-dev
sudo apt install -y lua-sql-postgres-dev lua-sql-sqlite3-dev lua-svn-dev lua-term-dev lua-uri-dev
sudo apt install -y lua-wsapi-fcgi-dev lua-yaml-dev lua-zip-dev lua-zlib-dev
需要–enable-live555才能播放rtsp流,基于liveMedia庫(kù)。
注意:不要用apt直接安裝live555(liblivemedia-dev),我剛開(kāi)始就這樣操作,導(dǎo)致vlc打開(kāi)rtsp時(shí)出現(xiàn)段錯(cuò)誤。
手動(dòng)下載live555編譯安裝后,手動(dòng)建立文件(索引包):/usr/lib/x86_64-linux-gnu/pkgconfig/live555.pc
sudo vim /usr/lib/x86_64-linux-gnu/pkgconfig/live555.pc
寫(xiě)入如下內(nèi)容:(注:路徑根據(jù)自己的系統(tǒng),自行修改)
prefix=/usr/local
libdir=/usr/local/lib #庫(kù)路徑目錄,注:源碼編譯出來(lái)的庫(kù)是.la庫(kù)。
includedir=${prefix}/include #安裝的頭文件的目錄
Name: live555
Description: multimedia RTSP streaming library
Version: 2016.02.09
Cflags: -I${includedir}/liveMedia -I${includedir}/groupsock -I${includedir}/BasicUsageEnvironment -I${includedir}/UsageEnvironment
Libs: -L${libdir} -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment
2.VLC編譯
源碼編譯:
??? 下載vlc-3.0.6-20190114-0223.tar.xz:http://nightlies.videolan.org/build/source/
??? 我是在Git下載的:https://github.com/videolan/vlc
??? (并且使用的是就是最新代碼編譯通過(guò)的:4.0.0-dev-7527-g6a4f370)
或者直接下載現(xiàn)成的軟件應(yīng)用:
??? Ubuntu軟件管理中心:搜索vlc,點(diǎn)擊安裝。參考:https://wiki.videolan.org/Configure/
??? 然后將安裝路徑下的庫(kù)取出來(lái)直接用。
依賴項(xiàng)(有點(diǎn)多。。。)
注:除了前面的“1.依賴相關(guān)”里安裝的依賴項(xiàng)之外,這里我也同樣操作過(guò)下面的命令,安裝了以下依賴項(xiàng):
sudo apt-get install libvorbis-dev libogg-dev libtheora-dev speex libspeex-dev flac libflac-dev x264 libx264-dev a52-0.7.4 liba52-0.7.4-dev mpeg2dec libmpeg2-4-dev faad libfaad-dev faac libfaac-dev lame libmp3lame-dev libavdevice-dev libmad0 libmad0-dev libschroedinger-dev libebml-dev libdca-dev twolame libtwolame-dev libmpcdec-dev libvorbisidec1 libvorbisidec-dev libass-dev libmatroska-dev libdvbpsi-dev libmodplug1 libmodplug-dev libshout3 libshout3-dev libdvdread4 libdvdnav4 libdvdnav-dev livemedia-utils liblivemedia-dev libcddb2 libcddb2-dev libcdio13 libcdio-dev libxcb-composite0-dev libcdio-utils vcdimager libvcdinfo0 libvcdinfo-dev libgpg-error0 libgpg-error-dev libgcrypt11-dev gnutls-bin libgnutls-dev libdap-bin libdap-dev libxml2 libxml2-dev libpng12-0 libpng12-dev libjpeg8 libtiff5 libsdl1.2-dev libsdl-image1.2 libsdl-image1.2-dev libc-bin gettext libfreetype6 libfreetype6-dev libfribidi-dev libfribidi0 zlib1g zlib1g-dev libtag1-dev libcaca0 libcaca-dev caca-utils libqt4-dev libportaudio2 libupnp-dev libupnp6 libexpat1 libexpat1-dev yasm libxcb-xv0 libxcb-xv0-dev libx11-xcb1 libx11-xcb-dev liblua5.2-dev libswscale-dev
編譯:
# 源碼clone
git clone https://github.com/videolan/vlc.git
# 查看版本信息
git log
# 根據(jù)需要,可以更新到指定release版本:
#例vlc-4.0.0:
#git checkout 1f2e534f3033aab9dd31442f7b3956728b62b3d3
#例vlc-3.0.0:
#git checkout 8d432b090e08f141ce9156dc728afbed4636301b
# 開(kāi)始編譯(注:備注:要支持播放rtsp流,必須enable live。要能打印debug,也要enable debug選項(xiàng)。)
./bootstrap
mkdir build; cd build
#../configure --disable-lua --disable-qt --enable-live555 --enable-debug? --enable-x264
../configure --enable-avcodec --enable-avformat --enable-swscale --enable-mad --enable-a52 --enable-libmpeg2 --enable-faad --enable-vorbis --enable-ogg --enable-theora --enable-freetype --enable-fribidi --enable-speex --enable-flac --enable-live555 --enable-caca --enable-alsa --enable-ncurses --enable-debug --enable-x264 --disable-lua --disable-qt --enable-dsm --enable-dvbpsi --enable-dvdnav --enable-dvdread --enable-bluray --enable-nfs --enable-pulse --enable-freerdp --enable-sftp --enable-vnc --enable-run-as-root --enable-archive --enable-dc1394 --enable-dv1394 --enable-smbclient
sudo make -j12 #或者 ./compile
sudo make install
啟動(dòng)VLC:
#直接在命令行上:
vlc --ffmpeg-hw #hw:硬解? sw:軟解
#其實(shí)可以直接啟動(dòng):
vlc
#Exemple: on playback log output (with -v debug and ATI VAAPI)
[0x7f8c4cc03ba8] avcodec decoder: Using VA API version 0.32 for hardware decoding.
以下“3.”“4.”“5.”節(jié),與VLC硬解相關(guān)
3.libva-2.1.1編譯安裝
#依賴
$ sudo apt install -y libc6 libdrm-intel1 libdrm2 libva-x11-1 libva1 multiarch-support
#源碼
$ git clone https://github.com/intel/libva.git
$ cd libva
#編譯
$ sudo ./autogen.sh -with-drivers-path=/usr/lib/x86_64-linux-gnu/dri
$ sudo make -j12
$ sudo make install
4.vainfo
vainfo工具用于查看libva庫(kù)調(diào)用信息。
$ sudo apt install vainfo
$ vainfo
# 將會(huì)輸出一些調(diào)用信息
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'i965'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
vainfo支持調(diào)用nvidia顯卡,但需要先安裝nvidia_video驅(qū)動(dòng):
$ sudo apt install vdpau-va-driver
#查看庫(kù)文件
$ ll /usr/lib/x86_64-linux-gnu/dri/
#將查看到有個(gè)nvidia_drv_video.so文件
lrwxrwxrwx?? 1 root root?????? 18 4月?? 7? 2016 nvidia_drv_video.so -> vdpau_drv_video.so
#此時(shí)使用vainfo查看調(diào)用情況
$ vainfo
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'nvidia'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
????? VAProfileMPEG2Simple??????????? :?? ?VAEntrypointVLD
????? VAProfileMPEG2Main????????????? :?? ?VAEntrypointVLD
????? VAProfileMPEG4Simple??????????? :?? ?VAEntrypointVLD
????? VAProfileMPEG4AdvancedSimple??? :?? ?VAEntrypointVLD
????? VAProfileH264Baseline?????????? :?? ?VAEntrypointVLD
????? VAProfileH264Main?????????????? :?? ?VAEntrypointVLD
????? VAProfileH264High?????????????? :?? ?VAEntrypointVLD
????? VAProfileVC1Simple????????????? :?? ?VAEntrypointVLD
????? VAProfileVC1Main??????????????? :?? ?VAEntrypointVLD
????? VAProfileVC1Advanced??????????? :?? ?VAEntrypointVLD
vainfo支持調(diào)用intel核顯,但需要先安裝i965-va-driver驅(qū)動(dòng):
(但是我的i965-va-driver庫(kù)調(diào)用一直是下面的問(wèn)題,無(wú)法解決。)
#查看是否安裝了驅(qū)動(dòng)
$ apt list i965-va-driver
Listing... Done
i965-va-driver/xenial,now 1.7.0-1 amd64 [installed,automatic]
#如果沒(méi)有安裝,則進(jìn)行安裝
$ sudo apt install -y i965-va-driver
#此時(shí)使用vainfo查看調(diào)用情況(注:要先將libva調(diào)用庫(kù)改為i965,即intel的VAAPI庫(kù)。)
$ export LIBVA_DRIVER_NAME=i965
$ vainfo
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'i965'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
vainfo: intel_driver.c:100: intel_driver_init: Assertion `(((struct drm_state *)(ctx)->drm_state)->auth_type == (VA_DRM_AUTH_DRI1)) || (((struct drm_state *)(ctx)->drm_state)->auth_type == (VA_DRM_AUTH_DRI2)) || (((struct drm_state *)(ctx)->drm_state)->auth_type == (VA_DRM_AUTH_CUSTOM))' failed.
Aborted (core dumped)
可能是直接使用apt安裝存在支持問(wèn)題,于是嘗試自己編譯intel的vaapi驅(qū)動(dòng):
$ sudo apt-get install libx11-dev libtool libdrm-dev build-essential autoconf libva-dev
$ git clone https://github.com/intel/intel-vaapi-driver.git
$ cd intel-vaapi-driver/
$ ./autogen.sh
#此時(shí)存在一些依賴項(xiàng)的版本問(wèn)題:
#configure: error: Package requirements (libva >= 1.4.0) were not met:
#Requested 'libva >= 1.4.0' but version of libva is 1.3.0
$ git clone https://github.com/intel/libva.git
$ cd libva/
$ ./autogen.sh -with-drivers-path=/usr/lib/x86_64-linux-gnu/dri
$ make -j12
$ sudo make install
#完成后返回intel-vaapi-driver目錄,再次配置并編譯:
$ cd ../intel-vaapi-driver/
$ ./autogen.sh
#我在配置路徑的時(shí)候發(fā)現(xiàn)配置無(wú)用,路徑仍然是默認(rèn)的/usr/local/lib/dri/
#沒(méi)去深究,我繼續(xù)編譯安裝,最后手動(dòng)將/usr/local/lib/dri/i965_drv_video.so庫(kù)鏈接到/usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
#后來(lái)發(fā)現(xiàn)是libva必須要先修改安裝路徑,然后intel-vaapi-driver的修改才能起作用
$ ./configure --prefix=/usr/lib/x86_64-linux-gnu/dri/
$ make -j12
$ sudo make install
#$ sudo ln -s /usr/local/lib/dri/i965_drv_video.so /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
#$ sudo ln -s /usr/local/lib/dri/i965_drv_video.la /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.la
此時(shí)使用vainfo查看調(diào)用情況,這次異常不一樣了,似乎是某函數(shù)問(wèn)題:
$ vainfo
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'i965'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so has no function __vaDriverInit_0_32
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
我在GitHub上有找到類似的問(wèn)題,但并不能解決我這出現(xiàn)的情況,后來(lái)提了issue:https://github.com/intel/intel-vaapi-driver/issues/455
繼續(xù)嘗試,經(jīng)過(guò)仔細(xì)考慮懷疑是這些驅(qū)動(dòng)的版本兼容問(wèn)題,比如我查到的大部分人們的版本為:libva info: VA-API version 0.34.0,而我的是0.39.0。
經(jīng)查詢:0.34.0對(duì)應(yīng)的libva版本是1.2.1,所以下載對(duì)應(yīng)版本:https://github.com/intel/libva/archive/libva-1.2.1.tar.gz
解壓后進(jìn)入目錄,進(jìn)行編譯安裝:
$ ./autogen.sh -with-drivers-path=/usr/lib/x86_64-linux-gnu/dri
$ make -j12
$ sudo make install
#完成后使用vainfo查看
$ vainfo
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'i965'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so has no function __vaDriverInit_0_32
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
#可以看到VA-API版本已經(jīng)為0.34.0了,接下來(lái)重新編譯intel-vaapi-driver
$ cd intel-vaapi-driver
$ ./autogen.sh
#會(huì)出現(xiàn)錯(cuò)誤:
configure: error: Package requirements (libva >= 1.4.0) were not met:
Requested 'libva >= 1.4.0' but version of libva is 0.34.0
我們的intel-vaapi-driver也應(yīng)該使用舊版本,經(jīng)檢查應(yīng)該使用:intel-vaapi-driver_1.2.1版本。下載:https://github.com/intel/intel-vaapi-driver/archive/1.2.1.tar.gz
解壓后進(jìn)入目錄,進(jìn)行編譯安裝:
$ cd ../intel-vaapi-driver-1.2.1/
$ ./autogen.sh
$ make -j12
但是編譯出現(xiàn)了錯(cuò)誤,問(wèn)題可能出在源碼里吧,因?yàn)樾掳姹揪幾g都正常,`
只可惜新版本運(yùn)行有問(wèn)題,舊版本又編譯不過(guò)。
Traceback (most recent call last):
? File "../../gpp.py", line 200, in
??? writeblocks(outfile, blocks)
? File "../../gpp.py", line 168, in writeblocks
??? do_writeblock(block, [])
? File "../../gpp.py", line 161, in do_writeblock
??? while check_cond(block.param_op, for_curs[0], block.param_limit):
? File "../../gpp.py", line 138, in check_cond
??? assert type(cur) == int
AssertionError
make[5]: Leaving directory '/home/toson/soft/intel-vaapi-driver-1.2.0/src/shaders/post_processing/gen5_6'
Makefile:376: recipe for target 'all-recursive' failed
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory '/home/toson/soft/intel-vaapi-driver-1.2.0/src/shaders/post_processing'
Makefile:377: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/toson/soft/intel-vaapi-driver-1.2.0/src/shaders'
Makefile:941: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/toson/soft/intel-vaapi-driver-1.2.0/src'
Makefile:533: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/toson/soft/intel-vaapi-driver-1.2.0/src'
Makefile:410: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
5.檢查版本
#查看libva版本
dpkg-query --showformat='${Package}: ${Version}\n' --show | grep libva
#查看vainfo版本
dpkg-query --showformat='${Package}: ${Version}\n' --show | grep vainfo
#查看i965版本
dpkg-query --showformat='${Package}: ${Version}\n' --show | grep i965
例:(我運(yùn)行的結(jié)果)
# List installed libva packages
$ dpkg-query --showformat='${Package}: ${Version}\n' --show | grep libva
libva-dev: 1.7.0-1ubuntu0.1
libva-drm1: 1.7.0-1ubuntu0.1
libva-egl1: 1.7.0-1ubuntu0.1
libva-glx1: 1.7.0-1ubuntu0.1
libva-tpi1: 1.7.0-1ubuntu0.1
libva-wayland1: 1.7.0-1ubuntu0.1
libva-x11-1: 1.7.0-1ubuntu0.1
libva1: 1.7.0-1ubuntu0.1
libva1: 1.7.0-1ubuntu0.1
# The vainfo installed
$ dpkg-query --showformat='${Package}: ${Version}\n' --show | grep vainfo
vainfo: 1.7.0-1ubuntu0.1
# List installed i915 Intel VAAPI driver
$ dpkg-query --showformat='${Package}: ${Version}\n' --show | grep i965
i965-va-driver: 1.7.0-1
6.我在編譯VLC時(shí)問(wèn)過(guò)的問(wèn)題
依賴庫(kù)編譯與調(diào)用:
Toson_桐:有誰(shuí)知道編譯vlc的時(shí)候怎樣讓它不依賴ffmpeg的那些解碼模塊?
不斷電的夢(mèng):依不依賴是代碼調(diào)用時(shí)決定的, 不是編譯時(shí)決定的.
Toson_桐:編譯時(shí)可以加編譯參數(shù)“–disable-***”,但是沒(méi)有–disable-ffmpeg這個(gè)
Toson_桐:vlc是不是必須依賴ffmpeg
爨纛鼟:那你得自己編ffmpeg禁用那些模塊 然后再編vlc 鏈你自己編的那版ffmpeg
爨纛鼟:@Toson_桐 你直接把libavcodec_plugin.so刪了就行
爨纛鼟:vlc對(duì)ffmpeg是運(yùn)行時(shí)依賴 你把插件一刪就沒(méi)有了
爨纛鼟:ffmpeg的解碼器比較全面 我不知道你為什么要禁用它 但是我告訴你可以通過(guò)運(yùn)行時(shí)參數(shù)指定使用哪個(gè)解碼器 如果你要自己寫(xiě)一個(gè)解碼器 可以把分?jǐn)?shù)設(shè)得比f(wàn)fmpeg高 這樣會(huì)優(yōu)先找你的
Toson_桐:@爨纛鼟 厲害了!,問(wèn)一下禁用ffmpeg會(huì)不會(huì)vlc對(duì)某些編碼格式就不支持了
爨纛鼟:肯定的啊
Toson_桐:我主要想看vlc自己的解碼能力,做個(gè)對(duì)比
爨纛鼟: libvlc什么功能都沒(méi)有 vlc所有的功能都是插件提供的
爨纛鼟:libvlccore是插件加載器 libvlc實(shí)現(xiàn)音視頻播放邏輯和負(fù)責(zé)線程調(diào)度
Toson_桐:我明白了,vlc依賴的x264也是它的插件了,我是解碼相機(jī)的H264格式視頻流,我可以跳過(guò)vlc直接使用底下的插件庫(kù),應(yīng)該可以達(dá)到快速解碼吧
Toson_桐:現(xiàn)在我這掛載20多個(gè)攝像頭之后,cpu資源全耗光了
Eric:牛逼
Toson_桐:聽(tīng)說(shuō)vlc解碼效果好,就來(lái)研究
爨纛鼟:用硬編硬解 你有顯卡沒(méi)有
Toson_桐:剛開(kāi)始就想用核顯,linux上編譯,一直沒(méi)調(diào)通。獨(dú)顯倒是能用,不過(guò)獨(dú)顯都拿去跑模型用了
爨纛鼟:跑模型跟編解碼不是同一塊核心
爨纛鼟:跑模型用的是cuda核心 編碼是nvenc 解碼是cuvid
三、VLC代碼
參考雷霄驊文檔:https://blog.csdn.net/leixiaohua1020/article/details/42363079
流程圖中包含了3個(gè)結(jié)構(gòu)體:
libvlc_instance_t:代表一個(gè)libVLC的實(shí)例。
libvlc_media_t:代表一個(gè)可以播放的媒體。
libvlc_media_player_t:代表一個(gè)VLC媒體播放器(一個(gè)視頻播放器播放一個(gè)視頻)。注意VLC并不僅僅用于媒體播放。
創(chuàng)建或者以上3個(gè)結(jié)構(gòu)體通過(guò)以下6個(gè)函數(shù):
libvlc_new():創(chuàng)建libvlc_instance_t。
libvlc_media_new_path():創(chuàng)建libvlc_media_t。
libvlc_media_player_new_from_media():創(chuàng)建libvlc_media_player_t。
libvlc_media_player_release():釋放libvlc_media_player_t
libvlc_media_release():釋放libvlc_media_t。
libvlc_release():釋放libvlc_instance_t。
可以通過(guò)下面的函數(shù)控制媒體的播放或者暫停:
這些函數(shù)都需要使用libvlc_media_player_t作為參數(shù)。這里處于簡(jiǎn)化的目的,只使用了播放和停止函數(shù)。
libvlc_media_player_play():播放。
libvlc_media_player_pause():暫停。
libvlc_media_player_stop():停止。
獲取視頻的時(shí)長(zhǎng),寬,高等信息:
在libVLC中可以通過(guò)如下等函數(shù)獲取。
libvlc_media_player_get_length()
//libvlc_video_get_width()
//libvlc_video_get_height()
實(shí)測(cè)已經(jīng)沒(méi)有上述2個(gè)函數(shù),以下面一個(gè)函數(shù)代替:
libvlc_video_get_size(mp, 0, &width, &height);
但是有一個(gè)很奇怪的現(xiàn)象:如果在調(diào)用完libvlc_media_player_play()之后,立即調(diào)用上述3個(gè)函數(shù)的話,返回的值都是0,只有“等待”一段時(shí)間(例如調(diào)用sleep())后再調(diào)用上述函數(shù),才能得到正確的數(shù)值。
四、例程
以下是我運(yùn)行過(guò)的程序,實(shí)現(xiàn)vlc代碼提取攝像機(jī)圖像:
//
// Created by toson on 19-4-15.
//
#include
#include
#include
#include
#include
#include "unistd.h"
using namespace std;
using namespace cv;
int IMG_WIDTH = 3840;//2592//1920;//1280//1280
int IMG_HEIGHT= 2160;//1520//1080;//960//720
namespace vlcreader_ns {
//#pragma comment(lib,"libvlc.so.5")
//#pragma comment(lib,"libvlccore.so.8")
??? class VLCReader
??? {
??? public:
??????? VLCReader(char* url = 0);
??????? ~VLCReader();
??????? void start(int wantW = IMG_WIDTH, int wantH = IMG_HEIGHT);
??????? void pause(bool paused);
??????? void ctrl(const char *psz_options);
??????? cv::Mat frame() { return img; }
??????? unsigned int w, h;
??? private:
??????? char* rtspAddress = "rtsp://admin:admin123@192.168.1.102:554/cam/realmonitor?channel=1&subtype=0";
??????? libvlc_instance_t *inst;
??????? libvlc_media_player_t *mp;
??????? unsigned char *pixel;
??????? cv::Mat img;
??????? libvlc_media_t *media;
??????? static void *cb_lock(void *opaque, void **plane);
??????? static void cb_unlock(void *opaque, void *picture, void * const *plane);
??????? static void cb_display(void *opaque, void *picture);
??????? unsigned char * updataSize();
??? };
??? VLCReader::VLCReader(char*url)
??????????? : inst(0), mp(0), pixel(0), w(0), h(0), rtspAddress(url)
??? {
??????? const char * vlc_args[] = {
??????????????? "--ipv4", //將會(huì)默認(rèn)為所有連接使用 IPv4。 (默認(rèn)關(guān)閉)
??????????????? "--no-prefer-system-codecs", //無(wú)論是否有可用的選擇都優(yōu)先使用您系統(tǒng)中的原生插件替代VLC自己的插件。 (默認(rèn)關(guān)閉)
??????????????? "--rtsp-caching=300", //延遲速度ms //允許您修改 RTSP 流的默認(rèn)緩存值。此值必須以毫秒為單位設(shè)置。
??????????????? "--network-caching=500", //設(shè)高可減少花屏 //遠(yuǎn)程文件額外增加的緩存值,以毫秒為單位。
??????????????? "--demux=h264", //去復(fù)用器被用于分離 "復(fù)合" 流 (類似音頻和視頻流)。
??????????????? "--rtsp-tcp", //--rtsp-host //--rtsp-tcp //使用 RTP over RTSP (TCP) (默認(rèn)關(guān)閉)
??????? };
??????? std::string rstp_str(rtspAddress);
??????? if (rstp_str.substr(0, 4) == "file")
??????? {
??????????? vlc_args[4] = "";
??????????? vlc_args[5] = "";
??????? }
??????? inst = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
??????? mp = libvlc_media_player_new(inst);
??????? libvlc_video_set_callbacks(mp, cb_lock, cb_unlock, cb_display, this);
??? }
??? VLCReader::~VLCReader()
??? {
??????? libvlc_media_player_stop(mp);
??????? libvlc_media_player_release(mp);
??????? libvlc_release(inst);
??? }
??? void VLCReader::start(int wantW, int wantH)
??? {
??????? libvlc_media_player_pause(mp);
??????? media = libvlc_media_new_location(inst, rtspAddress);
??????? libvlc_media_player_set_media(mp, media);
??????? libvlc_media_release(media);
??????? libvlc_video_set_format(mp, "RV24", wantW, wantH, wantW * 3);
??????? libvlc_media_player_play(mp);
??? }
??? void VLCReader::pause(bool paused)
??? {
??????? if (mp) {
??????????? libvlc_media_player_set_pause(mp, paused);
??????? }
??? }
??? unsigned char * VLCReader::updataSize()
??? {
??????? libvlc_video_get_size(mp, 0, &w, &h);
??????? //int w = libvlc_video_get_width(mp);
??????? //int h = libvlc_video_get_height(mp);
??????? if (!w || !h)
??????????? return 0;
??????? if (pixel && (this->w != w || this->h != h)) {
??????????? delete[] pixel;
??????????? pixel = 0;
??????? }
??????? if (!pixel) {
??????????? pixel = new unsigned char[w*h * 3];
??????????? this->w = w;
??????????? this->h = h;
??????? }
??????? return pixel;
??? }
??? void* VLCReader::cb_lock(void *opaque, void **plane)
??? {
??????? VLCReader *p = (VLCReader*)opaque;
??????? *plane = p->updataSize(); //tell VLC to put decoded data to this buffer
??????? return *plane;
??? }
??? void VLCReader::cb_unlock(void *opaque, void *picture, void * const *plane)
??? {
??????? VLCReader *p = (VLCReader*)opaque;
??????? unsigned char *pix = (unsigned char*)picture;
??????? if (pix) {
??????????? p->img = cv::Mat(p->h, p->w, CV_8UC3, pix);
??????? }
??? }
??? void VLCReader::cb_display(void *opaque, void *picture)
??? {
??????? VLCReader *p = (VLCReader*)opaque;
??????? if (!p->img.empty()) {
//??????????? cv::cvtColor(p->img, p->img, cv::COLOR_BGR2RGB);
//??????????? cv::namedWindow("1", CV_WINDOW_NORMAL);
//??????????? resize(p->img, p->img, Size(0,0), 0.5, 0.5, INTER_LINEAR);
??????????? cv::imshow("1", p->img);
??????????? cv::waitKey(1);
??????? }
??? }
??? void VLCReader::ctrl(const char *psz_options)
??? {
??????? libvlc_media_add_option(media, psz_options);
??? }
}
using namespace vlcreader_ns;
int main(int argc, char* argv[])
{
??? VLCReader vlc_reader("rtsp://admin:admin123@192.168.1.106:554/cam/realmonitor?channel=1&subtype=0");
//??? VLCReader vlc_reader("file:////home/toson/videos/BigBuckBunny_320x180.mp4");
??? vlc_reader.start();
??? sleep(3);
??? vlc_reader.pause(true); //暫停
??? sleep(3);
??? vlc_reader.pause(false);
??? sleep(3);
//??? vlc_reader.ctrl("-f"); //"--fullscreen"
??? sleep(3);
??? sleep(100);
??? return 0;
}
?
————————————————
版權(quán)聲明:本文為CSDN博主「Tosonw」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Tosonw/article/details/89509356
VLC核顯編解碼簡(jiǎn)介 + Linux平臺(tái)vlc編譯
- Linux(206512)
- Linux平臺(tái)(8101)
- 編譯(32308)
- VLC(15187)
- vlc播放器(5069)
相關(guān)推薦
騰訊滄海芯片奪8項(xiàng)世界賽事第一,已規(guī)模出貨數(shù)萬(wàn)片,國(guó)產(chǎn)視頻編解碼芯片實(shí)力不俗
電子發(fā)燒友網(wǎng)報(bào)道(文/吳子鵬)近日,莫斯科國(guó)立大學(xué)舉辦的MSU硬件視頻編碼比賽成績(jī)揭曉,騰訊自研的編解碼芯片“滄海”包攬了所參加的兩個(gè)賽道8項(xiàng)評(píng)分的全部第一。 同時(shí),騰訊方面透露稱,自去年3月順利
2023-04-19 06:13:004000
集成電源管理和音頻編解碼器TPS65950數(shù)據(jù)表
電子發(fā)燒友網(wǎng)站提供《集成電源管理和音頻編解碼器TPS65950數(shù)據(jù)表.pdf》資料免費(fèi)下載
2024-03-06 11:15:110
編解碼一體機(jī)的主要應(yīng)用場(chǎng)景是什么?
提供高清、流暢的視頻傳輸服務(wù),支持多平臺(tái)和多終端訪問(wèn),簡(jiǎn)化會(huì)議的召開(kāi)和管理。 安防監(jiān)控:在安防監(jiān)控領(lǐng)域,編解碼一體機(jī)可以作為核心設(shè)備,提供高質(zhì)量的視頻流,支持遠(yuǎn)程實(shí)時(shí)監(jiān)控和錄像回放等功能。 教育錄播:編解碼一體機(jī)應(yīng)
2024-01-31 14:57:21146
編解碼一體機(jī)相對(duì)于傳統(tǒng)的編解碼設(shè)備有哪些優(yōu)勢(shì)?
編解碼一體機(jī)相對(duì)于傳統(tǒng)的編解碼設(shè)備具有多個(gè)優(yōu)勢(shì)。以下是編解碼一體機(jī)的幾個(gè)主要優(yōu)勢(shì): 高效實(shí)時(shí)的視頻處理能力:編解碼一體機(jī)采用先進(jìn)的編解碼算法和云計(jì)算技術(shù),能夠?qū)崿F(xiàn)高效、實(shí)時(shí)的視頻處理,滿足各種應(yīng)用場(chǎng)
2024-01-31 14:56:04286
編解碼一體機(jī):提高視頻處理效率的關(guān)鍵
編解碼一體機(jī)是一種集視頻編解碼、音頻編碼以及數(shù)據(jù)傳輸功能于一體的多媒體設(shè)備。相較于傳統(tǒng)的視頻處理方式,它能夠顯著提高視頻處理的效率。 傳統(tǒng)的視頻處理方式通常需要多臺(tái)設(shè)備協(xié)同工作,如視頻采集設(shè)備、編碼
2024-01-31 14:52:41129
編解碼一體機(jī):打破傳統(tǒng),引領(lǐng)未來(lái)
編解碼一體機(jī)是一種集視頻編解碼、音頻編碼以及數(shù)據(jù)傳輸功能于一體的多媒體設(shè)備,它打破了傳統(tǒng)的視頻處理方式,引領(lǐng)著未來(lái)的發(fā)展趨勢(shì)。 傳統(tǒng)的視頻處理方式通常需要多臺(tái)設(shè)備協(xié)同工作,如視頻采集設(shè)備、編碼設(shè)備
2024-01-31 14:50:34137
如何選擇最適合你的編解碼一體機(jī)?
選擇最適合自己的編解碼一體機(jī)需要考慮以下幾個(gè)方面: 應(yīng)用場(chǎng)景:首先需要明確編解碼一體機(jī)的應(yīng)用場(chǎng)景,如視頻會(huì)議、安防監(jiān)控、教育錄播等。不同的應(yīng)用場(chǎng)景對(duì)編解碼一體機(jī)的性能要求不同,需要根據(jù)具體需求
2024-01-31 14:49:08173
編解碼一體機(jī):技術(shù)、應(yīng)用與挑戰(zhàn)
了先進(jìn)的編解碼算法,能夠?qū)崿F(xiàn)高效、實(shí)時(shí)的視頻處理。這種技術(shù)大大提高了視頻解碼的效率,有效降低了延遲,從而確保了音視頻傳輸?shù)膶?shí)時(shí)性和流暢性。此外,編解碼一體機(jī)還支持多平臺(tái)和多終端訪問(wèn),使得用戶可以隨時(shí)隨地訪問(wèn)和處
2024-01-31 14:48:04148
從編解碼一體機(jī)看視頻處理技術(shù)的未來(lái)
和硬件加速技術(shù),以實(shí)現(xiàn)更高效率的視頻處理。這將有助于降低延遲、提高傳輸質(zhì)量和節(jié)省帶寬資源。 多平臺(tái)和多終端訪問(wèn):隨著移動(dòng)互聯(lián)網(wǎng)和智能終端的普及,多平臺(tái)和多終端訪問(wèn)成為視頻處理技術(shù)的重要趨勢(shì)。編解碼一體機(jī)將支持更多
2024-01-31 14:47:25143
音頻處理的新選擇:編解碼一體機(jī)
編解碼一體機(jī)作為音頻處理的新選擇,以其高效、靈活的解決方案,引領(lǐng)著音頻處理技術(shù)的新篇章。這種設(shè)備集成了音頻編解碼和數(shù)據(jù)傳輸功能,將復(fù)雜的音頻處理流程簡(jiǎn)化在一臺(tái)設(shè)備中,提高了音頻處理的效率和靈活性
2024-01-31 14:46:16134
編解碼一體機(jī)在流媒體傳輸中的核心作用
編解碼一體機(jī)在流媒體傳輸中起著核心作用,主要表現(xiàn)在以下幾個(gè)方面: 1. 視頻和音頻編碼:編解碼一體機(jī)能夠?qū)σ曨l和音頻數(shù)據(jù)進(jìn)行高效的編碼,將原始的多媒體數(shù)據(jù)壓縮成適合網(wǎng)絡(luò)傳輸?shù)母袷健_@樣不僅可以減少
2024-01-31 14:20:22118
什么是編解碼一體機(jī)?
一體機(jī)還支持多平臺(tái)和多終端訪問(wèn),允許用戶通過(guò)PC、手機(jī)、平板等設(shè)備隨時(shí)隨地訪問(wèn)和處理視頻內(nèi)容。 編解碼一體機(jī)具有許多優(yōu)勢(shì)。首先,它能夠?qū)崿F(xiàn)高效、實(shí)時(shí)的視頻處理,滿足各種應(yīng)用場(chǎng)景的需求。其次,編解碼一體機(jī)采用先進(jìn)的
2024-01-31 14:19:36168
【愛(ài)芯派?Pro?開(kāi)發(fā)板試用體驗(yàn)】實(shí)現(xiàn)簡(jiǎn)單視頻直播系統(tǒng)
,需要準(zhǔn)備VLC播放器,用于播放視頻流,可以從VLC官網(wǎng)下載:官方下載:VLC media player,最棒的開(kāi)源播放器 - VideoLAN
愛(ài)芯派Pro上,準(zhǔn)備一些軟件:
編譯工具鏈,安裝命令
2024-01-21 16:36:14
WT2605芯片專為音頻藍(lán)牙應(yīng)用而設(shè)計(jì),是深一款高品質(zhì)MP3語(yǔ)音編解碼藍(lán)牙芯片
藍(lán)牙芯片編解碼
WT-深圳唯創(chuàng)知音電子有限公司發(fā)布于 2024-01-03 17:17:57
【飛凌 OK113i-C 全志T113-i開(kāi)發(fā)板】視頻編解碼測(cè)試
前言本文測(cè)試OK113i-S開(kāi)發(fā)板-視頻編解碼的功能OK113i-S開(kāi)發(fā)板是支持視頻的編解碼的,下面是官方介紹的編解碼功能T113-i 是一種為多媒體解碼平臺(tái)設(shè)計(jì)的高級(jí)應(yīng)用處理器。T113-i 集成
2023-12-25 09:41:35
視頻編解碼器-晶振應(yīng)用選型方案簡(jiǎn)介
隨著科技的日新月異,視頻編解碼技術(shù)也將迎來(lái)新的發(fā)展機(jī)遇,5G網(wǎng)絡(luò)的普及將進(jìn)一步提升視頻傳輸速度和質(zhì)量,為視頻編解碼器的發(fā)展提供更廣闊的空間。
2023-12-09 10:55:25428
【從0開(kāi)始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到嵌入式Linux平臺(tái)運(yùn)行
。搭建Linux平臺(tái)交叉編譯環(huán)境在上一篇文章我們介紹了使用AWTK開(kāi)發(fā)簡(jiǎn)單的應(yīng)用并在PC上模擬運(yùn)行,本篇文章就來(lái)介紹一下怎么讓?xiě)?yīng)用程序運(yùn)行在嵌入式Linux平臺(tái)上。1
2023-12-07 12:08:07247
使用具備SigmaDSP內(nèi)核的編解碼器是否必須載入SigmaDSP程序才能使用?
目前預(yù)計(jì)使用ADAU1761連接兩個(gè)MEMS數(shù)字麥克風(fēng),
ADAU1761與ADAU1361相比, ADAU1761多了SigmaDSP內(nèi)核.
使用具備SigmaDSP內(nèi)核的編解碼器是否必須
2023-11-30 07:31:56
在Linux下如何使用CMake編譯程序
拿到其它平臺(tái)上使用,無(wú)需修改,非常方便。 本文主要講述在Linux下如何使用CMake來(lái)編譯我們的程序。 一 環(huán)境搭建 我使用的是ubuntu18.04,安裝cmake使用如下命令: sudo apt
2023-11-08 16:15:08993
Banana Pi BPI-W3(ArmSoM-W3) RK3588編解碼之MPP環(huán)境配置
1. 簡(jiǎn)介
瑞芯微提供的媒體處理軟件平臺(tái)(Media Process Platform,簡(jiǎn)稱 MPP)是適用于瑞芯微芯片系列的 通用媒體處理軟件平臺(tái)。該平臺(tái)對(duì)應(yīng)用軟件屏蔽了芯片相關(guān)的復(fù)雜底層處理,其
2023-11-02 12:28:58
密勒調(diào)制副載波編解碼器的FPGA實(shí)現(xiàn)
電子發(fā)燒友網(wǎng)站提供《密勒調(diào)制副載波編解碼器的FPGA實(shí)現(xiàn).pdf》資料免費(fèi)下載
2023-10-26 11:10:210
大佬們,問(wèn)一下用FPGA實(shí)現(xiàn)卷積碼編解碼的難度,畢設(shè)選了這個(gè)
求助!大佬們,問(wèn)一下用FPGA實(shí)現(xiàn)卷積碼編解碼的難度。
2023-10-16 23:26:26
基于VHDL語(yǔ)言的HDB3碼編解碼器設(shè)計(jì)
電子發(fā)燒友網(wǎng)站提供《基于VHDL語(yǔ)言的HDB3碼編解碼器設(shè)計(jì).doc》資料免費(fèi)下載
2023-10-13 09:22:200
如何在嵌入式系統(tǒng)中使用音頻編解碼器更輕松地優(yōu)化音頻性能?
作者:Jacob Beningo 許多設(shè)計(jì)人員在其基于微控制器的嵌入式系統(tǒng)設(shè)計(jì)中加入了音頻編解碼器,以提供高保真音頻。但在這樣做之前,他們必須弄清楚如何對(duì)其應(yīng)用進(jìn)行音頻編解碼器調(diào)校。如果不進(jìn)行調(diào)校
2023-10-03 14:34:00553
Linux內(nèi)核編譯腳本
獲得編譯命令及選項(xiàng) 編譯linux時(shí),默認(rèn)不會(huì)顯示編譯的命令,如果你要獲得編譯命令及其選項(xiàng),可以在make命令后面加上宏定義: make V= 1 如果希望編譯系統(tǒng)告訴你為何某個(gè)目標(biāo)文件需要重新編譯
2023-09-27 11:52:17316
Linux交叉編譯選項(xiàng)與源碼與目標(biāo)文件分離
交叉編譯選項(xiàng) 編譯Linux,通常只需要運(yùn)行 make menuconfig 配置要編譯的模塊,然后運(yùn)行 make 。Linux默認(rèn)是做本地編譯,也就是編譯位本機(jī)使用的內(nèi)核。 在嵌入式開(kāi)發(fā)中,經(jīng)常
2023-09-27 11:48:59360
WebP圖像編解碼庫(kù)libwebp存在堆緩沖區(qū)溢出漏洞
WebP圖像編解碼庫(kù)libwebp存在堆緩沖區(qū)溢出漏洞(CVE-2023-4863),攻擊者可以通過(guò)發(fā)送植入惡意代碼的WebP圖像獲得設(shè)備的部分權(quán)限。
2023-09-25 09:48:004027
視頻編解碼器H.264和H265有什么區(qū)別?
對(duì)于大型視頻文件來(lái)說(shuō),視頻編解碼器至關(guān)重要,它可以將文件壓縮為較小的尺寸,從而可以更輕松地存儲(chǔ)和加快傳輸速度。而兩種最常用的編解碼器是H.264和H.265,那么它們兩者之間有什么區(qū)別,哪一個(gè)更好呢?
2023-09-22 16:27:591984
BM1684芯片的編解碼性能數(shù)據(jù)是怎樣的?
BM1684有4個(gè)VPU硬核和4個(gè)JPU硬核,具體視頻和圖片的編解碼的速度與實(shí)際情況有關(guān),要以實(shí)測(cè)為準(zhǔn)。
視頻解碼的速度與輸入視頻碼流的格式有很大關(guān)系,不同復(fù)雜度的碼流的解碼速度有比較大的波動(dòng),比如
2023-09-19 07:18:50
BM1684編解碼性能是同時(shí)支持32路解碼和2路編碼嗎??jī)?nèi)存大小和內(nèi)存帶寬會(huì)不會(huì)成為瓶頸?
BM1684編解碼性能是同時(shí)支持32路解碼和2路編碼嗎??jī)?nèi)存大小和內(nèi)存帶寬會(huì)不會(huì)成為瓶頸?
2023-09-19 06:33:40
Linux 下GCC的編譯
一、Linux 下多文件編譯 在上一篇 Linux 下的 C 編程我們知道了 Linux 下的編譯器為 GCC ,以及如何使用 GCC 進(jìn)行編譯,在文章我們講解 GCC 的編譯,使用的只使用了
2023-09-11 15:18:37996
面向行泊一體的車(chē)輛縱向控制算法簡(jiǎn)介
為滿足自動(dòng)駕駛行車(chē)&泊車(chē)過(guò)程的縱向控制功能需求,需開(kāi)發(fā)行車(chē)功能的縱向控制VLC以及泊車(chē)功能的軌跡速度規(guī)劃TSP,其中,VLC負(fù)責(zé)將車(chē)輛縱向控制的加速度接口ax轉(zhuǎn)化為驅(qū)動(dòng)/制動(dòng)力Fx(包括前饋控制與反饋控制),TSP進(jìn)行S-V關(guān)系式擬合。
2023-09-11 11:34:49412
昉·星光 2(VisionFive 2)Debian 202308最新鏡像發(fā)布!
改變功能:
-使用硬件編解碼器(VPU)的媒體播放。包括VLC, Firefox, ffplay, gstreamer等。
-GPU (glmark、桌面渲染等)相關(guān)任務(wù)。
藍(lán)牙:
包含控制藍(lán)牙設(shè)備的藍(lán)牙
2023-09-08 14:44:01
如何安裝ARM編譯器Linux版
。
注意:ARM編譯器Linux版運(yùn)行在64位ARM硬件上,它不是交叉編譯器。
有關(guān)兼容性的詳細(xì)信息,請(qǐng)參閱支持的平臺(tái)。
2023-08-28 06:45:27
【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】使用nginx、ffmpeg和VLC搭建簡(jiǎn)單視頻直播系統(tǒng)
源碼編譯并安裝nginx和http-flv模塊,然后介紹如何使用ffmpeg推流,最后介紹如何在PC上使用VLC播放器查看視頻流中的畫(huà)面。在本文介紹的實(shí)驗(yàn)中,nginx及http-flv模塊作為視頻流
2023-08-27 19:06:23
字節(jié)跳動(dòng)旗下火山引擎自研的視頻編解碼芯片已出片
字節(jié)跳動(dòng)旗下火山引擎自研的視頻編解碼芯片已出片 在8月22日的一場(chǎng)活動(dòng)中,據(jù)字節(jié)跳動(dòng)視頻架構(gòu)負(fù)責(zé)人、火山引擎視頻云架構(gòu)技術(shù)總監(jiān)王悅介紹,字節(jié)跳動(dòng)旗下火山引擎自研的視頻編解碼芯片專用芯片已出片。 字節(jié)
2023-08-23 18:56:511627
I91260語(yǔ)音芯片在SDS不同的編解碼格式有什么區(qū)別?
我正在使用 I91260 語(yǔ)音芯片,我在SDS 看到有不同的編解碼格式(AudioPlayback MD4 NuOneEx ...) 我想知道這些格式有什么區(qū)別,我如何更好的選擇使用那個(gè)格式?
我的另一個(gè)問(wèn)題是,在那個(gè)文檔 展示了關(guān)于 音頻編解碼的 介紹,比如 采樣率,通道選擇 等描述
2023-08-21 07:39:16
高效率、易管理的智能照明解決方案
在智能建筑應(yīng)用中,照明是建筑物的基礎(chǔ)功能,除了通過(guò)智能照明控制以達(dá)到節(jié)省能源、提高效率的目標(biāo)外,通過(guò)可見(jiàn)光通信(VLC)技術(shù),還可以實(shí)現(xiàn)室內(nèi)定位與數(shù)據(jù)傳輸?shù)墓δ埽瑫r(shí)提供了二合一的智能照明和聯(lián)接方案。本文將為您介紹VLC技術(shù)的發(fā)展,以及安森美(onsemi)推出的相關(guān)解決方案。
2023-08-16 10:57:06385
openharmony怎么調(diào)用GPU進(jìn)行視頻和圖片的編解碼?
openharmony怎么調(diào)用芯片里的GPU進(jìn)行視頻和圖片的編解碼?
每個(gè)不同的芯片需要單獨(dú)調(diào)整適配嗎?
2023-08-14 15:10:26
openharmony怎么調(diào)用芯片里的GPU進(jìn)行視頻和圖片的編解碼?
openharmony怎么調(diào)用芯片里的GPU進(jìn)行視頻和圖片的編解碼?
比如RK3588等。openharmony 3.2 Release。
2023-08-14 15:04:23
跨平臺(tái)編譯工具cmake的簡(jiǎn)單使用
在使用不同平臺(tái)的電腦時(shí),使用的編譯也會(huì)不一樣,如果想把一個(gè)項(xiàng)目在不同平臺(tái)下編譯,那有什么方式可以實(shí)現(xiàn)這樣的需求呢,這就是這篇文章就來(lái)介紹其中的一種方式,就是使用cmake,cmake 并不直接建構(gòu)出最終的軟件,而是產(chǎn)生標(biāo)準(zhǔn)的建構(gòu)檔,然后再借助編譯工具來(lái)構(gòu)建。
2023-08-14 10:40:04421
搭建一種跨平臺(tái)qt5遠(yuǎn)程編譯環(huán)境
所謂的跨平臺(tái)qt5遠(yuǎn)程編譯環(huán)境,就是實(shí)現(xiàn)在本機(jī)的VS上寫(xiě)Qt程序,然后在遠(yuǎn)程的linux機(jī)器上進(jìn)行編譯,得到Qt的Gui或非GUI程序。
2023-07-25 15:05:34663
國(guó)產(chǎn)8K視頻的落地,離不開(kāi)新的編解碼標(biāo)準(zhǔn)
電子發(fā)燒友網(wǎng)報(bào)道(文/周凱揚(yáng))數(shù)字音視頻的興起,與優(yōu)秀的編解碼標(biāo)準(zhǔn)可謂息息相關(guān),但也在這些年的發(fā)展中遇到了不少阻礙。諸如H.264、H.265等主流編解碼格式,常常面臨著高昂的專利費(fèi)用。而反觀一些
2023-06-26 09:18:271752
RISC-V核、平臺(tái)和芯片該如何選擇?
機(jī)器視覺(jué)和機(jī)器聽(tīng)覺(jué)領(lǐng)域。
(3)、高校和研究機(jī)構(gòu)可以選擇開(kāi)源RISC-V 核 在FPGA 平臺(tái)上進(jìn)行計(jì)算機(jī)體系架構(gòu)、操作系統(tǒng) ,編譯技術(shù)以及嵌入式系統(tǒng)教學(xué)和研究工作。比如,Arty FPGA 開(kāi)發(fā)板上
2023-06-21 20:34:16
FPGA純verilog編解碼SDI實(shí)現(xiàn)流程
一是使用專用編解碼芯片,比如典型的接收器GS2971,發(fā)送器GS2972,優(yōu)點(diǎn)是簡(jiǎn)單,比如GS2971接收器直接將SDI解碼為并行的YCRCB,GS2972發(fā)送器直接將并行的YCRCB編碼為SDI視頻,缺點(diǎn)是成本較高,可以百度一下GS2971和GS2972的價(jià)格
2023-06-19 16:55:52806
走向?qū)嵱玫腁I編解碼闡述
大家好,今天我分享的是走向?qū)嵱玫腁I圖像編解碼。本次將著重從 “走向”兩個(gè)字出發(fā),闡述AI編解碼研發(fā)的關(guān)鍵內(nèi)容和進(jìn)展。
2023-06-15 09:19:10465
請(qǐng)問(wèn)Nuc972與nuc32905的編解碼有聲明區(qū)別?
Nuc972與nuc32905的編解碼有聲明區(qū)別?我看nuc972也有編解碼功能呀。為什么還要有nuc32905系列呢?
2023-06-15 08:35:21
FPGA實(shí)現(xiàn)SDI視頻編解碼的方案
一是使用專用編解碼芯片,比如典型的接收器GS2971,發(fā)送器GS2972,優(yōu)點(diǎn)是簡(jiǎn)單,比如GS2971接收器直接將SDI解碼為并行的YCRCB,
2023-06-14 14:48:28678
ISD91260編解碼格式如何選擇?
我正在使用 I91260 語(yǔ)音芯片,我在SDS 看到有不同的編解碼格式(AudioPlayback MD4 NuOneEx ...) 我想知道這些格式有什么區(qū)別,我如何更好的選擇使用那個(gè)格式?
我的另一個(gè)問(wèn)題是,在那個(gè)文檔 展示了關(guān)于 音頻編解碼的 介紹,比如 采樣率,通道選擇 等描述
2023-06-13 06:16:22
如何獲得ESP8266上的opus編解碼器?
我想要 ESP8266 上的 opus 編解碼器(尤其是解碼器),因?yàn)?128 kbps 應(yīng)該足夠用便宜的 I2S DAC 來(lái)傳輸音頻。我認(rèn)為這非常重要,因?yàn)?opus 可以讓人們從互聯(lián)網(wǎng)上獲取
2023-06-12 06:54:17
S9S12VR48AF0VLC和S9S12VR48AAVLCR的區(qū)別是什么?
有人可以澄清 S9S12VR48A F0 VLC 和 S9S12VR48A A VLCR之間的區(qū)別嗎?當(dāng)我解碼零件號(hào)時(shí),以紅色突出顯示的那個(gè)似乎是產(chǎn)品修訂信息。你能告訴我有什么變化嗎?
2023-06-12 06:15:52
OK-2K0500-C_Linux4.19.190_用戶編譯手冊(cè)
OK-2K0500-C_Linux4.19.190_用戶編譯手冊(cè)+QT5.12.7_V1.0_20230316
2023-06-09 15:25:268
如何編譯Linux Kernel
整個(gè)Linux內(nèi)核編譯的過(guò)程非常簡(jiǎn)單,但是內(nèi)核編譯需要花費(fèi)很長(zhǎng)的時(shí)間。因?yàn)?b class="flag-6" style="color: red">Linux內(nèi)核的代碼非常多。當(dāng)然,如果你的計(jì)算機(jī)性能強(qiáng)勁,時(shí)間會(huì)短很多。當(dāng)你準(zhǔn)備好性能強(qiáng)勁的計(jì)算機(jī)后,讓小編帶你一步一步的編譯Linux內(nèi)核。
2023-06-07 16:26:274712
gstreamer imx8mm rtsp服務(wù)器和客戶端保存到文件,但是test.h264無(wú)法用VLC打開(kāi)怎么解決?
我有[i] 板 imx8m 迷你 [i]處理器。按照 cmd 將其用作 rtsp 服務(wù)器(可以通過(guò) VLC 查看):
gst-variable-rtsp-server -p 9001 -u
2023-05-18 10:43:36
如何將多個(gè)AK5554編解碼器與i.MX8MN SAI線集成?
我目前正在從事一個(gè)項(xiàng)目,涉及在 i.MX8MN 平臺(tái)上將兩個(gè) AK5554 編解碼器與同一條 SA5I 線路集成。我的目標(biāo)是以這樣一種方式配置系統(tǒng),使其有效地充當(dāng)八個(gè)音頻通道,所有通道都連接到正確
2023-05-18 06:15:04
TLV320AIC3100音頻編解碼器啟動(dòng)問(wèn)題求解
嗨,團(tuán)隊(duì),我們正在研究 IXM8MM 定制板。我們使用帶有 imx8mm 和 Android 11 代碼庫(kù)的 tlv320aic3100 音頻編解碼器。面臨一些與MCLK相關(guān)的問(wèn)題。當(dāng)我嘗試
2023-05-17 08:03:47
HDB3編解碼簡(jiǎn)析
此次需求提供的十分明確,給出了編碼規(guī)則及示例,明確了編解碼端口要求;仿真模塊根據(jù)設(shè)計(jì)進(jìn)行適配。
2023-05-15 10:41:01999
wm8960音頻編解碼器的dtsi文件如何設(shè)置?
頻率 = <100000>;
編解碼器:wm8960@1a {
compatible = \"wlf,wm8960\";
reg = <
2023-04-23 08:12:50
求分享用于WinCE的I.MX6 MPGE4/H264編解碼器
你好 ,我們正在尋找適合 i.MX6DL 的 WinCE7 MPEG4/H.264 編解碼器。這個(gè)包適用于 i.MX6 嗎?我們?cè)谀睦锟梢韵螺d它?
2023-04-19 10:51:44
如何在i.MX8M Plus上集成音頻編解碼器MAX98089?
調(diào)試消息,您也可以從隨附的補(bǔ)丁中觀察到這些信息。最后我得到了以下內(nèi)核消息:[0.357904]imx-max98088 sound-max98089:找不到編解碼器平臺(tái)設(shè)備[0.383237
2023-04-06 06:20:09
如何使用iMX8QM在I2S/SAI編解碼器上交換音頻通道?
我們?cè)趲в?SGTL5000 編解碼器的定制 i.MX8QM 板上進(jìn)行隨機(jī)音頻左/右聲道交換。我們?cè)谑褂?wm8960 編解碼器的 i.MX8MEK 上注意到了同樣的問(wèn)題。兩者都在運(yùn)行 yocto
2023-03-31 07:32:54
河套IT TALK 65:(原創(chuàng))讓人眼花繚亂的超高清視頻編解碼格式
、兩極化的 挑戰(zhàn), 了解到視頻從產(chǎn)生到播放,中間經(jīng)歷 的 復(fù)雜流程,也牽扯紛繁復(fù)雜的利益相關(guān)人,所以在視頻內(nèi)容編解碼方面,存在著各方利益的博弈。各大組織、企業(yè)都有在視頻編解碼上投入,致力于爭(zhēng)奪技術(shù)和專利上的制高點(diǎn)。 本期,我們就聊聊 超高清視頻編解碼的現(xiàn)狀。
2023-03-28 03:15:05793
評(píng)論
查看更多