USB wifi (360) : 如何從官網(wǎng)下載源碼進(jìn)行代碼移植、安裝相關(guān)無(wú)線工具、讓嵌入式設(shè)備支持WIFI。
任務(wù)1: 安裝mplayer播放器并學(xué)習(xí)使用方法
圖片格式、音樂(lè)文件(.mp3)、視頻文件(mp4)…….
學(xué)習(xí)文件編程: bmp圖片格式、JPG(jpeglib)。
視頻編碼解碼: ffmpeg庫(kù)。
Mplayer播放器: 源碼開(kāi)源,可以下載、可以更改….。 (X11)
??安裝libmad庫(kù)方法
1.?在linux系統(tǒng)目錄下創(chuàng)建libmad文件夾: mkdir /work/libmad -p
2.?將libmad源碼解壓到 /work/libmad目錄下:
[root@wbyq libmad-0.15.1b]# tar xvf /mnt/hgfs/linux-share-dir/libmad-0.15.1b.tar.gz |
3.?配置源碼,生成Makefile文件
[root@wbyq libmad-0.15.1b]# ./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-debugging --prefix=$PWD/_install |
4.?將Makefile文件第129行的-fforce-mem選項(xiàng)去掉
5.?編譯安裝
[root@wbyq libmad-0.15.1b]# make && make install |
6.?將生成的.so文件拷貝到開(kāi)發(fā)板的lib目錄下。
??安裝mplayer播放器
1.?在/work目錄下創(chuàng)建一個(gè)mplayer文件夾
2.?將源碼解壓到mplayer目錄下
3.?配置mplayer源碼生成Makefile文件
./configure --prefix=$PWD/_install --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-cross-compile --enable-mad --disable-gui --disable-menu --disable-x11 --yasm="" --extra-cflags=-I/work/libmad/libmad-0.15.1b/_install/include/ --extra-ldflags=-L/work/libmad/libmad-0.15.1b/_install/lib/ |
4.?編譯源碼: make
編譯成功之后會(huì)在當(dāng)前目錄下生成mplayer可執(zhí)行文件,將該可執(zhí)行文件拷貝到開(kāi)發(fā)板根文件系統(tǒng)的/bin目錄下即可。
5.?播放測(cè)試
[root@tiny4412 ]#mplayer -zoom -x 800 -y 480 /work/video_file/Video_2018-12-11.wmv |
??Mplayer播放器使用方式:
1.?主模式,運(yùn)行mplayer播放器,播放器將占用當(dāng)前的終端,在主模式下mplayer程序不能后臺(tái)運(yùn)行。
默認(rèn)從鍵盤(pán)上(表示輸入)獲取輸入信號(hào)對(duì)播放器進(jìn)行控制。
2.?從模式: 將mplayer播放器當(dāng)做子進(jìn)程啟動(dòng),父進(jìn)程可以通過(guò)管道與子進(jìn)程之間進(jìn)行通信。
進(jìn)程間通信: 無(wú)名管道/命名管道(FIFO)、消息隊(duì)列、內(nèi)存映射(mmap)、內(nèi)存共享、信號(hào)。
創(chuàng)建子進(jìn)程的函數(shù): fork函數(shù)。
??聲卡驅(qū)動(dòng)使用
![pYYBAGKMO06AFYEDAABno-3CUrE570.png](https://file.elecfans.com//web2/M00/45/5D/pYYBAGKMO06AFYEDAABno-3CUrE570.png)
將該壓縮包拷貝到開(kāi)發(fā)板根文件系統(tǒng)目錄下,解碼,運(yùn)行聲卡啟動(dòng)腳本。
??在開(kāi)發(fā)板上解壓: [root@tiny4412 ]#tar xvf /mnt/Tiny4412_SoundCard_wm8960.tar -C /work/
![poYBAGKMO0-AUi8rAAEPRQG1JvE963.png](https://file.elecfans.com//web2/M00/45/5D/poYBAGKMO0-AUi8rAAEPRQG1JvE963.png)
![pYYBAGKMO0-AWvXaAAC1jseZF64154.png](https://file.elecfans.com//web2/M00/45/5D/pYYBAGKMO0-AWvXaAAC1jseZF64154.png)
將耳機(jī)插在開(kāi)發(fā)板的音頻輸出口上即可聽(tīng)到聲音了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*
獲取標(biāo)準(zhǔn)輸入的數(shù)據(jù)、寫(xiě)給FIFO文件
*/
void *pthread_func(void *argv)
{
int fd=open("/mplayer_fifo",2);
if(fd<0)
{
printf("FIFO文件打開(kāi)失敗!\n");
pthread_exit(NULL); //結(jié)束當(dāng)前線程
}
char buff[100];
int len;
while(1)
{
printf("請(qǐng)輸入命令:");
fflush(stdin); //刷新緩沖區(qū)
fgets(buff,100,stdin); //從鍵盤(pán)上獲取數(shù)據(jù) get_percent_pos get_file_name
len=strlen(buff); // get_file_name [0~12] [13]='\n'
write(fd,buff,len); // get_file_name '\n'
memset(buff,0,100);
}
}
int main(int argc,char **argv)
{
int pid;
/*1. 創(chuàng)建無(wú)名管道*/
int fds[2];
pipe(fds);
/*2. 創(chuàng)建子進(jìn)程*/
pid=fork();
/*子進(jìn)程代碼: mplayer播放器*/
if(pid==0)
{
/*將子進(jìn)程的標(biāo)準(zhǔn)輸出重定向到管道寫(xiě)端*/
dup2(fds[1],1);
/*啟動(dòng)子進(jìn)程*/
execlp("mplayer","mplayer","-zoom","-x","800","-y","480","-slave","-quiet","-input","file=/mplayer_fifo","/work/video_file/Video_2018-12-11.wmv",NULL);
}
else /*父進(jìn)程*/
{
char buff[100];
int cnt=0;
/*創(chuàng)建新的線程: 從鍵盤(pán)上獲取輸入的數(shù)據(jù),寫(xiě)給播放器的FIFO文件*/
pthread_t threadID;
pthread_create(&threadID,NULL,pthread_func,NULL);
pthread_detach(threadID); //設(shè)置分離屬性
while(1)
{
/*從管道的讀端讀取數(shù)據(jù): 讀取就是mplayer播放器輸出的數(shù)據(jù)*/
cnt=read(fds[0],buff,100);
buff[cnt]='\0';
printf("播放器輸出的值=%s\n",buff);
}
}
return 0;
}
任務(wù)2:制作視頻廣告機(jī)
廣告機(jī)應(yīng)用場(chǎng)景: 公交站臺(tái)、地鐵車(chē)廂、銀行前臺(tái)大廳、高速公路、公園….
1.?有些廣告機(jī)只有視頻播放,沒(méi)有聲音。
2.?廣告機(jī)都支持網(wǎng)絡(luò)視頻文件更新---->文件更新使用現(xiàn)成的服務(wù)器: FTP服務(wù)器、NFS服務(wù)器。
(1)?如何判斷服務(wù)器上那些文件需要下載到本地? 通過(guò)shell腳本代碼或者使用C語(yǔ)言。
(2)?更新的時(shí)間一般是固定的: 20:00 23:00 …… 通過(guò)時(shí)間函數(shù)判斷時(shí)間是否到達(dá)。
(3)?在視頻問(wèn)好更新的時(shí)候,視頻文件需要停止播放,可以在屏幕上顯示提示(正在更新…..)。
3.?廣告機(jī)需要支持自動(dòng)播放,播放一個(gè)自動(dòng)切換下一個(gè)、循環(huán)播放。
調(diào)用讀目錄、循環(huán)遍歷目錄、得到視頻文件、mplayer播放器需要使用子進(jìn)程方式啟動(dòng)。
廣告機(jī): 音量調(diào)整、選擇視頻播放…….都不是廣告機(jī)的功能---是視頻播放器的功能。
![poYBAGKMO0-AeLV8AABwGfwDIe4766.png](https://file.elecfans.com//web2/M00/45/5D/poYBAGKMO0-AeLV8AABwGfwDIe4766.png)
-
嵌入式
+關(guān)注
關(guān)注
5094文章
19184瀏覽量
307900 -
播放器
+關(guān)注
關(guān)注
5文章
402瀏覽量
37538 -
Linux
+關(guān)注
關(guān)注
87文章
11350瀏覽量
210477 -
mplayer
+關(guān)注
關(guān)注
0文章
6瀏覽量
2504
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux驅(qū)動(dòng)開(kāi)發(fā)_mplayer播放器開(kāi)發(fā)
![<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>_<b class='flag-5'>mplayer</b><b class='flag-5'>播放器</b><b class='flag-5'>開(kāi)發(fā)</b>](https://file.elecfans.com//web2/M00/6A/58/poYBAGMlOkCAIYeaAABno-3CUrE385.png)
ubuntu下mplyer播放器源碼移植
![ubuntu下mplyer<b class='flag-5'>播放器</b>源碼移植](https://file.elecfans.com//web2/M00/6D/D0/pYYBAGM1PvSAXierAAXh-Iql36E664.png)
【NanoPi NEO2試用體驗(yàn)】移植mplayer
視頻播放器在linux環(huán)境的應(yīng)用
移植mplayer到mini2440播放rm只有聲音該怎么辦?
嵌入式媒體播放器
【悟空派H3開(kāi)發(fā)板免費(fèi)體驗(yàn)】03 體驗(yàn)音樂(lè)播放
移植MPlayer到linux 2.6的方法
基于Android系統(tǒng)的影音播放器設(shè)計(jì)
![基于Android系統(tǒng)的影音<b class='flag-5'>播放器</b>設(shè)計(jì)](https://file1.elecfans.com//web2/M00/A5/DF/wKgZomUMOo2AExSgAAANpEF2XTE896.jpg)
基于嵌入式Linux流媒體播放器系統(tǒng)軟硬件解決方案
![基于嵌入式<b class='flag-5'>Linux</b>流媒體<b class='flag-5'>播放器</b>系統(tǒng)軟硬件解決方案](https://file1.elecfans.com//web2/M00/A6/3F/wKgZomUMPICAOZhSAAAPuUhvaSM877.jpg)
評(píng)論