1、网上搜索mplayer,获取其源码,本实验获取的是madplay_yjaz_20150613.tar.bz2版本
2、解压文件,进入目录 cd mplayer-1.1.1-yjaz
ls
libmad-0.15.1b.tar.gzmk.sh MPlayer-1.1.1.tar.xz test_file
3、./mk.sh,这个mk.sh是一键安装脚本,内容如下:
#!/bin/sh
#rootfs 开发板根文件系统路径,根据自己实际情况修改
#mplayer_dir:mplayer 安装路径, 根据自己需要修改,默认安装在开发板根文件系统/home/
#libmad_dir: libmad 安装路径,一般不用修改
rootfs=/root/work/root_nfs/
mplayer_dir=${rootfs}/home/
libmad_dir=$PWD/install_dir/
if [ ! -d ${mplayer_dir} ]; then
mkdir ${mplayer_dir} -p
fi
if [ ! -d ${libmad_dir} ]; then
mkdir ${libmad_dir} -p
fi
#####################################################################
###编译安装 libmad 解码库
#####################################################################
#1.解压 libmad,进入到解压好的目录
tar -xf libmad-0.15.1b.tar.gz
cd libmad-0.15.1b
#2.配置 libmad
./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging
--prefix=${libmad_dir}
#3.修改 Makefile
sed -i 's/-fforce-mem/ /g' Makefile
#4.编译,安装 libmad
make -j16
make install -j16
#####################################################################
###编译安装 Mplayer
#####################################################################
#1.解压 MPlayer-1.1.1.tar.xz ,进入到解压好的目录
cd ../
tar -xf MPlayer-1.1.1.tar.xz
cd MPlayer-1.1.1/
#2.配置 MPlayer
./configure --prefix=$PWD/mplayer_installdir --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux
--enable-cross-compile --enable-mad --disable-mp3lib --disable-gui --disable-menu --disable-gtk1 --disable-x11
--yasm="" --extra-cflags=-I${libmad_dir}/include --extra-ldflags=-L${libmad_dir}/lib/ 2>&1 |tee logfile
#3.修改 motion_comp_arm_s.S, motion_comp_arm_s.S , config.mak
#sed '1 i#ifndef HAVE_PLD' -i libavcodec/armv4l/dsputil_arm_s.S
#sed '2 i.macro pld reg' -i libavcodec/armv4l/dsputil_arm_s.S
#sed '3 i.endm' -i libavcodec/armv4l/dsputil_arm_s.S
#sed '4 i#endif' -i libavcodec/armv4l/dsputil_arm_s.S
#sed '1 i#ifndef HAVE_PLD' -i libmpeg2/motion_comp_arm_s.S
#sed '2 i.macro pld reg' -i libmpeg2/motion_comp_arm_s.S
#sed '3 i.endm' -i libmpeg2/motion_comp_arm_s.S
#sed '4 i#endif' -i libmpeg2/motion_comp_arm_s.S
#sed -i 's/755 $(INSTALLSTRIP)/755/g' Makefile
#3.修改 config.mak
sed -i 's/INSTALLSTRIP = -s/INSTALLSTRIP = /g' config.mak
#4.编译,安装 Mplayer
make -j16
make install -j16
#./mplayer -vf scale=240:320
echo "#!/bin/sh" > $PWD/mplayer_installdir/run.sh
echo "# world in the console window" >> $PWD/mplayer_installdir/run.sh
echo "if [ ! -d /dev/sound/ ]; then" >> $PWD/mplayer_installdir/run.sh
echo " mkdir -p /dev/sound/" >> $PWD/mplayer_installdir/run.sh
echo " ln -s /dev/dsp /dev/sound/dsp " >> $PWD/mplayer_installdir/run.sh
echo "fi " >> $PWD/mplayer_installdir/run.sh
echo " bin/mplayer -ac mad Video_2014-08-05_080235_UART.wmv -zoom -x 800 -y 480" >>
$PWD/mplayer_installdir/run.sh
chmod +x $PWD/mplayer_installdir/run.sh
#5.检测开发板根文件系统是否存在/sound/目录,不存在则创建
if [ ! -d $rootfs/dev/sound/ ]; then
mkdir $rootfs/dev/sound/ -p
fi
#复制测试视频播放器到跟文件系统中
cp $PWD/mplayer_installdir/ ${mplayer_dir} -r
#复制测试视频文件到跟文件系统中
cd ../
cp test_file/* ${mplayer_dir}/mplayer_installdir/
#这一步是因为 mplayer 需要 Libncurses, libpng, libasound 动态库,在编译中可以找到
cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/* ${rootfs} -rf
这样就可以了。
可能会没有声音,这个需要安装音频驱动,本实验用的是tiny4412 WM8960的音频。
复制两个文件到板子根文件系统的lib/modules/3.5.0-FriendlyARM/sound下,这两个文件为snd-soc-tiny4412-wm8960.ko snd-soc-wm8960.ko,即
这两个文件的获取,网上百度下应该能够获,然后执行
insmod /lib/modules/3.5.0-FriendlyARM/sound/snd-soc-tiny4412-wm8960.ko
insmod /lib/modules/3.5.0-FriendlyARM/sound/snd-soc-wm8960.ko
复制fa_codec_ctrl文件到/bin目录下,fa_codec_ctrl.tar.bz2这个东西百度应该能获取。
然后执行
mkdir /dev/snd /dev/sound
mknod /dev/snd/controlC0 c 116 0
mknod /dev/snd/pcmC0D0c c 116 24
mknod /dev/sound/dsp c 14 3
mknod /dev/snd/pcmC0D0p c 116 16
mknod /dev/snd/timer c 116 33
mknod /dev/sound/audio c 14 4
mknod /dev/sound/dsp c 14 3
mknod /dev/sound/mixer c 14 0
下面这个不用执行,等待一下就好
#要休眠一下,给等待驱动安装完成
#sleep 1
#/bin/fa_codec_ctrl mini210
这时候把cd mplayer-1.1.1-yjaz下的bin目录中madplay文件复制到自己开发板根目录的/bin目录下,修改权限使之具有可执行权限
,改权限方法: chmod 0777 madplay,。(/bin目录下一般是我们命令行的命令,这一步就是把madplay生成的可执行命令复制到自己板子跟目录下
,方便我们在执行命令时可用不添加路径,你也可以把madplay/bin目录下其他命令拷贝到自己开发板根目录下/bin目录中,添加可执行权限就可以了)
现在可以打开mplayer。
打开方法:
运行madplay 文件名.mp3
为了能够在播 放文件时,也可以输入命令,可以这么打开音频文件 madplay 文件名 < /dev/null &
madplay还有其他控制参数,部分如下:
1)播放普通文件
$ mplayer -zoom -x 800 -y 480 xxx.mp3
$ mplayer -zoom -x 800 -y 480 xxx.avi
2)播放管道文件
$ mkfifo /tmp/media // 建立管道文件
$ cat zuixuanminzufeng.mp4 > /tmp/media & // 把媒体文件数据写入管道一端
$ bin/mplayer -zoom -x 800 -y 480 /tmp/media -cache 3000 // mplayer在缓充3M数据后开始播放
注意必须建立缓充,以支持读取数据时的小范围索引
以此类推,可以实现流媒体的播放(比如从服务上收到媒体数据写入管道一端,另一端用mplayer读取并播放)
3)slave模式播放
slave模式时 Mplayer 不再按受按键控制,可使用管道向mplayer发送控制命令
它常用于mplayer被另一程序调用,在后台播放的情况
$ mkfifo /tmp/cmd
$ bin/mplayer zuixuanminzufeng.mp4 -zoom -x 800 -y 480 -quiet -input file=/tmp/cmd < /dev/null &
$ echo "pause" > /tmp/cmd
OK:
通过键盘输入命令控制播放
mplayer zuixuanminzufeng.mp4 -zoom -x 800 -y 480 -quiet -slave
通过管道写入命令控制播放
mplayer zuixuanminzufeng.mp4 -zoom -x 800 -y 480 -quiet -input file=/tmp/cmd
可以通过键盘和管道输入命令控制播放
mplayer zuixuanminzufeng.mp4 -zoom -x 800 -y 480 -quiet -input file=/tmp/cmd -slave
原始比例,居中播放,并且自动选择解码器,解码速度快
bin/mplayer zuixuanminzufeng.mp4 -cache 8042 -demuxer +44 -lavdopts fast:threads=2 -geometry 50%:50%
说明:
< /dev/null
< /dev/null 作为标准输入,会直接发现是文件末尾结束.这是POSIX标准
这里有详解 http://bbs.chinaunix.net/thread-187436-1-1.html
http://bbs.chinaunix.net/thread-3567653-1-1.html
X86,arm测试:
截图:
mplayer zuixuanminzufeng.mp4 -vf screenshot -zoom -x 800 -y 480 -quiet -slave
screenshot
---------------------------------------------------
http://blog.csdn.net/xdw1985829/article/details/6675756
一、启动播放时参数:
-fs 表示居中
在终端下敲入:./mplayer 提示各种使用帮助信息
-vo <drv[:dev]> 选择视频输出模式和设备(用'-vo help'查看列表)
-ao <drv[:dev]> 选择音频输出模式和设备(用'-ao help'查看列表)
-ss <timepos> 寻找指定的(多少秒或hh:mm:ss)位置
-nosound 不播放声音
-fs -vm -zoom 全屏播放选项(fullscr,vidmode chg,softw.scale)
-x <x> -y <y> 设置播放的分辨率(用于改变vidmode或软件缩放) --- 但是不居中
-sub <file> 指定使用的字幕文件(参见-subfps, -subdelay)
-playlist <file> 指定使用播放列表文件
-vid x -aid y 选择用于播放的视频(x)和音频(y)流
-fps x -srate y 改变视频(x fps)和音频(y Hz)率
-pp <quality> 使用后期处理滤镜(详细内容参见manpage/docs)
-framedrop 使用 frame-dropping (用于慢机器)
二、主模式播放时控制键
基本控制键: (完整的列表参见manpage, 同时也要检查一下 input.conf)
<- or -> 向后/向前搜索10秒
up or down 向后/向前搜索1分钟
pgup or pgdown 向后/向前搜索10分钟
< or > 跳到播放列表中的前一首/下一首
p or SPACE 暂停播放(按任意键继续)
q or ESC 停止播放并推出
+ or - 调整音频延迟+/-0.1秒
o 循环OSD模式: none/seekbar/seekbar+timer
* or / 增加或减少pcm音量
z or x 调整字幕延迟+/-0.1秒
r or t 上/下调整字幕位置, 参见-vf expand!
三、mplayer的使用实例:
#mplayer filename(PC版)
#./mplayer -ac mad filename(ARM版)
//即可播放音频,经测试过可播放 .mp3 .wmv .mgp .mp4等格式的音视频
#./mplayer -ss 10
//从第10s开始播放
#./mplayer -ss 00:01:00
//从第1分钟开始播放
#./mplayer -fs -zoom -x 160 -y 120
//以160*120大小居中播放视频
//-fs 配合-zoom 居中播放, -zoom -x 宽度 -y 高度 指定播放窗口的宽度与高度
#mplayer filename -caceh 8192
//-caceh 8192 设置缓存为8M
#./mplayer -loop 5 file
//-loop 5 让这个文件循环播放5遍,如果为0就表示不停的播放。
#ls /video/tom/*.avi > tom.lst
//制作一个文件播放列表
#mplayer -playerlist tom.lst -shuffle
//-playerlist 指定播放列表、-shuffle 指定随机播放
#./mplayer -ac mad -vop rotate=1 matrix.mpg 旋转90度
loadfile /home/mp3/yuandeyirenxin.mp3
将音频输出为 wav 文件
你可以将视频文件中的音频部分输出为 wav 文件:
mplayer -ao pcm <somefile>
这将输出名为 audiodump.wav 的音频文件。你也可以为输出的 wav 文件指定名称:
mplayer -ao pcm:file=<filename>.wav <somefile>
将电影输出为系列图片
MPlayer 也能将电影输出为一系列的图片:
mplayer -vo jpeg <somefile>
注意:上面的命令将产生数量巨大的 jpeg 文件。输出的 jpeg 文件名看起来像这样:00000001.jpg、00000002.jpg、00000003.jpg 等等。
你也可以输出其他的格式。只需将命令中的 jpeg 替换成 ppm、png、tga 等
播放流媒体
如果 MPlayer 无法自动找到播放列表或直接的流媒体文件,你可以尝试使用 -playlist 选项:
mplayer -playlist <file or url>
同时你也可以设置较大的缓存:
mplayer -cache 8192 -playlist <file or url>
指定缓存大小的单位是 KB,上面的命令将允许 MPlayer 使用 8 MB 缓存。你可以使用 -cache-min 选项来改变 MPlayer 占用缓存的百分比:
mplayer -cache 8192 -cache-min 50 -playlist <file or url>
循环播放
如果你想让媒体文件循环播放,可以使用 -loop 选项:
mplayer -loop 3 <somefile>
上面的命令将播放 <somefile> 3 次,然后才退出。
mplayer -loop 0 <somefile>
上面的命令将永远重复播放 <somefile>。
改变播放速度
你可以使用 -speed 选项来改变 MPlayer 播放媒体文件的速度。值为 1.0,意味着正常速度;0.5 意味着慢两倍;2.0 意味着快两倍。像这样指定选项:
mplayer -speed 2.0 <somefile>
在慢系统上使用 MPlayer
MPlayer 允许在旧的或慢的系统上使用低 CPU 功率来播放视频文件。你可以使用 -framedrop 选项:
mplayer -framedrop <somefile>
当播放 MP3 或 OGG Vorbis 文件时,你可能感受到一定的缓冲,这将影响你的音乐体验。那样的话,你可以尝试使用 libmad(MP3)或 Tremor(OGG Vorbis)音频解码器。你可以这样来检测它们:
对于 MP3:
mplayer -ac help | grep mad
如果上面的命令返回的结果像这样:
mad libmad working libMAD MPEG layer 1-2-3 [libmad]
那么你可以使用 libmad 播放 MP3:
mplayer -ac mad <somefile>
在 OGG 的情况中,你可以使用同样的技巧来检测 tremor 音频解码器是否可用:
mplayer -ac help | grep tremor
播放 DVD
虽然 MPlayer 不支持 DVD 菜单,但是却能够播放 DVD。你可以这样播放 DVD:
mplayer dvd://<titlenumber>
你需要使用实际的数字来替换 <titlenumber>,如 1、2、3 等。
使用字幕
当播放电影文件时,你可以指定字幕文件:
mplayer -sub <somesubtitlefile> <somefile>
在播放 DVD 电影时,你也可以通过指定语言代码来使用字幕:
mplayer dvd://<titlenumber> -slang nl,en
这样,MPlayer 就会优先使用荷兰语字幕,如果该语言不可用,则再使用英语字幕。
纠正错误的音频/视频同步
有些视频文件(主要是 flv 文件)由于编码的问题,会给 MPlayer 带来音频/视频同步的麻烦。
这有两种可能情况:
1)MPlayer 会尝试修复,但同步问题却更遭。
2)MPlayer 会尝试修复那些正确的,因此没有必要同步。
对于第一种情况,你应当让 MPlayer 努力修复同步问题:
mplayer -autosync 30 -mc 2.0 <somefile>
而对于第二种情况,你不应当允许 MPlayer 去修复同步问题:
mplayer -autosync 0 -mc 0 <somefile>
将上述命令中的 autosync 设置为正值就会让 MPlayer 逐渐调整音频/视频的同步。值越高,MPlayer 越快地修复它。mc 选项指定 MPlayer 纠正每帧要多少秒。值越高,MPlayer 越认为接近修复音频/视频同步。设置为 0 则阻止 MPlayer 修复。
mplayer获取影片信息
mplayer -identify movie-filename -nosound -vc dummy -vo null
从所有输出中可以grep到如下信息:
- filetype: ASF file format detected.
- dimensions and format: VIDEO: [MP43] 320×240 24bpp 1000.000 fps 0.0 kbps ( 0.0 kbyte/s)
- video format: ID_VIDEO_FORMAT=MP43
- width (dimensions): ID_VIDEO_WIDTH=320
- height (dimensions): ID_VIDEO_HEIGHT=240
- length in seconds: ID_LENGTH=98.00
播放文件
使用 MPlayer 播放媒体文件最简单的方式是:
mplayer <somefile>
MPlayer 会自动检测文件的类型并加以播放,如果是音频文件,则会在命令行中显示该播放文件的状态信息;而假如是视频文件的话,则会打开一个新的播放窗口。
倒退与快进
在播放文件的时候,你可以通过以下三组快捷键来对播放进程进行倒退与快进操作:
?左方向键和右方向键:分别执行倒退 10 秒和快进 10 秒操作
?下方向键和上方向键:分别执行倒退 1 分钟和快进 1 分钟操作
?下翻页键和上翻页键:分别执行倒退 10 分钟和快进 10 分钟操作
mencoder图片做成电影
#用当前目录中的所有JPEG文件创建DivX4文件:
mencoder /*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi
#用当前目录中的一些JPEG文件创建DivX4文件:
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi /*.jpg
#用当前目录中的所有JPEG文件创建Motion JPEG(MJPEG)文件:
mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi /*.jpg
#用当前目录中的所有PNG文件创建一个非压缩的文件:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o output.avi /*.png
简单用法:
mencoder *.jpg -mf on:fps=15 -o output.avi -ovc xvid
参考6 参考7
ffmpeg屏幕录像
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024×768 ~/test.avi
其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中。其他选项可查阅其说明文档。
如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。
你也可以重新调整视频尺寸大小,如:./ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi。
参考5
mplayer对video进行截屏 截图(wmv mpeg mov flv all works)
mplayer 78.mov -ss 1 -nosound -vo jpeg:outdir=./ -frames 2
我截的第一张图不知为何全部都是黑屏
参考4
转换为flv文件
mencoder NOW.wmv -ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 -srate 22050 -oac mp3lame -o NOW.flv
ffmpeg -i a.asf -ab 56 -ar 22050 -b 500 -r 15 -s 320×240 asf.flv
参考3
使用ffmpeg抓图
ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352×240 b.jpg
jpg: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352×240 -ss a.jpg //注意-ss就是要提取视频文件中指定时间的图像
jpg: ffmpeg -i asf.flv -y -f image2 -t 1 asf.jpg
gif: ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
参考3 参考2
如何合并几个视频片段
mencoder -oac copy -ovc copy -idx -o output.avi video1.avi video2.avi video3.avi
* 其中,-oac copy 选项告诉 mencoder 要正确拷贝音频流。而 -ovc copy 选项则是拷贝视频流。
* 如果在视频文件中没有找到索引的话,那么 -idx 选项会要求 mencoder 建立它。
* -o 选项指定输出文件的名称。
* 最后几个参数为需要合并的几个视频片段。
参考1