linux最小系统中MPlayer视频播放器移植的详细流程

一口Linux 2021-11-09 00:00

MPlayer能播放几乎所有流行的音频和视频格式,相对其它播放器来说,资源占用非常少。在嵌入式领域,在不支持QT以及没有上安卓的系统环境中,使用MPlayer可以完成DRM驱动程序的验证和调试,轻松播放音视频文件。

1. 下载资源

1.1 下载zlib

http://www.zlib.net/

下载1.2.11版本

1.2 下载alsa

https://www.alsa-project.org/files/pub/lib/

下载1.2.2版本的alsa

1.3 下载mplayer

http://www.mplayerhq.hu/MPlayer/releases/

下载1.4版本

2.编译

在如下路径创建四个文件夹,用以存放上述的三个源码以及编译出来的库文件。

2.1 zlib

以下操作的路径如下:

linux:zlib-1.2.11$ pwd
/home/ubuntu16/mplayer/zlib/zlib-1.2.11
  1. 配置zlib
linux:zlib-1.2.11$ CC=arm-none-linux-gnueabi-gcc  ./configure --prefix=/home/ubuntu16/mplayer/lib/zlib/
Checking for shared library support...
Building shared library libz.so.1.2.11 with arm-none-linux-gnueabi-gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
  1. 编译zlib
linux:zlib-1.2.11$ make
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o adler32.o adler32.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o crc32.o crc32.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o deflate.o deflate.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o infback.o infback.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inffast.o inffast.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inflate.o inflate.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inftrees.o inftrees.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o trees.o trees.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o zutil.o zutil.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o compress.o compress.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o uncompr.o uncompr.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzclose.o gzclose.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzlib.o gzlib.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzread.o gzread.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzwrite.o gzwrite.c
ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o -L. libz.a
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o minigzip.o test/minigzip.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip minigzip.o -L. libz.a
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/adler32.o adler32.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/crc32.o crc32.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/deflate.o deflate.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/infback.o infback.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inffast.o inffast.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inflate.o inflate.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inftrees.o inftrees.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/trees.o trees.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/zutil.o zutil.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/compress.o compress.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/uncompr.o uncompr.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzclose.o gzclose.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzlib.o gzlib.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzread.o gzread.c
arm-none-linux-gnueabi-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzwrite.o gzwrite.c
arm-none-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.11 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc
rm -f libz.so libz.so.1
ln -s libz.so.1.2.11 libz.so
ln -s libz.so.1.2.11 libz.so.1
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o -L. libz.so.1.2.11
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o -L. libz.so.1.2.11
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o -L. libz.a
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c
arm-none-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o -L. libz.a
linux:zlib-1.2.11$
  1. 安装zlib
linux:zlib-1.2.11$ make install
rm -f /home/ubuntu16/mplayer/lib/zlib//lib/libz.a
cp libz.a /home/ubuntu16/mplayer/lib/zlib//lib
chmod 644 /home/ubuntu16/mplayer/lib/zlib//lib/libz.a
cp libz.so.1.2.11 /home/ubuntu16/mplayer/lib/zlib//lib
chmod 755 /home/ubuntu16/mplayer/lib/zlib//lib/libz.so.1.2.11
rm -f /home/ubuntu16/mplayer/lib/zlib//share/man/man3/zlib.3
cp zlib.3 /home/ubuntu16/mplayer/lib/zlib//share/man/man3
chmod 644 /home/ubuntu16/mplayer/lib/zlib//share/man/man3/zlib.3
rm -f /home/ubuntu16/mplayer/lib/zlib//lib/pkgconfig/zlib.pc
cp zlib.pc /home/ubuntu16/mplayer/lib/zlib//lib/pkgconfig
chmod 644 /home/ubuntu16/mplayer/lib/zlib//lib/pkgconfig/zlib.pc
rm -f /home/ubuntu16/mplayer/lib/zlib//include/zlib.h /home/ubuntu16/mplayer/lib/zlib//include/zconf.h
cp zlib.h zconf.h /home/ubuntu16/mplayer/lib/zlib//include
chmod 644 /home/ubuntu16/mplayer/lib/zlib//include/zlib.h /home/ubuntu16/mplayer/lib/zlib//include/zconf.h
linux:zlib-1.2.11$

2.2 alsa-lib

创建/usr/local/mplayer文件夹

linux:zlib-1.2.11$ sudo mkdir /usr/local/mplayer
[sudo] password for ubuntu16:
linux:zlib-1.2.11$ ls /usr/local/mplayer
linux:zlib-1.2.11$

以下操作所在的路径是:

/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2
  1. 配置alsa-lib
./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc --enable-shared --disable-python --prefix=/usr/local/mplayer

结果log

config.status: creating modules/Makefile
config.status: creating modules/mixer/Makefile
config.status: creating modules/mixer/simple/Makefile
config.status: creating alsalisp/Makefile
config.status: creating aserver/Makefile
config.status: creating test/Makefile
config.status: creating test/lsb/Makefile
config.status: creating utils/Makefile
config.status: creating utils/alsa-lib.spec
config.status: creating utils/alsa.pc
config.status: creating utils/alsa-topology.pc
config.status: creating include/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
Creating asoundlib.h...
  1. 编译
make

编译时会报下面的错误

timer_hw.c: In function 'snd_timer_hw_open':
timer_hw.c:249:17: error: '__kernel_long_t' undeclared (first use in this function)

解决方法:
在timer_local.h中增加如下代码:

#ifndef __kernel_long_t
typedef long        __kernel_long_t;
typedef unsigned long    __kernel_ulong_t;
#endif

再次编译,结果如下:

make[1]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/aserver'
Making all in test
make[1]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/test'
Making all in .
make[2]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/test'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/test'
Making all in lsb
make[2]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/test/lsb'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/test/lsb'
make[1]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/test'
Making all in utils
make[1]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/utils'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/utils'
make[1]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2'
linux:alsa-lib-1.2.2$
  1. 安装
    切换到root用户,导入环境变量。
su root
root@linux:/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2# export PATH=/opt/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/:$PATH

安装

make install

结果Log:

Making install in utils
make[1]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/utils'
make[2]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/utils'
make[2]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/usr/local/mplayer/share/aclocal'
 /usr/bin/install -c -m 644 alsa.m4 '/usr/local/mplayer/share/aclocal'
 /bin/mkdir -p '/usr/local/mplayer/lib/pkgconfig'
 /usr/bin/install -c -m 644 alsa.pc alsa-topology.pc '/usr/local/mplayer/lib/pkgconfig'
make[2]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/utils'
make[1]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2/utils'
make[1]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2'
make[2]: Entering directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2'
make[1]: Leaving directory '/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2'
root@linux:/home/ubuntu16/mplayer/alsa-lib/alsa-lib-1.2.2#

2.3 MPlayer

  1. 配置 创建配置脚本
#!/bin/sh 
./configure \
 --enable-cross-compile --prefix=/usr/local/mplayer \
 --cc=arm-none-linux-gnueabi-gcc  --ar=arm-none-linux-gnueabi-ar  --as=arm-none-linux-gnueabi-as \
 --ranlib=arm-none-linux-gnueabi-ranlib \
 --target=arm-armv7-linux \
 --prefix=./build \
 --enable-alsa \
 --extra-cflags="-I/home/ubuntu16/mplayer/lib/zlib/include -I/usr/local/mplayer/include/" \
 --extra-ldflags="-L/home/ubuntu16/mplayer/lib/zlib/lib -L/usr/local/mplayer/lib -lasound" \
 --enable-ass \
 --host-cc=gcc \
 --enable-fbdev --disable-dvdread \
 --disable-dvdnav --disable-jpeg --disable-tga \
 --disable-pnm --disable-tv --disable-ivtv \
 --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 \
 --disable-png  2>&1 |tee logfile

执行cfg.sh,结果log:

'make' will now compile MPlayer and 'make install' will install it.
Note: On non-Linux systems you might need to use 'gmake' instead of 'make'.

NOTE: Win32 codec DLLs are not supported on your CPU (arm) or your
operating system (armv7). You may encounter a few files that cannot
be played due to missing open source video/audio codec support.

Check config.log if you wonder why an autodetection failed (make sure
development headers/packages are installed).

NOTE: The --enable-* parameters unconditionally force options on, completely
skipping autodetection. This behavior is unlike what you may be used to from
autoconf-based configure scripts that can decide to override you. This greater
level of control comes at a price. You may have to provide the correct compiler
and linker flags yourself.
If you used one of these options (except --enable-menu and similar ones that
turn on internal features) and experience a compilation or linking failure,
make sure you have passed the necessary compiler/linker flags to configure.

If you suspect a bug, please read DOCS/HTML/en/bugreports.html.

linux:MPlayer-1.4$
  1. 编译
make

编译错误:

./libavcodec/error_resilience.h:23:23: fatal error: stdatomic.h: No such file or directory

交叉编译工具链4.6版本低。

解决办法:交叉编译工具链所限制,换MPlayer 1.3

查看编译出来的MPlayer。

3. 验证

3.1 拷贝库文件

以上文件拷贝到目标文件系统的/usr/lib/ 目录下

linux:zlib$ ls
include  lib  share
linux:zlib$ cp -rfa lib/ /home/ubuntu16/itop4412_rootfs/system/usr/
linux:zlib$ pwd
/home/ubuntu16/mplayer/lib/zlib
linux:zlib$

3.2 拷贝mplayer

在MPlayer1.3根目录下有mplayer文件

3.3 拷贝alsa-lib

linux:zlib$ sudo cp /usr/local/mplayer/lib/libasound.so.2.0.0 /home/ubuntu16/itop4412_rootfs/system/lib/

创建软连接

linux:system$ cd usr/lib/
linux:lib$ ls
libasound.so.2.0.0  libz.a  libz.so  libz.so.1  libz.so.1.2.11  pkgconfig
linux:lib$ ln -s libasound.so.2.0.0 libasound.so.2
linux:lib$ ll
total 3296
drwxrwxr-x 3 ubuntu16 ubuntu16    4096 11月  3 09:16 ./
drwxrwxrwx 6 ubuntu16 ubuntu16    4096 11月  3 08:52 ../
lrwxrwxrwx 1 ubuntu16 ubuntu16      18 11月  3 09:16 libasound.so.2 -> libasound.so.2.0.0*
-rwxr-xr-x 1 ubuntu16 ubuntu16 3135672 11月  3 09:16 libasound.so.2.0.0*
-rw-r--r-- 1 ubuntu16 ubuntu16  108578 11月  2 18:45 libz.a
lrwxrwxrwx 1 ubuntu16 ubuntu16      14 11月  2 18:45 libz.so -> libz.so.1.2.11*
lrwxrwxrwx 1 ubuntu16 ubuntu16      14 11月  2 18:45 libz.so.1 -> libz.so.1.2.11*
-rwxr-xr-x 1 ubuntu16 ubuntu16  110891 11月  2 18:45 libz.so.1.2.11*
drwxrwxr-x 2 ubuntu16 ubuntu16    4096 11月  2 18:45 pkgconfig/
linux:lib$ pwd
/home/ubuntu16/itop4412_rootfs/system/usr/lib
linux:lib$

/usr/local

接下来把 /usr/local/目录下的 整个mplayer目录 拷贝到 开发板的/usr/local/

linux:zlib$ mkdir -p /home/ubuntu16/itop4412_rootfs/system/usr/local
linux:zlib$
linux:zlib$
linux:zlib$ sudo cp /usr/local/mplayer/
bin/     include/ lib/     share/
linux:zlib$ sudo cp /usr/local/mplayer/ -raf /home/ubuntu16/itop4412_rootfs/system/usr/local
linux:zlib$ ls /home/ubuntu16/itop4412_rootfs/system/usr/local
mplayer

上板验证

mplayer -vo fbdev2 demo.mp4

OK

[root@iTOP-4412]# mplayer -vo fbdev2 demo.mp4
MPlayer 1.3.0-4.6.2 (C) 2000-2016 MPlayer Team

Playing demo.mp4.
libavformat version 57.25.100 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xbe8050]Protocol name not provided, cannot determine if input is local or a network protocol, buffers and access patterns cannot be configured optimally without knowing the protocol
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang und
VIDEO:  [H264]  1416x858  24bpp  30.000 fps  1160.9 kbps (141.7 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 57.24.102 (internal)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Clip info:
 major_brand: mp42
 minor_version: 512
 compatible_brands: isomiso2avc1mp41
 creation_time: 2019-01-22 00:00:35
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, floatle, 2.1 kbit/0.07% (ratio: 258->352800)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
[AO OSS] audio_setup: Can'
t open audio device /dev/dsp: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:767:(parse_card) cannot find card '0'
[AO_ALSA] alsa-lib: conf.c:4693:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:392:(snd_func_concat) error evaluating strings
[AO_ALSA] alsa-lib: conf.c:4693:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:1246:(snd_func_refer) error evaluating name
[AO_ALSA] alsa-lib: conf.c:4693:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[AO_ALSA] alsa-lib: conf.c:5181:(snd_config_expand) Evaluate error: No such file or directory
[AO_ALSA] alsa-lib: pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM default
[AO_ALSA] Playback open error: No such file or directory
DVB card number must be between 1 and 4
AO: [null] 44100Hz 2ch floatle (4 bytes per sample)
Starting playback...
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is undefined - no prescaling applied.
[swscaler @ 0xe2f400]bicubic scaler, from yuv420p to bgra using C
[swscaler @ 0xe2f400]No accelerated colorspace conversion found from yuv420p to bgra.
[swscaler @ 0xe2f400]using unscaled yuv420p -> bgra special converter
VO: [fbdev2] 1416x858 => 1416x858 BGRA
A:   3.6 V:   1.6 A-V:  2.015 ct:  0.040   0/  0 125% 95%  8.4% 50 0


           ************************************************
           **** Your system is too SLOW to play this!  ****
           ************************************************

Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver
  - Try -ao sdl or use the OSS emulation of ALSA.
  - Experiment with different values for -autosync, 30 is a good start.
- Slow video output
  - Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
  - Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
    e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
  - Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
  - Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
  - Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.

A:  15.0 V:  15.0 A-V:  0.023 ct:  0.839   0/  0 112% 93%  3.7% 209 0


Exiting... (End of file)
[root@iTOP-4412]#


end



一口Linux 


关注,回复【1024】海量Linux资料赠送

精彩文章合集

文章推荐

【专辑】ARM
【专辑】粉丝问答
【专辑】所有原创
专辑linux入门
专辑计算机网络
专辑Linux驱动
【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式所有知识点-思维导图


点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看

一口Linux 写点代码,写点人生!
评论
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 113浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 85浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 78浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 68浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 73浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 88浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 173浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 66浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 75浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 56浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 63浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 99浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 40浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 86浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 109浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦