衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux驅動開發_mplayer播放器開發

DS小龍哥-嵌入式技術 ? 2022-09-17 15:50 ? 次閱讀

【摘要】 介紹mplayer播放器的安裝、使用、以及兩個模式的使用;然后介紹廣告機項目的要求,實現辦法。

USB wifi (360) : 如何從官網下載源碼進行代碼移植、安裝相關無線工具、讓嵌入式設備支持WIFI。

任務1: 安裝mplayer播放器并學習使用方法

圖片格式、音樂文件(.mp3)、視頻文件(mp4)…….

學習文件編程: bmp圖片格式、JPG(jpeglib)。

視頻編碼解碼: ffmpeg庫。

Mplayer播放器: 源碼開源,可以下載、可以更改….。 (X11)

??安裝libmad庫方法

1.?在linux系統目錄下創建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選項去掉

5.?編譯安裝

[root@wbyq libmad-0.15.1b]# make && make install

6.?將生成的.so文件拷貝到開發板的lib目錄下。

??安裝mplayer播放器

1.?在/work目錄下創建一個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

編譯成功之后會在當前目錄下生成mplayer可執行文件,將該可執行文件拷貝到開發板根文件系統的/bin目錄下即可。

5.?播放測試

[root@tiny4412 ]#mplayer -zoom -x 800 -y 480 /work/video_file/Video_2018-12-11.wmv

??Mplayer播放器使用方式:

1.?主模式,運行mplayer播放器,播放器將占用當前的終端,在主模式下mplayer程序不能后臺運行。

默認從鍵盤上(表示輸入)獲取輸入信號對播放器進行控制。

2.?從模式: 將mplayer播放器當做子進程啟動,父進程可以通過管道與子進程之間進行通信

進程間通信: 無名管道/命名管道(FIFO)、消息隊列、內存映射(mmap)、內存共享、信號。

創建子進程的函數: fork函數。

??聲卡驅動使用

poYBAGMlOkCAIYeaAABno-3CUrE385.png

將該壓縮包拷貝到開發板根文件系統目錄下,解碼,運行聲卡啟動腳本。

??在開發板上解壓: [root@tiny4412 ]#tar xvf /mnt/Tiny4412_SoundCard_wm8960.tar -C /work/

pYYBAGMlOkCAYhI7AAEPRQG1JvE182.pngpoYBAGMlOkGAHWq8AAC1jseZF64269.png

將耳機插在開發板的音頻輸出口上即可聽到聲音了。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

/*
獲取標準輸入的數據、寫給FIFO文件
*/
void *pthread_func(void *argv)
{
	int fd=open("/mplayer_fifo",2);
	if(fd<0)
	{
		printf("FIFO文件打開失敗!\n");
		pthread_exit(NULL); //結束當前線程
	}
	char buff[100];
	int len;
	while(1)
	{
		printf("請輸入命令:");
		fflush(stdin);  	   //刷新緩沖區
		fgets(buff,100,stdin); //從鍵盤上獲取數據  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. 創建無名管道*/
	int fds[2];
	pipe(fds);
	
	/*2. 創建子進程*/
	pid=fork();
	
	/*子進程代碼: mplayer播放器*/
	if(pid==0)
	{
		/*將子進程的標準輸出重定向到管道寫端*/
		dup2(fds[1],1);
		
		/*啟動子進程*/
		execlp("mplayer","mplayer","-zoom","-x","800","-y","480","-slave","-quiet","-input","file=/mplayer_fifo","/work/video_file/Video_2018-12-11.wmv",NULL);
	}
	else /*父進程*/
	{
		char buff[100];
		int cnt=0;
		
		/*創建新的線程: 從鍵盤上獲取輸入的數據,寫給播放器的FIFO文件*/
		pthread_t threadID;
		pthread_create(&threadID,NULL,pthread_func,NULL);
		pthread_detach(threadID); //設置分離屬性
		
		while(1)
		{
			/*從管道的讀端讀取數據: 讀取就是mplayer播放器輸出的數據*/
			cnt=read(fds[0],buff,100);
			buff[cnt]='\0';
			printf("播放器輸出的值=%s\n",buff);
		}
	}
	return 0;
}

任務2:制作視頻廣告機

廣告機應用場景: 公交站臺、地鐵車廂、銀行前臺大廳、高速公路、公園….

1.?有些廣告機只有視頻播放,沒有聲音。

2.?廣告機都支持網絡視頻文件更新---->文件更新使用現成的服務器: FTP服務器、NFS服務器。

(1)?如何判斷服務器上那些文件需要下載到本地? 通過shell腳本代碼或者使用C語言

(2)?更新的時間一般是固定的: 20:00 23:00 …… 通過時間函數判斷時間是否到達。

(3)?在視頻問好更新的時候,視頻文件需要停止播放,可以在屏幕上顯示提示(正在更新…..)。

3.?廣告機需要支持自動播放,播放一個自動切換下一個、循環播放。

調用讀目錄、循環遍歷目錄、得到視頻文件、mplayer播放器需要使用子進程方式啟動。

廣告機: 音量調整、選擇視頻播放…….都不是廣告機的功能---是視頻播放器的功能。

pYYBAGMlOkGANZoJAABwGfwDIe4315.png
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 播放器
    +關注

    關注

    5

    文章

    401

    瀏覽量

    37526
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210385
  • 廣告機
    +關注

    關注

    0

    文章

    159

    瀏覽量

    9824
  • mplayer
    +關注

    關注

    0

    文章

    6

    瀏覽量

    2497
收藏 人收藏

    評論

    相關推薦

    迅為RK3568開發驅動指南Linux中通用SPI設備驅動

    迅為RK3568開發驅動指南Linux中通用SPI設備驅動
    的頭像 發表于 01-23 11:02 ?1519次閱讀
    迅為RK3568<b class='flag-5'>開發</b>板<b class='flag-5'>驅動</b>指南<b class='flag-5'>Linux</b>中通用SPI設備<b class='flag-5'>驅動</b>

    畢業設計競賽選題推薦 | 嵌入式Linux應用之音樂播放器項目實戰(含文檔及源碼)

    提升了效率和心情。嵌入式Linux開發的音樂播放器,憑借其高效能與低能耗的特點,在便攜設備、智能家電以及車載系統等領域中展現出獨特的優勢。它不僅能夠提供高品質的音樂
    的頭像 發表于 12-23 16:50 ?369次閱讀
    畢業設計競賽選題推薦 | 嵌入式<b class='flag-5'>Linux</b>應用之音樂<b class='flag-5'>播放器</b>項目實戰(含文檔及源碼)

    瑞芯微主板/開發Linux系統播放音頻方法,觸覺智能RK3562開發板演示

    本文介紹瑞芯微方案主板/開發Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
    的頭像 發表于 12-13 11:40 ?331次閱讀
    瑞芯微主板/<b class='flag-5'>開發</b>板<b class='flag-5'>Linux</b>系統<b class='flag-5'>播放</b>音頻方法,觸覺智能RK3562<b class='flag-5'>開發</b>板演示

    海貝R1便攜音樂播放器開箱

    作為一個愛聽音樂打發時間的玩家,我已經習慣隨身攜帶一款小巧輕便的音樂播放器,從早期的CD播放器到現在的數碼播放器,它總能在不經意間中給我帶來簡單的快樂。不管是逛街等人的時候,還是工作壓力大的時候
    的頭像 發表于 12-09 09:40 ?274次閱讀
    海貝R1便攜音樂<b class='flag-5'>播放器</b>開箱

    變速播放器1和2的區別

    關于變速播放器1和2的區別,由于這里并未明確指出“變速播放器1”和“變速播放器2”具體指的是哪兩款軟件,因此我無法提供這兩款特定軟件之間的對比。不過,我可以從一般意義上探討變速播放器
    的頭像 發表于 10-14 09:48 ?269次閱讀

    為什么好的播放器還要配解碼

    好的播放器之所以需要配備解碼,是因為音頻和視頻文件的編碼和解碼是一個復雜的過程,涉及到多種技術和標準。解碼的作用是將壓縮的音頻和視頻數據還原成可以被播放設備識別和
    的頭像 發表于 09-23 18:02 ?1724次閱讀

    數字播放器和解碼

    數字播放器和解碼的組合能夠提供更優質的音頻體驗。數字播放器負責處理和傳輸音頻數據,而解碼則負責將這些數據轉換為高質量的模擬信號。它們的配合可以確保你聽到的音頻既清晰又真實。
    的頭像 發表于 09-06 17:35 ?1364次閱讀
    數字<b class='flag-5'>播放器</b>和解碼<b class='flag-5'>器</b>

    嵌入式linux開發的基本步驟有哪些?

    嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個方面。以下是嵌入式
    的頭像 發表于 09-02 09:11 ?628次閱讀

    linux開發板與樹莓派的區別

    操作系統的微型計算機,主要用于教育、編程、媒體播放等領域。 硬件配置 Linux開發板:Linux開發板的硬件配置因廠商和型號而異,通常包括
    的頭像 發表于 08-30 15:34 ?1140次閱讀

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux
    的頭像 發表于 08-30 12:16 ?920次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>驅動</b><b class='flag-5'>開發</b>與應用<b class='flag-5'>開發</b>,你知道多少?

    HarmonyOS開發案例:【視頻播放器

    使用ArkTS語言實現視頻播放器,主要包括主頁面和視頻播放頁面
    的頭像 發表于 04-24 14:52 ?983次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【視頻<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【視頻播放器

    使用ArkTS語言實現視頻播放器,主要包括主界面和視頻播放界面,
    的頭像 發表于 04-23 17:25 ?785次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【視頻<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【音樂播放器

    使用ArkTS語言實現了一個簡易的音樂播放器應用
    的頭像 發表于 04-23 15:44 ?1159次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【音樂<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【視頻播放器

    基于video、swiper和slider組件,實現簡單的視頻播放器,可支持海報輪播、視頻播放等功能。
    的頭像 發表于 04-22 21:06 ?551次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【視頻<b class='flag-5'>播放器</b>】

    鴻蒙開發-視頻播放器方案

    使用on(\'stateChange\')方法監聽狀態變化。如果應用在視頻播放器處于錯誤狀態時執行操作,系統可能會拋出異常或生成其他未定義的行為。 圖1 播放狀態變化示意圖 當播放處于prepared
    發表于 02-19 17:20
    至尊百家乐官网20| 吴江市| 棋牌游戏评测网| 德州扑克书| bet365 体育在线uo| 娱乐城注册送彩金100| 利来国际网上| 晋江市| 百家乐官网庄家胜率| 东城区| 至尊百家乐官网2012| 网上百家乐官网软件大全酷| 免费玩百家乐官网的玩法技巧和规则| 百家乐官网投注网出租| 百家乐官网平注法到65688| 百家乐网上最好网站| 牌九百家乐的玩法技巧和规则| 威尼斯人娱乐城官方网址| 大发888-大发娱乐城下载| 百汇娱乐| 澳门百家乐官网怎样下注| 百家乐官网走势图解| 风水学坐向24山| 百家乐庄闲符号记| 大发888官网游| 葫芦岛市| 百家乐官网三号的赢法| 御匾会百家乐官网的玩法技巧和规则| 百家乐翻天快播粤语| 威尼斯人娱乐老| 现金网排行| 百家乐官网赌博牌路分析| 百家乐对子计算方法| 大发888有手机版本吗| 百家乐官网单双打法| 蓝盾百家乐官网网址| 百家乐趋势图怎么看| 大发888娱乐游戏账号| 泰安市| 百家乐官网平注法口诀技巧| 大三巴百家乐的玩法技巧和规则|