arm平臺移植mplayer

1、網上搜索mplayer,獲取其源碼,本實驗獲取的是madplay_yjaz_20150613.tar.bz2版本

2、解壓文件,進入目錄 cd mplayer-1.1.1-yjaz

ls

libmad-0.15.1b.tar.gz mk.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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章