制作buildroot根文件系统(三):使用mplayer播放视频¶
** 本小节的文章为网友投稿,仅供参考 **
- 主机环境:ubuntu16.04-64bit 
- 硬件版本:野火imx6ull-pro emmc 
一、制作根文件系统¶
详细的制作方法请参考:制作buildroot根文件系统(一):根文件系统和Qt5例程
本篇只介绍 buildroot 中关于 mplayer 的配置。
1.关于 mplayer¶
mplayer 是一款开源多媒体播放器,基于命令行界面,以GNU通用公共许可证发布。可在各主流作业系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。
2.配置buildroot¶
- 进入配置菜单 
cd buildroot-2017.08.1/
make menuconfig
- 关键配置截图 
选中 mplayer:

选中 alsa-lib,否则没声音:

- 使用现成的配置 
由于细节无法全面展现,新手可以使用我提供的基础配置,在基础配置增加选项。
点这里查看下载:my-imx6u-buildroot2017-v1.0.config
把我的配置文件复制到buildroot目录,并改名为.config。
cd buildroot-2017.08.1/
cp my-imx6u-buildroot2017-v1.0.config .config
4.生成的根文件系统和工具链位置¶
生成根文件系统位置:
buildroot-2017.08.1/output/images/rootfs.tar
制作好的工具链位置:
# arm-gcc
buildroot-2017.08.1/output/host/bin/arm-buildroot-linux-gnueabihf-
# qmake
buildroot-2017.08.1/output/build/qt5base-5.9.1/bin/qmake
有了ARMGCC工具链就可以编译linux,uboot,和你的应用程序等,本篇不涉及这些,不再展开介绍。
二、测试根文件系统¶
开发板用的野火出厂固件,这里只替换根文件系统。
使用NFS挂载buildroot根文件系统来测试,操作方法如下 (里面用到的IP和相关目录,需要改成你的~):
1.解压根文件系统到NFS目录内¶
cd buildroot-2017.08.1/output/images/
sudo tar xvf rootfs.tar -C /nfsroot/imx6ull-nfs/buildroot2017-v1/
sync
2.开发板从NFS启动根文件系统¶
进入uboot命令行设置启动参数:
- 设置bootargs 
setenv bootargs "console=${console},${baudrate} root=/dev/nfs ip=192.168.2.102:192.168.2.119:192.168.2.1:255.255.255.0:imx6ull:eth0:off rootwait rw nfsroot=192.168.2.119:/nfsroot/imx6ull-nfs/buildroot2017-v1 consoleblank=0 init=/sbin/init";saveenv
- 设置bootcmd,设置后开发板自动从NFS启动 
setenv bootcmd "mmc dev 1;mmc dev 1; mmc rescan;fatload mmc 1 0x80800000 zImage;fatload mmc 1 0x83000000 imx6ull-14x14-evk.dtb;bootz 0x80800000 - 0x83000000"
到这里,一切正常的话,系统就启动了!
Welcome to Buildroot
buildroot login: root
# cd /
# ls
audiodump.wav  lib32          proc           test.mp4       ym.mp4
bin            linuxrc        root           testvideo.avi  yzxd.wav
dev            media          run            tmp
etc            mnt            sbin           usr
lib            opt            sys            var
#
# mplayer
MPlayer 1.3.0-6.4.0 (C) 2000-2016 MPlayer Team
Usage:   mplayer [options] [url|path/]filename
Basic options: (complete list in the man page)
 -vo <drv>        select video output driver ('-vo help' for a list)
 -ao <drv>        select audio output driver ('-ao help' for a list)
 -alang/-slang    select DVD audio/subtitle language (by 2-char country code)
 -ss <position>   seek to given (seconds or hh:mm:ss) position
 -nosound         do not play sound
 -fs              fullscreen playback (or -vm, -zoom, details in the man page)
 -x <x> -y <y>    set display resolution (for use with -vm or -zoom)
 -sub <file>      specify subtitle file to use (also see -subfps, -subdelay)
 -playlist <file> specify playlist file
 -vid x -aid y    select video (x) and audio (y) stream to play
 -fps x -srate y  change video (x fps) and audio (y Hz) rate
 -pp <quality>    enable postprocessing filter (details in the man page)
 -framedrop       enable frame dropping (for slow machines)
Basic keys: (complete list in the man page, also check input.conf)
 <-  or  ->       seek backward/forward 10 seconds
 down or up       seek backward/forward  1 minute
 pgdown or pgup   seek backward/forward 10 minutes
 < or >           step backward/forward in playlist
 p or SPACE       pause movie (press any key to continue)
 q or ESC         stop playing and quit program
 + or -           adjust audio delay by +/- 0.1 second
 o                cycle OSD mode:  none / seekbar / seekbar + timer
 * or /           increase or decrease PCM volume
 x or z           adjust subtitle delay by +/- 0.1 second
 r or t           adjust subtitle position up/down, also see -vf expand
 * * * SEE THE MAN PAGE FOR DETAILS, FURTHER (ADVANCED) OPTIONS AND KEYS * * *
#
三、测试 mplayer 播放视频¶
1.查看 mplayer 的音频输出¶
查看到alsa,说明音频输出是正常的,否则播放时可能没声音。
# mplayer -ao help
MPlayer 1.3.0-6.4.0 (C) 2000-2016 MPlayer Team
Available audio output drivers:
        oss     OSS/ioctl audio output
        alsa    ALSA-0.9.x-1.x audio output
        mpegpes DVB audio output
        v4l2    V4L2 MPEG Audio Decoder output
        null    Null audio output
        pcm     RAW PCM/WAVE file writer audio output
#
2.使用 tinymix 配置声卡¶
系统启动后,声卡默认是关闭的,需要配置一下通道开关、音量等。
关于 tinyalsa 的相关介绍在这里:制作buildroot根文件系统(二):使用tinyalsa播放音频
- 经过测试,至少设置下面三项: 
设置耳机音量
tinymix set 10 75
右声道
tinymix set 43 1
左声道
tinymix set 46 1
3.使用 mplayer 播放视频¶
准备一段mp4或avi格式的视频,复制到根文件系统。
- 播放指令 
mplayer -x 800 -y 480 -zoom -framedrop xxx.mp4
- 播放测试: 
# ls
audiodump.wav  lib32          proc           test.mp4       ym.mp4
bin            linuxrc        root           testvideo.avi  yzxd.wav
dev            media          run            tmp
etc            mnt            sbin           usr
lib            opt            sys            var
#
# tinymix set 10 75
# tinymix set 43 1
# tinymix set 46 1
#
# mplayer -x 800 -y 480 -zoom -framedrop test.mp4
MPlayer 1.3.0-6.4.0 (C) 2000-2016 MPlayer Team
Playing test.mp4.
libavformat version 57.25.100 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x750618]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]  480x272  24bpp  30.000 fps  186.1 kbps (22.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: isom
 minor_version: 512
 compatible_brands: isomiso2avc1mp41
 encoder: Lavf56.25.101
 copyright: jid:17043011
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 1 ch, floatle, 16.0 kbit/1.13% (ratio: 2000->176400)
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] 44100Hz 1ch floatle (4 bytes per sample)
Starting playback...
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
[swscaler @ 0x9945d8]bicubic scaler, from yuv420p to rgb565le using C
VO: [fbdev] 800x480 => 800x480 BGR 16-bit  [zoom]
A:   4.5 V:   3.0 A-V:  1.515 ct:  0.303   0/  0 14% 80%  1.8% 50 0 $<50>
           ************************************************
           **** 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:  48.1 V:  33.4 A-V: 14.709 ct:  3.340   0/  0 11% 80%  1.5% 538 0 $<50>
MPlayer interrupted by signal 2 in module: filter video
A:  48.2 V:  33.4 A-V: 14.735 ct:  3.343   0/  0 11% 80%  1.5% 538 0 $<50>
Exiting... (Quit)
# 
插上耳机欣赏视频吧:

本篇完。