版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/Tosonw/article/details/89509356
概要:
vlc編譯, 硬解基于libva庫(VAAPI), live555(liblivemedia-dev), --enable-live555才能播放rtsp流, 基于liveMedia庫, vlc對ffmpeg是運行時依賴,把libavcodec_plugin.so刪了就可以。
ps:
重點章節:
“二、VLC編譯與安裝” :
“1.依賴相關”
“2.VLC編譯”
“4.vainfo”
該章節是我親自編譯的記錄,基于Ubuntu 16.04。
另外,本來想用intel核顯解碼,但可惜libva庫的VAAPI驅動一直未調通。
一、VLC中GPU解碼簡介
參考:(https://wiki.videolan.org/VLC_VAAPI/)
1.VLC基于libva庫(VAAPI):
一個開源庫和API規范,可以訪問圖形硬件加速功能以進行視頻處理。它由一個主庫和每個支持的硬件供應商的特定于驅動程序的加速后端組成。
另請參閱:VLC GPU解碼:https://wiki.videolan.org/VLC_GPU_Decoding/
在某些情況下,VLC框架可以使用您的圖形卡(也稱為GPU)來解碼H.264流(錯誤地稱為HD視頻)。
VLC在其模塊化方法及其轉碼/流媒體功能中,僅在解碼階段在GPU中進行解碼,然后將數據恢復到其他階段(流式傳輸,過濾或插入任何視頻輸出)。
這意味著,與其他一些實現相比,VLC中的GPU解碼速度較慢,因為它需要從GPU獲取數據。 但您可以將任何視頻輸出(接收器)插入其中并使用所有VLC視頻過濾器。
2.VAAPI的介紹
此頁面是關于在Linux上支持GPU加速的VLC編譯。
這個howto由Jean-Baptiste Kempf編寫并使用nVidia GPU進行測試。
vaapi:https://www.freedesktop.org/wiki/Software/vaapi/
在Linux / X11上,有兩個用于硬件視頻解碼的競爭接口:
來自Intel的VA-API,和來自NVIDIA的VDPAU。
通常,VAAPI用于Intel和Broadcom圖形卡,而VDPAU用于AMD / ATI和NVIDIA卡。
VA-API:
在Ubuntu發行版上,首先安裝硬件支持包: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年底仍處于開發階段)。
默認情況下,VLC版本2.2.0以后將自動啟用VDPAU。
有關技術詳細信息,請參閱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驅動(注:Use at least version 0.6.2 )
ATI(注:Use at least 0.6.4.)
#檢查是否正確配置了libva環境變量:
$ set | grep LIBVA
#應輸出如下內容:
LIBVA_DRIVER_NAME=xvba
LIBVA_DRIVERS_PATH=/usr/lib64/va/drivers
#如果沒有,請根據庫路徑將這些添加到系統環境變量(/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復制到includes
二、VLC編譯與安裝
1.依賴相關
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 //運行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
以下是我在實際編譯的時候仍然缺少的,和異常的依賴項:
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
# 依賴問題:configure: error: Could not find the LUA byte compiler.
# 可以在編譯時使用--disable-lua。或者安裝lua,如下:
sudo apt install liblua5.2-dev
sudo apt install liblua50-dev
sudo apt install liblualib50-dev
# 編譯問題: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.
# 對上述問題,我使用的是:$ ./configure --disable-qt
# 也可以參考下面一句,自行安裝:(我好像這樣試過,然而不行)
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庫。
注意:不要用apt直接安裝live555(liblivemedia-dev),我剛開始就這樣操作,導致vlc打開rtsp時出現段錯誤。
手動下載live555編譯安裝后,手動建立文件(索引包):/usr/lib/x86_64-linux-gnu/pkgconfig/live555.pc
sudo vim /usr/lib/x86_64-linux-gnu/pkgconfig/live555.pc
寫入如下內容:(注:路徑根據自己的系統,自行修改)
prefix=/usr/local
libdir=/usr/local/lib #庫路徑目錄,注:源碼編譯出來的庫是.la庫。
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
??? (并且使用的是就是最新代碼編譯通過的:4.0.0-dev-7527-g6a4f370)
或者直接下載現成的軟件應用:
??? Ubuntu軟件管理中心:搜索vlc,點擊安裝。參考:https://wiki.videolan.org/Configure/
??? 然后將安裝路徑下的庫取出來直接用。
依賴項(有點多。。。)
注:除了前面的“1.依賴相關”里安裝的依賴項之外,這里我也同樣操作過下面的命令,安裝了以下依賴項:
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
# 根據需要,可以更新到指定release版本:
#例vlc-4.0.0:
#git checkout 1f2e534f3033aab9dd31442f7b3956728b62b3d3
#例vlc-3.0.0:
#git checkout 8d432b090e08f141ce9156dc728afbed4636301b
# 開始編譯(注:備注:要支持播放rtsp流,必須enable live。要能打印debug,也要enable debug選項。)
./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
啟動VLC:
#直接在命令行上:
vlc --ffmpeg-hw #hw:硬解? sw:軟解
#其實可以直接啟動:
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.”節,與VLC硬解相關
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庫調用信息。
$ sudo apt install vainfo
$ 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: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
vainfo支持調用nvidia顯卡,但需要先安裝nvidia_video驅動:
$ sudo apt install vdpau-va-driver
#查看庫文件
$ ll /usr/lib/x86_64-linux-gnu/dri/
#將查看到有個nvidia_drv_video.so文件
lrwxrwxrwx?? 1 root root?????? 18 4月?? 7? 2016 nvidia_drv_video.so -> vdpau_drv_video.so
#此時使用vainfo查看調用情況
$ 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支持調用intel核顯,但需要先安裝i965-va-driver驅動:
(但是我的i965-va-driver庫調用一直是下面的問題,無法解決。)
#查看是否安裝了驅動
$ apt list i965-va-driver
Listing... Done
i965-va-driver/xenial,now 1.7.0-1 amd64 [installed,automatic]
#如果沒有安裝,則進行安裝
$ sudo apt install -y i965-va-driver
#此時使用vainfo查看調用情況(注:要先將libva調用庫改為i965,即intel的VAAPI庫。)
$ 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安裝存在支持問題,于是嘗試自己編譯intel的vaapi驅動:
$ 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
#此時存在一些依賴項的版本問題:
#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
#我在配置路徑的時候發現配置無用,路徑仍然是默認的/usr/local/lib/dri/
#沒去深究,我繼續編譯安裝,最后手動將/usr/local/lib/dri/i965_drv_video.so庫鏈接到/usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
#后來發現是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
此時使用vainfo查看調用情況,這次異常不一樣了,似乎是某函數問題:
$ 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上有找到類似的問題,但并不能解決我這出現的情況,后來提了issue:https://github.com/intel/intel-vaapi-driver/issues/455
繼續嘗試,經過仔細考慮懷疑是這些驅動的版本兼容問題,比如我查到的大部分人們的版本為:libva info: VA-API version 0.34.0,而我的是0.39.0。
經查詢:0.34.0對應的libva版本是1.2.1,所以下載對應版本:https://github.com/intel/libva/archive/libva-1.2.1.tar.gz
解壓后進入目錄,進行編譯安裝:
$ ./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版本已經為0.34.0了,接下來重新編譯intel-vaapi-driver
$ cd intel-vaapi-driver
$ ./autogen.sh
#會出現錯誤:
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也應該使用舊版本,經檢查應該使用:intel-vaapi-driver_1.2.1版本。下載:https://github.com/intel/intel-vaapi-driver/archive/1.2.1.tar.gz
解壓后進入目錄,進行編譯安裝:
$ cd ../intel-vaapi-driver-1.2.1/
$ ./autogen.sh
$ make -j12
但是編譯出現了錯誤,問題可能出在源碼里吧,因為新版本編譯都正常,`
只可惜新版本運行有問題,舊版本又編譯不過。
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
例:(我運行的結果)
# 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時問過的問題
依賴庫編譯與調用:
Toson_桐:有誰知道編譯vlc的時候怎樣讓它不依賴ffmpeg的那些解碼模塊?
不斷電的夢:依不依賴是代碼調用時決定的, 不是編譯時決定的.
Toson_桐:編譯時可以加編譯參數“–disable-***”,但是沒有–disable-ffmpeg這個
Toson_桐:vlc是不是必須依賴ffmpeg
爨纛鼟:那你得自己編ffmpeg禁用那些模塊 然后再編vlc 鏈你自己編的那版ffmpeg
爨纛鼟:@Toson_桐 你直接把libavcodec_plugin.so刪了就行
爨纛鼟:vlc對ffmpeg是運行時依賴 你把插件一刪就沒有了
爨纛鼟:ffmpeg的解碼器比較全面 我不知道你為什么要禁用它 但是我告訴你可以通過運行時參數指定使用哪個解碼器 如果你要自己寫一個解碼器 可以把分數設得比ffmpeg高 這樣會優先找你的
Toson_桐:@爨纛鼟 厲害了!,問一下禁用ffmpeg會不會vlc對某些編碼格式就不支持了
爨纛鼟:肯定的啊
Toson_桐:我主要想看vlc自己的解碼能力,做個對比
爨纛鼟: libvlc什么功能都沒有 vlc所有的功能都是插件提供的
爨纛鼟:libvlccore是插件加載器 libvlc實現音視頻播放邏輯和負責線程調度
Toson_桐:我明白了,vlc依賴的x264也是它的插件了,我是解碼相機的H264格式視頻流,我可以跳過vlc直接使用底下的插件庫,應該可以達到快速解碼吧
Toson_桐:現在我這掛載20多個攝像頭之后,cpu資源全耗光了
Eric:牛逼
Toson_桐:聽說vlc解碼效果好,就來研究
爨纛鼟:用硬編硬解 你有顯卡沒有
Toson_桐:剛開始就想用核顯,linux上編譯,一直沒調通。獨顯倒是能用,不過獨顯都拿去跑模型用了
爨纛鼟:跑模型跟編解碼不是同一塊核心
爨纛鼟:跑模型用的是cuda核心 編碼是nvenc 解碼是cuvid
三、VLC代碼
參考雷霄驊文檔:https://blog.csdn.net/leixiaohua1020/article/details/42363079
流程圖中包含了3個結構體:
libvlc_instance_t:代表一個libVLC的實例。
libvlc_media_t:代表一個可以播放的媒體。
libvlc_media_player_t:代表一個VLC媒體播放器(一個視頻播放器播放一個視頻)。注意VLC并不僅僅用于媒體播放。
創建或者以上3個結構體通過以下6個函數:
libvlc_new():創建libvlc_instance_t。
libvlc_media_new_path():創建libvlc_media_t。
libvlc_media_player_new_from_media():創建libvlc_media_player_t。
libvlc_media_player_release():釋放libvlc_media_player_t
libvlc_media_release():釋放libvlc_media_t。
libvlc_release():釋放libvlc_instance_t。
可以通過下面的函數控制媒體的播放或者暫停:
這些函數都需要使用libvlc_media_player_t作為參數。這里處于簡化的目的,只使用了播放和停止函數。
libvlc_media_player_play():播放。
libvlc_media_player_pause():暫停。
libvlc_media_player_stop():停止。
獲取視頻的時長,寬,高等信息:
在libVLC中可以通過如下等函數獲取。
libvlc_media_player_get_length()
//libvlc_video_get_width()
//libvlc_video_get_height()
實測已經沒有上述2個函數,以下面一個函數代替:
libvlc_video_get_size(mp, 0, &width, &height);
但是有一個很奇怪的現象:如果在調用完libvlc_media_player_play()之后,立即調用上述3個函數的話,返回的值都是0,只有“等待”一段時間(例如調用sleep())后再調用上述函數,才能得到正確的數值。
四、例程
以下是我運行過的程序,實現vlc代碼提取攝像機圖像:
//
// 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:[email protected]: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", //將會默認為所有連接使用 IPv4。 (默認關閉)
??????????????? "--no-prefer-system-codecs", //無論是否有可用的選擇都優先使用您系統中的原生插件替代VLC自己的插件。 (默認關閉)
??????????????? "--rtsp-caching=300", //延遲速度ms //允許您修改 RTSP 流的默認緩存值。此值必須以毫秒為單位設置。
??????????????? "--network-caching=500", //設高可減少花屏 //遠程文件額外增加的緩存值,以毫秒為單位。
??????????????? "--demux=h264", //去復用器被用于分離 "復合" 流 (類似音頻和視頻流)。
??????????????? "--rtsp-tcp", //--rtsp-host //--rtsp-tcp //使用 RTP over RTSP (TCP) (默認關閉)
??????? };
??????? 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:[email protected]: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;
}
?
————————————————
版權聲明:本文為CSDN博主「Tosonw」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Tosonw/article/details/89509356
VLC核顯編解碼簡介 + Linux平臺vlc編譯
- Linux(206512)
- Linux平臺(8101)
- 編譯(32308)
- VLC(15187)
- vlc播放器(5069)
相關推薦
騰訊滄海芯片奪8項世界賽事第一,已規模出貨數萬片,國產視頻編解碼芯片實力不俗
電子發燒友網報道(文/吳子鵬)近日,莫斯科國立大學舉辦的MSU硬件視頻編碼比賽成績揭曉,騰訊自研的編解碼芯片“滄海”包攬了所參加的兩個賽道8項評分的全部第一。 同時,騰訊方面透露稱,自去年3月順利
2023-04-19 06:13:00
4000


編解碼一體機的主要應用場景是什么?
提供高清、流暢的視頻傳輸服務,支持多平臺和多終端訪問,簡化會議的召開和管理。 安防監控:在安防監控領域,編解碼一體機可以作為核心設備,提供高質量的視頻流,支持遠程實時監控和錄像回放等功能。 教育錄播:編解碼一體機應
2024-01-31 14:57:21
146


編解碼一體機相對于傳統的編解碼設備有哪些優勢?
編解碼一體機相對于傳統的編解碼設備具有多個優勢。以下是編解碼一體機的幾個主要優勢: 高效實時的視頻處理能力:編解碼一體機采用先進的編解碼算法和云計算技術,能夠實現高效、實時的視頻處理,滿足各種應用場
2024-01-31 14:56:04
286


編解碼一體機:提高視頻處理效率的關鍵
編解碼一體機是一種集視頻編解碼、音頻編碼以及數據傳輸功能于一體的多媒體設備。相較于傳統的視頻處理方式,它能夠顯著提高視頻處理的效率。 傳統的視頻處理方式通常需要多臺設備協同工作,如視頻采集設備、編碼
2024-01-31 14:52:41
129


編解碼一體機:打破傳統,引領未來
編解碼一體機是一種集視頻編解碼、音頻編碼以及數據傳輸功能于一體的多媒體設備,它打破了傳統的視頻處理方式,引領著未來的發展趨勢。 傳統的視頻處理方式通常需要多臺設備協同工作,如視頻采集設備、編碼設備
2024-01-31 14:50:34
137


如何選擇最適合你的編解碼一體機?
選擇最適合自己的編解碼一體機需要考慮以下幾個方面: 應用場景:首先需要明確編解碼一體機的應用場景,如視頻會議、安防監控、教育錄播等。不同的應用場景對編解碼一體機的性能要求不同,需要根據具體需求
2024-01-31 14:49:08
173


編解碼一體機:技術、應用與挑戰
了先進的編解碼算法,能夠實現高效、實時的視頻處理。這種技術大大提高了視頻解碼的效率,有效降低了延遲,從而確保了音視頻傳輸的實時性和流暢性。此外,編解碼一體機還支持多平臺和多終端訪問,使得用戶可以隨時隨地訪問和處
2024-01-31 14:48:04
148


從編解碼一體機看視頻處理技術的未來
和硬件加速技術,以實現更高效率的視頻處理。這將有助于降低延遲、提高傳輸質量和節省帶寬資源。 多平臺和多終端訪問:隨著移動互聯網和智能終端的普及,多平臺和多終端訪問成為視頻處理技術的重要趨勢。編解碼一體機將支持更多
2024-01-31 14:47:25
143


音頻處理的新選擇:編解碼一體機
編解碼一體機作為音頻處理的新選擇,以其高效、靈活的解決方案,引領著音頻處理技術的新篇章。這種設備集成了音頻編解碼和數據傳輸功能,將復雜的音頻處理流程簡化在一臺設備中,提高了音頻處理的效率和靈活性
2024-01-31 14:46:16
134


編解碼一體機在流媒體傳輸中的核心作用
編解碼一體機在流媒體傳輸中起著核心作用,主要表現在以下幾個方面: 1. 視頻和音頻編碼:編解碼一體機能夠對視頻和音頻數據進行高效的編碼,將原始的多媒體數據壓縮成適合網絡傳輸的格式。這樣不僅可以減少
2024-01-31 14:20:22
118


什么是編解碼一體機?
一體機還支持多平臺和多終端訪問,允許用戶通過PC、手機、平板等設備隨時隨地訪問和處理視頻內容。 編解碼一體機具有許多優勢。首先,它能夠實現高效、實時的視頻處理,滿足各種應用場景的需求。其次,編解碼一體機采用先進的
2024-01-31 14:19:36
168


【愛芯派?Pro?開發板試用體驗】實現簡單視頻直播系統
,需要準備VLC播放器,用于播放視頻流,可以從VLC官網下載:官方下載:VLC media player,最棒的開源播放器 - VideoLAN
愛芯派Pro上,準備一些軟件:
編譯工具鏈,安裝命令
2024-01-21 16:36:14
【飛凌 OK113i-C 全志T113-i開發板】視頻編解碼測試
前言本文測試OK113i-S開發板-視頻編解碼的功能OK113i-S開發板是支持視頻的編解碼的,下面是官方介紹的編解碼功能T113-i 是一種為多媒體解碼平臺設計的高級應用處理器。T113-i 集成
2023-12-25 09:41:35
視頻編解碼器-晶振應用選型方案簡介
隨著科技的日新月異,視頻編解碼技術也將迎來新的發展機遇,5G網絡的普及將進一步提升視頻傳輸速度和質量,為視頻編解碼器的發展提供更廣闊的空間。
2023-12-09 10:55:25
428


【從0開始創建AWTK應用程序】編譯應用到嵌入式Linux平臺運行
。搭建Linux平臺交叉編譯環境在上一篇文章我們介紹了使用AWTK開發簡單的應用并在PC上模擬運行,本篇文章就來介紹一下怎么讓應用程序運行在嵌入式Linux平臺上。1
2023-12-07 12:08:07
247


使用具備SigmaDSP內核的編解碼器是否必須載入SigmaDSP程序才能使用?
目前預計使用ADAU1761連接兩個MEMS數字麥克風,
ADAU1761與ADAU1361相比, ADAU1761多了SigmaDSP內核.
使用具備SigmaDSP內核的編解碼器是否必須
2023-11-30 07:31:56
在Linux下如何使用CMake編譯程序
拿到其它平臺上使用,無需修改,非常方便。 本文主要講述在Linux下如何使用CMake來編譯我們的程序。 一 環境搭建 我使用的是ubuntu18.04,安裝cmake使用如下命令: sudo apt
2023-11-08 16:15:08
993


Banana Pi BPI-W3(ArmSoM-W3) RK3588編解碼之MPP環境配置
1. 簡介
瑞芯微提供的媒體處理軟件平臺(Media Process Platform,簡稱 MPP)是適用于瑞芯微芯片系列的 通用媒體處理軟件平臺。該平臺對應用軟件屏蔽了芯片相關的復雜底層處理,其
2023-11-02 12:28:58
如何在嵌入式系統中使用音頻編解碼器更輕松地優化音頻性能?
作者:Jacob Beningo 許多設計人員在其基于微控制器的嵌入式系統設計中加入了音頻編解碼器,以提供高保真音頻。但在這樣做之前,他們必須弄清楚如何對其應用進行音頻編解碼器調校。如果不進行調校
2023-10-03 14:34:00
553


Linux內核編譯腳本
獲得編譯命令及選項 編譯linux時,默認不會顯示編譯的命令,如果你要獲得編譯命令及其選項,可以在make命令后面加上宏定義: make V= 1 如果希望編譯系統告訴你為何某個目標文件需要重新編譯
2023-09-27 11:52:17
316

Linux交叉編譯選項與源碼與目標文件分離
交叉編譯選項 編譯Linux,通常只需要運行 make menuconfig 配置要編譯的模塊,然后運行 make 。Linux默認是做本地編譯,也就是編譯位本機使用的內核。 在嵌入式開發中,經常
2023-09-27 11:48:59
360

WebP圖像編解碼庫libwebp存在堆緩沖區溢出漏洞
WebP圖像編解碼庫libwebp存在堆緩沖區溢出漏洞(CVE-2023-4863),攻擊者可以通過發送植入惡意代碼的WebP圖像獲得設備的部分權限。
2023-09-25 09:48:00
4027


視頻編解碼器H.264和H265有什么區別?
對于大型視頻文件來說,視頻編解碼器至關重要,它可以將文件壓縮為較小的尺寸,從而可以更輕松地存儲和加快傳輸速度。而兩種最常用的編解碼器是H.264和H.265,那么它們兩者之間有什么區別,哪一個更好呢?
2023-09-22 16:27:59
1984


BM1684芯片的編解碼性能數據是怎樣的?
BM1684有4個VPU硬核和4個JPU硬核,具體視頻和圖片的編解碼的速度與實際情況有關,要以實測為準。
視頻解碼的速度與輸入視頻碼流的格式有很大關系,不同復雜度的碼流的解碼速度有比較大的波動,比如
2023-09-19 07:18:50
BM1684編解碼性能是同時支持32路解碼和2路編碼嗎?內存大小和內存帶寬會不會成為瓶頸?
BM1684編解碼性能是同時支持32路解碼和2路編碼嗎?內存大小和內存帶寬會不會成為瓶頸?
2023-09-19 06:33:40
Linux 下GCC的編譯
一、Linux 下多文件編譯 在上一篇 Linux 下的 C 編程我們知道了 Linux 下的編譯器為 GCC ,以及如何使用 GCC 進行編譯,在文章我們講解 GCC 的編譯,使用的只使用了
2023-09-11 15:18:37
996


面向行泊一體的車輛縱向控制算法簡介
為滿足自動駕駛行車&泊車過程的縱向控制功能需求,需開發行車功能的縱向控制VLC以及泊車功能的軌跡速度規劃TSP,其中,VLC負責將車輛縱向控制的加速度接口ax轉化為驅動/制動力Fx(包括前饋控制與反饋控制),TSP進行S-V關系式擬合。
2023-09-11 11:34:49
412


昉·星光 2(VisionFive 2)Debian 202308最新鏡像發布!
改變功能:
-使用硬件編解碼器(VPU)的媒體播放。包括VLC, Firefox, ffplay, gstreamer等。
-GPU (glmark、桌面渲染等)相關任務。
藍牙:
包含控制藍牙設備的藍牙
2023-09-08 14:44:01
【昉·星光 2 高性能RISC-V單板計算機體驗】使用nginx、ffmpeg和VLC搭建簡單視頻直播系統
源碼編譯并安裝nginx和http-flv模塊,然后介紹如何使用ffmpeg推流,最后介紹如何在PC上使用VLC播放器查看視頻流中的畫面。在本文介紹的實驗中,nginx及http-flv模塊作為視頻流
2023-08-27 19:06:23
字節跳動旗下火山引擎自研的視頻編解碼芯片已出片
字節跳動旗下火山引擎自研的視頻編解碼芯片已出片 在8月22日的一場活動中,據字節跳動視頻架構負責人、火山引擎視頻云架構技術總監王悅介紹,字節跳動旗下火山引擎自研的視頻編解碼芯片專用芯片已出片。 字節
2023-08-23 18:56:51
1627

I91260語音芯片在SDS不同的編解碼格式有什么區別?
我正在使用 I91260 語音芯片,我在SDS 看到有不同的編解碼格式(AudioPlayback MD4 NuOneEx ...) 我想知道這些格式有什么區別,我如何更好的選擇使用那個格式?
我的另一個問題是,在那個文檔 展示了關于 音頻編解碼的 介紹,比如 采樣率,通道選擇 等描述
2023-08-21 07:39:16
高效率、易管理的智能照明解決方案
在智能建筑應用中,照明是建筑物的基礎功能,除了通過智能照明控制以達到節省能源、提高效率的目標外,通過可見光通信(VLC)技術,還可以實現室內定位與數據傳輸的功能,同時提供了二合一的智能照明和聯接方案。本文將為您介紹VLC技術的發展,以及安森美(onsemi)推出的相關解決方案。
2023-08-16 10:57:06
385


openharmony怎么調用GPU進行視頻和圖片的編解碼?
openharmony怎么調用芯片里的GPU進行視頻和圖片的編解碼?
每個不同的芯片需要單獨調整適配嗎?
2023-08-14 15:10:26
openharmony怎么調用芯片里的GPU進行視頻和圖片的編解碼?
openharmony怎么調用芯片里的GPU進行視頻和圖片的編解碼?
比如RK3588等。openharmony 3.2 Release。
2023-08-14 15:04:23
跨平臺編譯工具cmake的簡單使用
在使用不同平臺的電腦時,使用的編譯也會不一樣,如果想把一個項目在不同平臺下編譯,那有什么方式可以實現這樣的需求呢,這就是這篇文章就來介紹其中的一種方式,就是使用cmake,cmake 并不直接建構出最終的軟件,而是產生標準的建構檔,然后再借助編譯工具來構建。
2023-08-14 10:40:04
421


搭建一種跨平臺qt5遠程編譯環境
所謂的跨平臺qt5遠程編譯環境,就是實現在本機的VS上寫Qt程序,然后在遠程的linux機器上進行編譯,得到Qt的Gui或非GUI程序。
2023-07-25 15:05:34
663


國產8K視頻的落地,離不開新的編解碼標準
電子發燒友網報道(文/周凱揚)數字音視頻的興起,與優秀的編解碼標準可謂息息相關,但也在這些年的發展中遇到了不少阻礙。諸如H.264、H.265等主流編解碼格式,常常面臨著高昂的專利費用。而反觀一些
2023-06-26 09:18:27
1752


RISC-V核、平臺和芯片該如何選擇?
機器視覺和機器聽覺領域。
(3)、高校和研究機構可以選擇開源RISC-V 核 在FPGA 平臺上進行計算機體系架構、操作系統 ,編譯技術以及嵌入式系統教學和研究工作。比如,Arty FPGA 開發板上
2023-06-21 20:34:16
FPGA純verilog編解碼SDI實現流程
一是使用專用編解碼芯片,比如典型的接收器GS2971,發送器GS2972,優點是簡單,比如GS2971接收器直接將SDI解碼為并行的YCRCB,GS2972發送器直接將并行的YCRCB編碼為SDI視頻,缺點是成本較高,可以百度一下GS2971和GS2972的價格
2023-06-19 16:55:52
806


請問Nuc972與nuc32905的編解碼有聲明區別?
Nuc972與nuc32905的編解碼有聲明區別?我看nuc972也有編解碼功能呀。為什么還要有nuc32905系列呢?
2023-06-15 08:35:21
FPGA實現SDI視頻編解碼的方案
一是使用專用編解碼芯片,比如典型的接收器GS2971,發送器GS2972,優點是簡單,比如GS2971接收器直接將SDI解碼為并行的YCRCB,
2023-06-14 14:48:28
678


ISD91260編解碼格式如何選擇?
我正在使用 I91260 語音芯片,我在SDS 看到有不同的編解碼格式(AudioPlayback MD4 NuOneEx ...) 我想知道這些格式有什么區別,我如何更好的選擇使用那個格式?
我的另一個問題是,在那個文檔 展示了關于 音頻編解碼的 介紹,比如 采樣率,通道選擇 等描述
2023-06-13 06:16:22
如何獲得ESP8266上的opus編解碼器?
我想要 ESP8266 上的 opus 編解碼器(尤其是解碼器),因為 128 kbps 應該足夠用便宜的 I2S DAC 來傳輸音頻。我認為這非常重要,因為 opus 可以讓人們從互聯網上獲取
2023-06-12 06:54:17
S9S12VR48AF0VLC和S9S12VR48AAVLCR的區別是什么?
有人可以澄清 S9S12VR48A F0 VLC 和 S9S12VR48A A VLCR之間的區別嗎?當我解碼零件號時,以紅色突出顯示的那個似乎是產品修訂信息。你能告訴我有什么變化嗎?
2023-06-12 06:15:52
OK-2K0500-C_Linux4.19.190_用戶編譯手冊
OK-2K0500-C_Linux4.19.190_用戶編譯手冊+QT5.12.7_V1.0_20230316
2023-06-09 15:25:26
8

如何編譯Linux Kernel
整個Linux內核編譯的過程非常簡單,但是內核編譯需要花費很長的時間。因為Linux內核的代碼非常多。當然,如果你的計算機性能強勁,時間會短很多。當你準備好性能強勁的計算機后,讓小編帶你一步一步的編譯Linux內核。
2023-06-07 16:26:27
4712


gstreamer imx8mm rtsp服務器和客戶端保存到文件,但是test.h264無法用VLC打開怎么解決?
我有[i] 板 imx8m 迷你 [i]處理器。按照 cmd 將其用作 rtsp 服務器(可以通過 VLC 查看):
gst-variable-rtsp-server -p 9001 -u
2023-05-18 10:43:36
如何將多個AK5554編解碼器與i.MX8MN SAI線集成?
我目前正在從事一個項目,涉及在 i.MX8MN 平臺上將兩個 AK5554 編解碼器與同一條 SA5I 線路集成。我的目標是以這樣一種方式配置系統,使其有效地充當八個音頻通道,所有通道都連接到正確
2023-05-18 06:15:04
TLV320AIC3100音頻編解碼器啟動問題求解
嗨,團隊,我們正在研究 IXM8MM 定制板。我們使用帶有 imx8mm 和 Android 11 代碼庫的 tlv320aic3100 音頻編解碼器。面臨一些與MCLK相關的問題。當我嘗試
2023-05-17 08:03:47
wm8960音頻編解碼器的dtsi文件如何設置?
頻率 = <100000>;
編解碼器:wm8960@1a {
compatible = \"wlf,wm8960\";
reg = <
2023-04-23 08:12:50
求分享用于WinCE的I.MX6 MPGE4/H264編解碼器
你好 ,我們正在尋找適合 i.MX6DL 的 WinCE7 MPEG4/H.264 編解碼器。這個包適用于 i.MX6 嗎?我們在哪里可以下載它?
2023-04-19 10:51:44
如何在i.MX8M Plus上集成音頻編解碼器MAX98089?
調試消息,您也可以從隨附的補丁中觀察到這些信息。最后我得到了以下內核消息:[0.357904]imx-max98088 sound-max98089:找不到編解碼器平臺設備[0.383237
2023-04-06 06:20:09
如何使用iMX8QM在I2S/SAI編解碼器上交換音頻通道?
我們在帶有 SGTL5000 編解碼器的定制 i.MX8QM 板上進行隨機音頻左/右聲道交換。我們在使用 wm8960 編解碼器的 i.MX8MEK 上注意到了同樣的問題。兩者都在運行 yocto
2023-03-31 07:32:54
河套IT TALK 65:(原創)讓人眼花繚亂的超高清視頻編解碼格式
、兩極化的 挑戰, 了解到視頻從產生到播放,中間經歷 的 復雜流程,也牽扯紛繁復雜的利益相關人,所以在視頻內容編解碼方面,存在著各方利益的博弈。各大組織、企業都有在視頻編解碼上投入,致力于爭奪技術和專利上的制高點。 本期,我們就聊聊 超高清視頻編解碼的現狀。
2023-03-28 03:15:05
793

評論