版权声明:本文为博主原创文章,遵循 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(206512)
- Linux平台(8101)
- 编译(32308)
- VLC(15187)
- vlc播放器(5069)
相关推荐
腾讯沧海芯片夺8项世界赛事第一,已规模出货数万片,国产视频编解码芯片实力不俗
电子发烧友网报道(文/吴子鹏)近日,莫斯科国立大学举办的MSU硬件视频编码比赛成绩揭晓,腾讯自研的编解码芯片“沧海”包揽了所参加的两个赛道8项评分的全部第一。 同时,腾讯方面透露称,自去年3月顺利
2023-04-19 06:13:004000
编解码一体机的主要应用场景是什么?
提供高清、流畅的视频传输服务,支持多平台和多终端访问,简化会议的召开和管理。 安防监控:在安防监控领域,编解码一体机可以作为核心设备,提供高质量的视频流,支持远程实时监控和录像回放等功能。 教育录播:编解码一体机应
2024-01-31 14:57:21146
编解码一体机相对于传统的编解码设备有哪些优势?
编解码一体机相对于传统的编解码设备具有多个优势。以下是编解码一体机的几个主要优势: 高效实时的视频处理能力:编解码一体机采用先进的编解码算法和云计算技术,能够实现高效、实时的视频处理,满足各种应用场
2024-01-31 14:56:04286
编解码一体机:提高视频处理效率的关键
编解码一体机是一种集视频编解码、音频编码以及数据传输功能于一体的多媒体设备。相较于传统的视频处理方式,它能够显著提高视频处理的效率。 传统的视频处理方式通常需要多台设备协同工作,如视频采集设备、编码
2024-01-31 14:52:41129
编解码一体机:打破传统,引领未来
编解码一体机是一种集视频编解码、音频编码以及数据传输功能于一体的多媒体设备,它打破了传统的视频处理方式,引领着未来的发展趋势。 传统的视频处理方式通常需要多台设备协同工作,如视频采集设备、编码设备
2024-01-31 14:50:34137
如何选择最适合你的编解码一体机?
选择最适合自己的编解码一体机需要考虑以下几个方面: 应用场景:首先需要明确编解码一体机的应用场景,如视频会议、安防监控、教育录播等。不同的应用场景对编解码一体机的性能要求不同,需要根据具体需求
2024-01-31 14:49:08173
编解码一体机:技术、应用与挑战
了先进的编解码算法,能够实现高效、实时的视频处理。这种技术大大提高了视频解码的效率,有效降低了延迟,从而确保了音视频传输的实时性和流畅性。此外,编解码一体机还支持多平台和多终端访问,使得用户可以随时随地访问和处
2024-01-31 14:48:04148
从编解码一体机看视频处理技术的未来
和硬件加速技术,以实现更高效率的视频处理。这将有助于降低延迟、提高传输质量和节省带宽资源。 多平台和多终端访问:随着移动互联网和智能终端的普及,多平台和多终端访问成为视频处理技术的重要趋势。编解码一体机将支持更多
2024-01-31 14:47:25143
音频处理的新选择:编解码一体机
编解码一体机作为音频处理的新选择,以其高效、灵活的解决方案,引领着音频处理技术的新篇章。这种设备集成了音频编解码和数据传输功能,将复杂的音频处理流程简化在一台设备中,提高了音频处理的效率和灵活性
2024-01-31 14:46:16134
编解码一体机在流媒体传输中的核心作用
编解码一体机在流媒体传输中起着核心作用,主要表现在以下几个方面: 1. 视频和音频编码:编解码一体机能够对视频和音频数据进行高效的编码,将原始的多媒体数据压缩成适合网络传输的格式。这样不仅可以减少
2024-01-31 14:20:22118
什么是编解码一体机?
一体机还支持多平台和多终端访问,允许用户通过PC、手机、平板等设备随时随地访问和处理视频内容。 编解码一体机具有许多优势。首先,它能够实现高效、实时的视频处理,满足各种应用场景的需求。其次,编解码一体机采用先进的
2024-01-31 14:19:36168
【爱芯派 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:25428
【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行
。搭建Linux平台交叉编译环境在上一篇文章我们介绍了使用AWTK开发简单的应用并在PC上模拟运行,本篇文章就来介绍一下怎么让应用程序运行在嵌入式Linux平台上。1
2023-12-07 12:08:07247
使用具备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:08993
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:00553
Linux内核编译脚本
获得编译命令及选项 编译linux时,默认不会显示编译的命令,如果你要获得编译命令及其选项,可以在make命令后面加上宏定义: make V= 1 如果希望编译系统告诉你为何某个目标文件需要重新编译
2023-09-27 11:52:17316
Linux交叉编译选项与源码与目标文件分离
交叉编译选项 编译Linux,通常只需要运行 make menuconfig 配置要编译的模块,然后运行 make 。Linux默认是做本地编译,也就是编译位本机使用的内核。 在嵌入式开发中,经常
2023-09-27 11:48:59360
WebP图像编解码库libwebp存在堆缓冲区溢出漏洞
WebP图像编解码库libwebp存在堆缓冲区溢出漏洞(CVE-2023-4863),攻击者可以通过发送植入恶意代码的WebP图像获得设备的部分权限。
2023-09-25 09:48:004027
视频编解码器H.264和H265有什么区别?
对于大型视频文件来说,视频编解码器至关重要,它可以将文件压缩为较小的尺寸,从而可以更轻松地存储和加快传输速度。而两种最常用的编解码器是H.264和H.265,那么它们两者之间有什么区别,哪一个更好呢?
2023-09-22 16:27:591984
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:37996
面向行泊一体的车辆纵向控制算法简介
为满足自动驾驶行车&泊车过程的纵向控制功能需求,需开发行车功能的纵向控制VLC以及泊车功能的轨迹速度规划TSP,其中,VLC负责将车辆纵向控制的加速度接口ax转化为驱动/制动力Fx(包括前馈控制与反馈控制),TSP进行S-V关系式拟合。
2023-09-11 11:34:49412
昉·星光 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:511627
I91260语音芯片在SDS不同的编解码格式有什么区别?
我正在使用 I91260 语音芯片,我在SDS 看到有不同的编解码格式(AudioPlayback MD4 NuOneEx ...) 我想知道这些格式有什么区别,我如何更好的选择使用那个格式?
我的另一个问题是,在那个文档 展示了关于 音频编解码的 介绍,比如 采样率,通道选择 等描述
2023-08-21 07:39:16
高效率、易管理的智能照明解决方案
在智能建筑应用中,照明是建筑物的基础功能,除了通过智能照明控制以达到节省能源、提高效率的目标外,通过可见光通信(VLC)技术,还可以实现室内定位与数据传输的功能,同时提供了二合一的智能照明和联接方案。本文将为您介绍VLC技术的发展,以及安森美(onsemi)推出的相关解决方案。
2023-08-16 10:57:06385
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:04421
搭建一种跨平台qt5远程编译环境
所谓的跨平台qt5远程编译环境,就是实现在本机的VS上写Qt程序,然后在远程的linux机器上进行编译,得到Qt的Gui或非GUI程序。
2023-07-25 15:05:34663
国产8K视频的落地,离不开新的编解码标准
电子发烧友网报道(文/周凯扬)数字音视频的兴起,与优秀的编解码标准可谓息息相关,但也在这些年的发展中遇到了不少阻碍。诸如H.264、H.265等主流编解码格式,常常面临着高昂的专利费用。而反观一些
2023-06-26 09:18:271752
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:52806
请问Nuc972与nuc32905的编解码有声明区别?
Nuc972与nuc32905的编解码有声明区别?我看nuc972也有编解码功能呀。为什么还要有nuc32905系列呢?
2023-06-15 08:35:21
FPGA实现SDI视频编解码的方案
一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCRCB,
2023-06-14 14:48:28678
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:268
如何编译Linux Kernel
整个Linux内核编译的过程非常简单,但是内核编译需要花费很长的时间。因为Linux内核的代码非常多。当然,如果你的计算机性能强劲,时间会短很多。当你准备好性能强劲的计算机后,让小编带你一步一步的编译Linux内核。
2023-06-07 16:26:274712
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:05793
评论
查看更多