版权声明:本文为博主原创文章,遵循 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: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", //将会默认为所有连接使用 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: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;
}
————————————————
版权声明:本文为CSDN博主「Tosonw」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Tosonw/article/details/89509356
VLC核显编解码简介 + Linux平台vlc编译
- Linux(218415)
- Linux平台(8331)
- 编译(34998)
- VLC(16093)
- vlc播放器(5198)
相关推荐
热点推荐
米尔T113核心板的农机中控屏显方案解析
、 基于 T113的农机中控屏显方案示例基于全志T113i处理器的核心板方案通常采用模块化架构,便于功能扩展与定制开发,其典型系统组成如下:· 视频编解码:支持开机动画· 影像输入:CVBS 倒车摄像头
2026-01-04 17:58:47
RK3588 平台 MPP 编译 + VPU 格式测试
大家在做瑞芯微 RK3588 开发时,是不是经常困惑「怎么验证 VPU 到底支持哪些编解码格式?」「 MPP 媒体库该怎么编译?」今天手把手带你走一遍流程
2025-12-25 11:33:54
1207
1207
德州仪器PCM2904/PCM2906立体声音频编解码器:特性、应用与设计指南
德州仪器PCM2904/PCM2906立体声音频编解码器:特性、应用与设计指南 在当今数字化音频的时代,高质量的音频编解码器对于各种音频设备至关重要。德州仪器(Texas Instruments
2025-12-23 15:05:02
208
208TLV320AIC12KIDBTR 低功耗单声道语音频编解码器
TLV320AIC12KIDBTR低功耗单声道语音频编解码器产品型号:TLV320AIC12KIDBTR产品品牌:TI/德州仪器产品封装:TSSOP30产品功能:语音频编解码
2025-12-20 11:30:53
152
152
米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
出来,独立运行实时操作系统RT-Thread。此架构实现了完美的任务隔离:两颗A7核运行通用Linux,处理网络、存储等复杂业务;被隔离的A7核则专司硬实时任务,确保微秒级响应。这为传统PLC、远程I
2025-12-19 20:35:23
瑞芯微SOC智能视觉AI处理器
需要连接多种外设的产品。显示: 支持双屏异显,最高4K@60fps输出。
RK1126B: 一款集成自研NPU的智能视觉AI处理器,专注于视频输入端的AI分析与处理。CPU: 双核A53,主要负责
2025-12-19 13:44:47
AMD EV系列器件VCU Control Software简介
近年来,随着音视频应用场景和内容越来越丰富,对网络传输和存储都带来了巨大的挑战。为了应对这一挑战,各种视频编解码技术就被提了出来,其中H.264/H.265视频编解码协议是当前的主流视频编解码标准
2025-12-10 14:45:59
3932
3932
蓝牙模块低功耗新突破:LE Audio技术详解(LC3编解码/多设备串流/广播音频)
还支持多设备连接和音频分享等功能,为消费者带来了更加出色的音频体验。 LE Audio和经典蓝牙相比的优势 1.LC3编解码器 LC3作为LE Audio强制支持的
2025-12-10 11:20:26
863
863
Linux Swap交换空间详解:Android编译内存不足?这样扩充立竿见影
在 Linux 系统使用过程中,你是否遇到过 “ 内存不足 ” 的报错?比如编译 Android 源码时,明明按教程操作,却因物理内存没达到 16G 要求而编译中断?这正是
2025-12-06 08:10:17
3871
3871从两轮车仪表到工程机械环视,米尔电子助力国产 HMI 显控一体化突围
登场。
性能越级:搭载全志 T527 八核 Cortex-A55 处理器,内置 RISC-V 协处理器与 2 TOPS NPU。采用AMP 异构架构,A55 跑 Android/Linux 处理复杂
2025-12-05 17:46:42
别再迷糊了!Linux交叉编译到底是个啥?一文讲清楚
就用 不绕弯子、接地气、工程师能看懂 的方式,把交叉编译讲得明明白白。 而且结合我们钡铼技术(BaileiTech)那些跑在 ARM、RISC-V、国产嵌入式 Linux 的产品,告诉你交叉编译在工业场景里究竟为什么重要。 一、交叉编译是什么?一句话讲清
2025-12-03 16:28:54
701
701
基于 DR1M90 的 Linux-RT 内核开发:从编译配置到 GPIO / 按键应用实现(1)
本手册由创龙科技研发,针对 DR1M90,详述 Linux-RT 实时内核开发:含实时性测试(Linux 与 Linux-RT 对比、CPU 空载 / 满负荷 / 隔离状态测试)、内核配置编译
2025-12-02 10:38:01
1005
1005
瑞芯微RK3562平台FFmpeg硬件编解码移植及性能测试实战攻略
本文介绍瑞芯微RK3562平台,FFmpeg硬件编解码移植及性能测试方法。FFmpeg简介与实测数据FFmpeg简介FFmpeg是一套多媒体框架,能够解码、编码、转码、复用、解复用、流、过滤和播放
2025-11-28 19:02:04
936
936
Linux 下交叉编译实战:跑起来你的第一个 STM32 程序
很多开发者第一次接触STM32,总会被“交叉编译”、“烧录程序”等概念绕晕。其实方法很简单:在Linux下配置交叉编译环境,编写简单程序,然后烧录到STM32,就可以看到成果了。本文带你从零开始
2025-11-24 19:04:50
454
454
RK3576驱动高端显控系统升级:多屏拼控与AI视觉融合解决方案
系统依赖多工控主机、外接显卡和解码器,存在功耗高、延迟大的问题。而瑞芯微 RK3576 打造的新一代 AI 多媒体平台,凭借 “三屏异显 + 八路摄像头输入 + AI 边缘计算” 的架构,全面提升高端显
2025-11-21 17:51:45
Linux搭建平台
起因:本人用IDE感觉好不方便,所以配置了相关的Linux环境,Linx配置环境文档看得有点乱,索性整理了一下。
环境是zsh,用bash的可以稍微改一下。主要下载了nuclei-sdk
2025-11-05 09:00:56
音视频编解码封装解封装部件介绍
是否有探索开源鸿蒙音视频编解码技术的欲望?是否对开源鸿蒙音视频编解码格式支持有诉求?别急——今天这份开源鸿蒙AVCodec Kit介绍文章,就是解答疑惑的指南!参考这份指南,可以使用开源鸿蒙的音视频编解码能力,进行应用开发;也可以参与共建,让开源鸿蒙音视频编解码更加完善!
2025-10-31 09:15:20
362
362
基于E203 RISC-V的音频信号处理系统 -CODEC(音频编解码器)配置
CODEC介绍
本设计采用的音频编解码器是WM8731,该编解码器可以通过I2C进行寄存器配置,可以调节主从模式、数据位数可设置为16bit、24bit、32bit。可以设置的传输模式为I2S、DSP等模式。
寄存器值配置软件代码
逻辑分析仪抓取波形
2025-10-28 06:29:53
VDMA IP核简介
VDMA端口信号
S_AXI_LITE:PS端可以通过AXI_LITE协议对IP核进行控制;
S_AXIS_S2MM:视频流(AXI STREAM)输入到IP核的FIFO中
2025-10-28 06:14:54
使用rk3568开发板,核0\\1\\3运行linux,核2运行hal,在核0中怎么关闭核2
使用rk3568开发板,核0\\\\1\\\\3运行linux,核2运行hal,想在内核中通过smc指令完成核0对核2得启动和关闭,文件系统中/sys/rk_amp目录下有个boot_cpu文件,可以发起对核2得开启和关闭操作,但是目前会返回错误,请问如果解决呢
2025-10-27 10:09:54
瑞芯微RK3588平台FFmpeg硬件编解码移植及性能测试实战攻略
本文介绍瑞芯微RK3588平台,FFmpeg硬件编解码移植及性能测试方法。FFmpeg简介与实测数据FFmpeg简介FFmpeg是一套多媒体框架,能够解码、编码、转码、复用、解复用、流、过滤和播放
2025-10-21 13:51:27
1205
1205
车载360环视平台:米尔RK3576开发板支持12路低延迟推流
,传统硬件平台往往在摄像头数量、编解码效率和推流延迟上存在瓶颈,难以满足行业对 高并发 + 低延迟 的要求。作为嵌入式领域的先行者,米尔电子基于瑞芯微 RK3576开发板,推出了针对车载360环视
2025-10-11 17:55:41
瑞芯微RK35XX系列FFmpeg硬件编解码实测,详细性能对比!
FFmpeg硬件编解码技术通过调用GPU或专用的媒体处理芯片来加速视频的压缩与解压缩过程,其核心价值在于能够显著提升处理效率并降低系统资源消耗。适用于对实时性、功耗或并行处理能力有较高要求的场景
2025-09-30 17:46:40
2592
2592
RK3506开发板QT Creator开发手册,交叉编译工具链与QT应用示例,入门必备
本文基于触觉智能RK3506核心板/开发板介绍QTCreator交叉编译配置与QT应用示例。如需购买开发板进行评估验证简介QTCreatorQtCreator是由TheQtCompany开发的跨平台集成开发环境(IDE),专为Qt框架设计,支持C++、QML、Pyth
2025-09-30 16:26:38
3474
3474
新唐科技推出低延迟音频编解码器NAU88L21C
Audio CODEC (Audio Coder-Decoder) 是音频“编解码器”,主要功能是进行音频信号的编码(压缩)和解码(解压)。在音频信号处理过程中,信号的采集处理,编码,解码都是
2025-09-30 09:25:19
5786
5786
创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—Linux-RT应用开发案例
Linux-RT 性能;还提供 rt_gpio_ctrl(实时线程控制 LED 翻转)、rt_input(实时线程监听按键触发 LED)两个开发案例,含测试、编译步骤与关键代码,为评估板 Linux-RT 应用开发提供指导。
2025-09-25 17:25:41
620
620
独显和集显有什么区别?一篇搞懂!
选电脑时,“显卡”是决定使用体验的关键硬件。有人纠结“集显够不够用”,有人担心“独显太贵且笨重”。其实独显(独立显卡)和集显(集成显卡)没有绝对的 “好坏”,只有“是否适配需求”:集显适合日常办公
2025-09-19 16:09:21
5664
5664
瑞芯微RK3576平台FFmpeg硬件编解码移植及性能测试实战攻略 触觉智能RK3576开发板演示
本文介绍瑞芯微RK3576平台,FFmpeg硬件编解码移植及性能测试方法。演示设备:触觉智能RK3576开发板FFmpeg简介与实测数据FFmpeg简介FFmpeg是一套多媒体框架,能够解码、编码
2025-09-08 13:58:41
876
876
增强T-BOX设计,新唐编解码器的重要作用
、远程异常维护和更新。
数据收集和传输:安全保护和隐私加密。
多接口扩展:可定制的功能和软件应用程序。
在T-BOX中,编解码器(编码器-解码器)起着至关重要的作用,充当主要的通信桥梁。其基本功能包括
2025-09-05 06:26:02
国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—Linux系统使用手册(三)
本文档详细介绍了T113开发板的Linux环境搭建与系统编译流程。主要内容包括:1)开发环境要求(Windows/VMware/Ubuntu版本);2)Linux SDK安装步骤(依赖软件安装、源码
2025-09-04 14:56:56
521
521
国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—Linux系统使用手册(二)
本文档详细介绍了T113开发板的Linux环境搭建与系统编译流程。主要内容包括:1)开发环境要求(Windows/VMware/Ubuntu版本);2)Linux SDK安装步骤(依赖软件安装、源码
2025-09-02 16:36:02
590
590
视耀T1 MINI-4路4K编解码器丨端到端超低延时赋能4K超清视界
、串流分发等基础场景展现显著优势。其灵活的通道管理可同步处理多源流媒体信号,确保远程协作、多平台内容分发等场景下的低延时传输与高质量画面呈现,实现全链路效能跃升。
上市以来,视耀T1 MINI编解码器已
2025-08-28 13:43:50
TLV320AIC3104-Q1汽车级低功耗音频编解码器技术解析
Texas Instruments TLV320AIC3104-Q1低功耗立体声音频编解码器配有立体声耳机放大器以及多个输入和输出,其可在单端或全差分配置中编程。该器件具有广泛的基于寄存器的电源控制
2025-08-28 10:31:43
749
749
如何调用mpp硬解+ffmpeg本地播放视频,RK3576
我往rk3576上部署了一个ubuntu系统,想测试rkmpp+ffmpeg或者rkmpp+gstreamer硬解,实现本地播放视频,有什么思路或者案例可以供我参考吗?
目前遇到了很多问题:
无法使用rkmpp解码,如果直接本地播放视频(mpv/vlc),是纯软解等问题
2025-08-23 10:05:13
如何使用 M487 微控制器和外部音频编解码器NAU88L25将 AMR 格式的声音录制到 MicroSD 卡中?
使用 M487 微控制器和外部音频编解码器NAU88L25将 AMR 格式的声音录制到 MicroSD 卡中
2025-08-20 06:28:24
一款低功耗、高质量的24位立体声编解码器-CJC8972
24位立体声编解码器通过数字信号处理实现高精度音频编码与解码,核心在于对立体声信号的数字化处理及还原。
2025-08-07 09:22:27
1101
1101
360环视技术推荐的硬件平台:支持多摄像头与三屏异显的理想选择
摄像头接入通道不够,限制了视野覆盖;l 视频编解码能力不足,画面延迟;l 缺乏AI识别能力,无法实现智能感知;l 输出能力弱,难以支持多屏显示或异显需求。这时候,一个性能均衡、接口丰富、AI能力强
2025-07-30 17:32:03
【VisionFive 2单板计算机试用体验】二维码检测与解码
进行解码。
二、搭建环境
使用PuTTY的ssh接口连接后开发板后,需要执行以下指令,以完成 StarFive Packages及其依赖的必要组件安装,下载安装时长比较久。
https
2025-07-30 01:01:39
FX3 UVC 无法与 Ubuntu 24.04 Cheese 或 Snapshot 相机应用程序配合使用,怎么处理?
添加了来自 VLC 的日志以供比较。根据日志,似乎 PipeWire 或 UVC 驱动程序存在一些问题。
我一直在做一些调试,发现对于 Ubuntu 视频有 3 个类似的控制视频的组件,V4L2
2025-07-16 06:37:58
Texas Instruments TAC5x42接口编解码器数据手册
Texas Instruments TAC5x42接口编解码器包括低功耗立体声音频模数转换器 (ADC) 和音频数模转换器 (DAC),集成了丰富的功能。这些支持时分复用 (TDM)、左对齐 (LJ
2025-07-14 14:43:12
630
630
【米尔RK3576开发板免费体验】1、开发环境、镜像烧录、QT开发环境搭建以及应用部署
RK3576 是瑞芯微一款面向AI 市场推出的高性能处理器,它配备了四核Cortex-A72 和四
核Cortex-A53 的CPU,集成了6TOPS 的NPU 和3D GPU,支持4K 视频编解码
2025-07-14 11:26:52
【Milk-V Duo S 开发板免费体验】人脸检测测试(视频)
https://bbs.elecfans.com/jishu_2494616_1_1.html我们编译了人脸检测的应用,现在摄像头到了, 我们就进行实际测试。 视频见https
2025-07-11 22:33:24
【Milk-V Duo S 开发板免费体验】OV5647摄像头测试
/sample_sensor_test 推流执行camera-test.sh PC上下载安装VLC https://get.videolan.org/vlc/3.0.21/win64
2025-07-11 22:03:56
如何单独编译linux内核?
那套sdk?纯linux sdk编译方法见readmehttps://github.com/kendryte/k230_linux_sdk/
make linux
2025-07-11 08:06:38
请问编译纯rtos到底是选择Linux+rtos的sdk编译only rtos还是直接使用rtos sdk?
编译纯rtos到底是选择Linux+rtos的sdk编译only rtos还是直接使用rtos sdk?
2025-07-11 07:22:56
RK这2款旗舰芯片RK3588 PK RK3576,谁是最优选
编解码能力上 RK3588 更胜一筹。四、支持多屏异显两者都支持多屏异显和各种常见的显示接口。• RK3576:最多支持 3 屏异显和最高可支持 (4K@120 + 2.5K@60 + 2K@60),具有
2025-07-10 18:24:32
Texas Instruments TAC5311-Q1汽车单声道音频编解码器数据手册
Texas Instruments TAC5311-Q1汽车单声道音频编解码器是一款低功耗单声道编解码器,具有10V~RMS ~差分输入、104dB ADC和2V~RMS~ 差分输出、114dB
2025-07-09 15:35:40
758
758
迅为iTOP-3588S开发板核心板引脚240PIN全部引出8GB内存32GBEMMC存储
能力6TOPS的NPU算力,赋能各类AI场景。
强大的视频编解码8K编码+8K解码,持 8Kp60 H.264/H.265NVP9 视频解码,支持 8Kp30 H.264/H.265视频编码,支持
2025-06-23 11:19:37
AI玩具爆发,音频编解码器如何满足语音交互需求
电子发烧友网综合报道,在AI玩具已经开始逐渐爆发的当下,人机交互已经成为标配功能,而最重要的便是语音控制。而语音控制的第一步,便需要让AI玩具听懂你在说什么这就需要用到音频编解码器。 音频
2025-06-20 01:07:00
7032
7032ArkUI-X平台桥接Bridge说明
。
数据类型支持
平台桥接通过JSON格式或二进制格式序列化编解码传递数据,支持基础数据类型、数组类型和结构化数据。具体支持类型如下表
JSON格式数据支持类型表:
ArkTS
Java
2025-06-19 23:12:28
音诺恒RK3576安卓主板 工业云终端菜品识别结算台边缘计算开发板
6TOPS算力NPU,搭载Android14.0系统(内核为Linux5.10),GPU采用ARM G52 MC3,性能突出,性价比高。支持8K视频编解码,8K显
2025-06-11 17:47:53
不借助Linux系统,在Windows下如何搭建ZMC900E交叉编译环境
不需要依赖笨重的虚拟机,也不需要安装双系统。抛开繁琐的环境准备,在Windows上轻松搭建交叉编译环境。本文将介绍如何在Windows上搭建交叉编译环境,不借助Linux系统,直接进行交叉编译。前言
2025-05-21 11:34:25
743
743
iTOP-3588S开发板四核心架构GPU内置GPU可以完全兼容0penGLES1.1、2.0和3.2。
能力6TOPS的NPU算力,赋能各类AI场景。
强大的视频编解码8K编码+8K解码,持 8Kp60 H.264/H.265NVP9 视频解码,支持 8Kp30 H.264/H.265视频编码,支持
2025-05-15 10:36:03
请问RT-smart加linux的SDK包里有没有开发linux内核(小核)的环境适配?
想使用K230的小核(linux)去驱动一些外设,要不要重新烧录镜像?如果不需要的话,有没有更具体的例程可以借鉴参考?以下为官方文档找到的一些资料,但是不够具体,希望有更具体的一些开发例程。
双系统sdk一般需要重新烧录镜像
2025-05-14 06:59:03
ADAU1761集成PLL的SIGMADSP立体声、低功耗、96KHZ、24位音频编解码器技术手册
ADAU1761是一款低功耗、集成数字音频处理功能的立体声音频编解码器,支持立体声48 kHz录音和回放,采用1.8 V模拟电源供电,功耗为14mW。立体声音频ADC和DAC支持8 kHz至96 kHz范围内的采样速率,并支持数字音量控制。
2025-05-12 15:41:44
1031
1031
ADAU1787四个ADC、两个DAC、带音频DSP的低功耗编解码器技术手册
ADAU1787 是一款具有四个输入和两个输出的编解码器,其中整合了两个数字信号处理器 (DSP)。从模拟输入到 DSP 内核再到模拟输出的路径已针对低延迟进行优化,适用于噪声消除耳机。通过加入少量无源组件,ADAU1787 提供了完整的耳机解决方案。
2025-05-12 14:57:45
1286
1286
基于RK3576的BASE64编解码
了BASE64编解码工具,方便用户进行数据封装。文章详细说明了如何快速上手,包括源码工程下载、开发环境搭建、例程编译与运行。此外,还提供了BASE64编解码API的详细说明,包括编码和解码函数的原型、输入
2025-05-12 13:41:39
526
526
5ms低延迟 视频编解码模块迎来关键突破
随着无人设备的应用越来越广泛,远程控制技术也在不断革新。其中延时时间作为一个关键指标,直接决定着远程控制无人设备等的综合性能。因此,低带宽、低延迟的视频编解码技术成为必须要突破的技术。编码延时与编码
2025-05-07 17:58:10
444
444
TPS65950 集成电源管理 IC (PMIC),具有 3 个 DC/DC、11 个 LDO、音频编解码器、USB HS收发器数据手册
TPS65950 器件是一款高度集成的电源管理和音频编码器/解码器(编解码器)集成电路 (IC),支持 OMAP™ 应用处理器的电源和外设要求。该器件包含电源管理、音频编解码器、通用串行总线
2025-04-28 14:38:42
719
719
TWL6040 用于便携式应用的 8 通道高质量低功耗音频编解码器数据手册
TWL6040 设备是具有高集成度的音频编码器/解码器(编解码器),可为便携式应用程序提供模拟音频编解码器功能,如 所示。该设备包含多个音频模拟输入和输出,以及麦克风偏置和附件检测。该设备通过专有
2025-04-27 17:52:07
863
863
TWL6041 用于便携式应用的 8 通道高质量低功耗音频编解码器数据手册
TWL6041 是一种具有高集成度的音频编解码器,为便携式应用程序提供模拟音频编解码器功能,如 所示。该设备包含多个音频模拟输入和输出,以及麦克风偏置和附件检测。该设备通过专有的 PDM 接口连接
2025-04-27 14:55:56
883
883
Linux_SDK编译出的核心不全的原因?
根据官方提供的Linux_SDK编译Ubuntu系统,lshw命令查看硬件配置,发现CPU1被禁用,仅开启了CPU0,看设备树文件确实是只配置了CPU0,并且没有看到其他的配置。
期待结果和实际
2025-04-25 08:20:28
linux+rtos系统如何适配linux小核屏幕驱动?
我希望使用小核运行lvgl对大核程序进行控制,运行小核lvgldemo的时候发现linux下的屏幕没有做适配,查看dts发现几乎所有的dts都用的是hx8399作为dsi的显示,但是现在市面上
2025-04-25 07:16:03
一款专为便携式数字音频应用而设计的单声道编解码器-CJC8911
Codec芯片 - CJC8911是一个低功率,高质量的单声道编解码器,设计用于便携式数字音频应用程序。该设备集成了完整的接口到一个出线端口的接口。片上数字信号处理执行图形均衡器,三维声音增强和麦克风或线路的自动电平控制输入。
2025-04-22 09:28:51
681
681
新一代视频编解码标准H.266走向主流 头部视频平台渗透率超70%
正从成熟走向主流,在头部视频平台的渗透率超70%,达摩院正在积极推进自研视频编解码方案DAMO266的应用推广与生态共建。 据统计,当前视频应用消耗全网超过80%的流量,且4K等超高清内容占比持续上升。面对视频流量的严峻挑战,业内不断推
2025-04-21 11:24:18
945
945
QuarkPi-CA2 RK3588S卡片电脑:6.0Tops NPU+8K视频编解码+接口丰富,高性能嵌入式开发!
本帖最后由 jf_85110202 于 2025-4-12 12:12 编辑
QuarkPi-CA2 RK3588S卡片电脑:6.0Tops NPU+8K视频编解码+接口丰富,高性能嵌入式开发
2025-04-11 16:03:36
Linux内核编译失败?移动硬盘和虚拟机的那些事儿
Linux开发中,编译内核是一项常见任务,但不少开发者在移动硬盘或虚拟机环境下尝试时会遭遇失败。本文将简要探讨这些问题的成因,并介绍一些虚拟机使用技巧,帮助大家更好地应对相关问题。在移动硬盘里编译
2025-04-11 11:36:04
846
846
迅为iTOP-RK3588S开发板/核心板瑞芯微RK3588S处理器6TOPS算力内置NPU
能力6TOPS的NPU算力,赋能各类AI场景。
强大的视频编解码8K编码+8K解码,持 8Kp60 H.264/H.265NVP9 视频解码,支持 8Kp30 H.264/H.265视频编码,支持
2025-04-10 11:13:03
iTOP-3588开发板采用瑞芯微RK3588处理器四核心架构GPU内置独立NPU强大的视频编解码
的视频编解码
8K编码+8K解码,多路视频源同时解码。支持8K@60fps
H.265/H.264/VP9/AV1视频解码和8K@30fps H.265/H.264视频编码。
开发板采用核心板+底板
2025-04-09 16:09:58
从安防到元宇宙:RK3588如何重塑视觉感知边界?
示例:
多模态AI融合:支持TensorFlow、PyTorch等主流框架模型部署,可应用于智能零售中的行为识别系统,通过摄像头+红外传感器数据融合,精准分析顾客停留热点。
七屏异显与8K编解码:在数
2025-04-07 16:11:04
迅为iTOP-RK3576开发板/核心板视频编解码能力强高性能低功耗的应用处理芯片
、PyTorch、Caffe等一系列框架的网络模型。满足多种应用场景。
iTOP-3576拥有强大的视频编解码能力,支持4K@120fps的H.265、VP9、AVS2和AV1解码器,支持4k@60fps
2025-04-07 14:18:10
启明智显两位数高性价比4.3寸触摸串口屏,带WIFI/蓝牙
Model3E核心板方案触摸串口屏,工业级设计,2D加速,PNG/JPEG编解码,不到百元也可呈现复杂炫酷UI
2025-04-03 16:05:50
672
672
《RK3588核心板:AIoT边缘计算的革命性引擎,能否解锁智能物联新范式?》
顾客停留热点。
七屏异显与8K编解码:在数字孪生工厂中,可驱动多个监控大屏展示生产数据、设备状态及实时视频,8K画质确保细节无遗漏。
工业级可靠性:-20℃至85℃宽温设计,适配AGV机器人、户外
2025-04-02 10:26:16
3D图形和视频编解码器引擎的通用微处理器RZ/V2L数据手册
DRP 和 AI-MAC 组成。 它还配备一个 16 位的DDR3L/DDR4 接口,具备内置 Arm Mali-G31 的 3D 图形引擎和视频编解码器 (H.264)。 *附件:3D图形和视频编解码
2025-03-14 16:50:57
917
917
【正点原子】全志T113-i开发板资料震撼来袭!异核开发、工控设计方案!
【正点原子】全志T113-i开发板震撼来袭!异核开发、工控设计方案!ATK-DLT113IS开发板是正点原子基于全志T113-i处理器而研发的一款用于嵌入式Linux领域的开发板,其拥有高性能
2025-03-13 15:37:03
具有双核 Arm Cortex-A53 CPU 的超高性能微处理器RZ/G2E数据手册
双核Arm Cortex-A53(1.2 GHz)CPU的高处理性能,以及3D图形和视频编解码器引擎。作为该产品的软件平台,瑞萨提供了经验证的Linux包,其中包括Linux内核、中间件驱动程序和该
2025-03-13 14:08:45
1312
1312
带四核Arm Cortex-A57和四核Arm Cortex-A53 CPU的RZ/G2H超高性能微处理器数据手册
具有超高处理性能的四核 Arm®Cortex®-A57(1.5GHz)和四核 Arm Cortex-A53(1.2GHz)CPU,具有 3D 图形和4K 视频编码器 / 解码器。作为本产品的软件平台
2025-03-12 17:59:24
1149
1149
采用双核Arm Cortex-A57 CPU的超高性能微处理器RZ/G2N数据手册
RZ/G2N凭借双核 Arm® Cortex®-A57(1.5GHz)处理器,具备更高规格的处理性能,同时拥有 3D 图形处理能力以及 4K 视频编码/ 解码功能。作为该产品的软件平台,瑞萨电子提供
2025-03-10 17:05:10
1036
1036
开源鸿蒙版AI终端主板AIoT-3588A彩页
AIoT-3588A是一款开源鸿蒙版AI终端主板,基于RK3588八核处理器,内置高达6TOPS算力AI加速器NPU,搭载OpenHarmony操作系统,支持8K视频编解码,支持四屏异显,扩展接口丰富,主要适用于边缘计算、AI机器人、AI云服务器及各种高性能AIoT设备。
2025-02-28 13:58:07
2
2分享!基于NXP i.MX 8M Plus平台的OpenAMP核间通信方案
在嵌入式系统领域,随着技术不断发展,对于系统性能和功能要求日益提高。核间通信作为提升系统整体效能的关键技术,成为了关注焦点。今天,我们和大家分享一个OpenAMP非对称架构核间通信方案,基于NXP
2025-02-27 10:44:16
970
970
RK3562J 处理器 M 核启动实操
编译源码
完成配置文件的生成后,我们可以开始编译源码。通过运行构建脚本,选择相应的defconfig配置,并分别编译Linux系统和M0核固件。编译成功后,会在指定目录下生成 amp.img
2025-02-27 08:59:57
[2025全网首发] 瑞芯微RK3566开发资料大揭秘!
瑞芯微RK3566处理器 技术规格全解析
(四核Cortex-A55 | 4K编解码 | 0.8TOPS NPU)
1. 基础架构[td]项目参数说明
架构ARM Cortex-A55四核64位
2025-02-26 12:17:22
迅为iTOP-RK3588S开发板/核心板6TOPS的NPU算力视频编解码8K编码+8K解码
能力6TOPS的NPU算力,赋能各类AI场景。
强大的视频编解码8K编码+8K解码,持 8Kp60 H.264/H.265NVP9 视频解码,支持 8Kp30 H.264/H.265视频编码,支持
2025-02-20 14:24:25
迅为RK3588S开发板/核心板介绍
能力6TOPS的NPU算力,赋能各类AI场景。
强大的视频编解码8K编码+8K解码,持 8Kp60 H.264/H.265NVP9 视频解码,支持 8Kp30 H.264/H.265视频编码,支持
2025-02-13 14:40:17
从性能到成本,深度剖析 RK3588 与 RK3576 怎么选
RK3588支持最高8K@60fps H.265,RK3576最高支持8K@30fps。两者都具备很强的视频编解码能力,在8K的视频编解码能力上RK3588更胜一筹。
支持多屏异显两者都支持多屏异显和各种
2025-02-09 09:10:29
迅为RK3588开发板实时系统编译-Preemption系统/ Xenomai系统编译-编译Linux实时系统-单独编译1
镜像编译完成后,最终打包镜像 update.img 的方式来编译 buildroot 镜像 update.img。
第一步:编译 uboot
首先在 linux 源码目录下输入以下命令进入编译的 UI
2025-01-23 10:20:56
哇!5.2秒进入应用界面!Linux快速启动方案分享,基于全志T113-i国产平台
T113-i国产平台优势
全志T113-i处理器可运行Linux操作系统、Qt炫酷图形界面,并可支持1080P高清视频编解码、4G大数据传输、LCD/LVDS/MIPI三种显示、原生千兆网/双
2025-01-23 09:53:47
迅为iTOP-RK3576开发板/核心板6TOPS算力4K视频编解码
、PyTorch、Caffe等一系列框架的网络模型。满足多种应用场景。
iTOP-3576拥有强大的视频编解码能力,支持4K@120fps的H.265、VP9、AVS2和AV1解码器,支持4k@60fps
2025-01-20 14:56:44
EE-96:将两个AD73311编解码器与ADSP-218x接口
电子发烧友网站提供《EE-96:将两个AD73311编解码器与ADSP-218x接口.pdf》资料免费下载
2025-01-13 16:32:14
0
0AN-1056: 低功耗编解码器ADAU1361及ADAU1761的五电容耳机虚拟地短路保护
电子发烧友网站提供《AN-1056: 低功耗编解码器ADAU1361及ADAU1761的五电容耳机虚拟地短路保护.pdf》资料免费下载
2025-01-13 16:00:26
0
0EE-212:将AD74111单声道音频编解码器评估板连接到ADSP-21161N SHARC® EZ-KIT Lite板
电子发烧友网站提供《EE-212:将AD74111单声道音频编解码器评估板连接到ADSP-21161N SHARC® EZ-KIT Lite板.pdf》资料免费下载
2025-01-08 14:27:23
0
0ADSP-21065L SHARC DSP与AD1819A AC-97 SoundPort编解码器的接口
电子发烧友网站提供《ADSP-21065L SHARC DSP与AD1819A AC-97 SoundPort编解码器的接口.pdf》资料免费下载
2025-01-06 15:33:59
0
0EE-193:ADSP-BF535 Blackfin处理器与AD73322L编解码器接口
电子发烧友网站提供《EE-193:ADSP-BF535 Blackfin处理器与AD73322L编解码器接口.pdf》资料免费下载
2025-01-06 14:17:09
0
0
电子发烧友App





评论