linux脚本使用-------安装madplay及MPlayer播放器脚本分析及命令参数前加“横杠”的背景解释

madplay命令使用(Linux音乐播放器) 更多资料请点击:我的目录 本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。 madplay命令使用详细参数: -v 获取音乐播放时间 -q 不存在任何打印,但现实警告 -Q 不存在任何打印 –downsample 只采用一半数据 -i 忽略CRC校验错误 -o PATH/xx.wav 可以用来转码,将mp3转为wav,也可以是其他格式。 -a 开启衰减音量 ,增加音量,衰减系统为-175~+18 (当然通过键盘±也可以调整音量) -A 同- 阅读详情

最近有考试这篇文章写了个开头就扔在了草稿箱,现在在把它搬出来,在学习代码语言的时候,有一个比较有效的学习过程,就是看别人的代码,读懂,理解透彻,然后模仿别人的代码,再自己写,边写边看,重点是运用。



以前接触过脚本,但是我是个菜鸟,这个是安装madplay和MPlayer的脚本

这里有几处说明:

1、# 表示注释

2、脚本是顺序执行的,没有指针等,相对比较简单,但是强大,重要的是理解命令

3、上面的代码因为排版原因,有些注释被挤压到了下一行

4、有些代码功能相似,我就不一一注释了。


#!/bin/sh

#+--------------------------------------------------------------------------------------------
#|Description:  This shell script used to download file source code and cross compile it.
#|     Author:  fanmaolin <fanmaolin@gmail.com>
#|  ChangeLog:
#|           1, Initialize 1.0.0 on 2017
#+--------------------------------------------------------------------------------------------

PRJ_PATH=`pwd`  		#pwd 命令显示当前路径

if [ -z "$INST_PATH" ] ; then 			#判断“$INST_PATH”是否为空字符串
    INST_PATH=${PRJ_PATH}/install		#如果是就给它赋值
fi 										#结束if语句

if [ ! -d $INST_PATH ] ; then			#判断 $INST_PATH 目录是否存在
    mkdir -p $INST_PATH					#如果不存在就创建一个名为 $INST_PATH 的目录
fi

ARCH=arm920t							#赋值语句

if [ -z "$ARCH" -a $# -gt 0 ] ; then	#如果 "$ARCH" 为空  -a(相当于逻辑与&&)  $#(表示传给脚本的参数个数) -gt(大于) 0 
   ARCH=$1								#上面的条件都满足就把 #1(命令行的第一个参数) 赋值给ARCH  http://blog.youkuaiyun.com/xiaofei125145/article/details/40184289
fi

sup_arch=("" "arm926t" "arm920t" )		# 一对括号表示是数组,数组元素用“空格”符号分割开


#该函数用于选择正确的ARCH及交叉编译器
function select_arch()						
{
   echo "Current support ARCH: "		#打印字符串
   i=1
   len=${#sup_arch[*]}					#获取数组长度

   while [ $i -lt $len ]; do			#执行while语句直到 $i -lt(小于)  $len 
     echo "$i: ${sup_arch[$i]}"			#分别打印出 “  , arm926t,arm920t” 
     let i++;							#let命令用于计算
   done

   echo "Please select: "
   index=
   read index							#读取你从键盘输入的给index的值(1、2、3)
   ARCH=${sup_arch[$index]}				#把你输入的值赋给ARCH
}



#该函数用于解压缩
function decompress_packet()
(
   echo "+---------------------------------------------+"
   echo "|  Decompress $1 now"  
   echo "+---------------------------------------------+"

    ftype=`file "$1"`			#判断压缩包类型,对应不同的解压命令
    case "$ftype" in
       "$1: Zip archive"*)
           unzip "$1" ;;		#如果是Zip型就用ubzip命令解压
       "$1: gzip compressed"*)          
           if [ 0 != `expr "$1" : ".*.tar.*" ` ] ; then		
               tar -xzf $1					#如果存在就用tar -xzf filename 解压
           else
               gzip -d "$1"					#否则(如果是.gz)就用gzip -d flename 解压
           fi ;;
       "$1: bzip2 compressed"*)
           if [ 0 != `expr "$1" : ".*.tar.*" ` ] ; then
               tar -xjf $1
           else
               bunzip2 "$1"
           fi ;;
       "$1: POSIX tar archive"*)
           tar -xf "$1" ;;
       *)
          echo "$1 is unknow compress format";;   #如果没有符合条件的就打印该信息
    esac
)



#又复习了一遍解压命令http://www.jb51.net/LINUXjishu/43356.html
#总结 
#1、*.tar 用 tar –xvf 解压 
#2、*.gz 用 gzip -d或者gunzip 解压 
#3、*.tar.gz和*.tgz 用 tar –xzf 解压 
#4、*.bz2 用 bzip2 -d或者用bunzip2 解压 
#5、*.tar.bz2用tar –xjf 解压 
#6、*.Z 用 uncompress 解压 
#7、*.tar.Z 用tar –xZf 解压 
#8、*.rar 用 unrar e解压 
#9、*.zip 用 unzip 解压 




if [ -z "$CROSS" ] ; then
   if [ -z $ARCH ] ; then
      select_arch				#如果ARCH、CROSS都为空就调用select_arch函数选择合适的编译器
   fi
   CROSS="/opt/buildroot-2012.08/${ARCH}/usr/bin/arm-linux-"			#交叉编译器地址赋给CROSS
fi

CROSS_PATH=`dirname $CROSS`						#dirname命令用来获取文件的绝对路径   脚本中常用这个命令cd "$(dirname "$0")"获取脚本文件所在的绝对路径
export PATH=${CROSS_PATH}:$PATH					#export [-fnp][变量名称]=[变量设置值],Linux export命令用于设置或显示环境变量,在这里用来将原来编译器命令改成交叉编译器命令
export CC=${CROSS}gcc
export CXX=${CROSS}g++
export AR=${CROSS}ar							#ar是linux下的库管理器
export AS=${CROSS}as							#as命令是linux下的汇编器
export LD=${CROSS}ld							#ld是linux下的链接器

		#	上面几个参考:http://blog.youkuaiyun.com/flygo201/article/details/40432895
export NM=${CROSS}nm							#nm用于列出程序文件中的符号
export RANLIB=${CROSS}ranlib					#早期ranlib用来对静态库的符号索引表进行更新http://www.linuxidc.com/Linux/2011-05/35774.htm
												#ranlib相当于ar -s http://blog.youkuaiyun.com/langeldep/article/details/8296929 后来就不用ranlib了
export STRIP=${CROSS}strip						#程序文件瘦身器  http://blog.youkuaiyun.com/altawu/article/details/7270719

LIBMAD_NAME=libmad-0.15.1b
LIBMAD_DL_ADDR=ftp://ftp.mars.org/pub/mpeg/$LIBMAD_NAME.tar.gz  		#下载地址
if [ ! -d ${INST_PATH}/libmad/include ]; then

    echo "+------------------------------------------------------------------+"
    echo "|          Build libmad(MPEG Audio Decoder) for $ARCH "
    echo "| Crosstool:  $CROSS"
    echo "+-----------------------------------------------
GEC6818开发日记03 --- madplay与mplayer的移植 重新自己查资料做一遍 madplay 和 mplayer 的移植, 确实出现了很多问题, 但是都顺利解决了. 阅读详情

相关推荐

Linux设备驱动之udal341声卡驱动与madplay播放器移植

Linux设备驱动

Star_hwm 858

madplay的使用方法嵌入式

madplay的使用方法嵌入式(重要),MP3解码器的命令操作模式

madplay和mplayer播放器以及相关so库

一、手机如何播放音乐  1)播放器:   酷狗/QQ音乐/网易云  2)音乐类型: ***.MP3   二、gec6818的开发板怎么播放音乐?   1)播放器:  madplay播放器   2)库:.so        例如:libJPEG.so.9    ***.so  库名   9版本号 ... 具体示例请查看博客 https://blog.youkuaiyun.com/qq_39188039/article/details/83892188

脚本控制 mplayer播放+播放列表管理

该脚本可以帮你建议播放和管理播放列表,并通过mplayer播放,但是当mplayer播放起来的时候就不能进行操作了,暂时没有什么好办法解决 我开始只想能够让mplayer接着我上次播放的歌曲进行播放,不过最后还是写成了一个播放列表的管理。

AD9026芯片开发实战:从Example Code到API调用的关键步骤解析

本文详细解析了AD9026芯片开发的核心流程,重点阐述了如何从官方提供的Example Code入手,逐步理解硬件平台发现、HAL层初始化、配置加载、芯片复位、固件启动、JESD链路建立等关键API调用序列。通过剖析示例工程的结构与核心文件,为开发者在自定义硬件平台上移植和调试AD9026驱动提供了清晰的实战指南。

java5的博客 788

突破III-V/硅混合集成的挑战:UTC光电探测器能带工程仿真实践

本文探讨了UTC光电探测器在III-V/硅混合集成中的能带工程仿真实践,通过Ansys Lumerical平台实现多物理场仿真,解决晶格失配和能带不连续性等关键挑战。文章详细介绍了FDTD光学仿真和CHARGE电学仿真方法,优化器件性能,提升响应度和带宽,为高速光通信和量子计算提供技术支持。

weixin_29219539的博客 297

YOLOv8_obb的C++工程部署实战:从模型转换到实时视频推理

本文详细介绍了YOLOv8_obb模型在C++环境下的完整工程部署流程,涵盖从PyTorch模型到ONNX格式的转换、基于ONNX Runtime的C++推理引擎搭建、旋转框后处理解析,以及实时视频流处理与性能优化。文章重点解析了模型转换的关键参数、环境配置的常见问题、核心推理代码的实现,并提供了实用的避坑指南,旨在帮助开发者高效完成YOLOv8_obb的C++工程部署。

weixin_29100927的博客 45

【立创开源】太阳能板充电方案单节3.7v锂电池充电

一直对太阳能板感兴趣,老是感觉充电好麻烦,要是放在那里就可以自己充电多好,所以尝试做了一个太阳能充电板。因为这几天都是阴天,所以测试效果不太好,但是下雨天也是能充电的,但是基本只能维持电量不掉,电压差不多4.2v以上,电流只有2mA。中午出太阳的时候,隔着玻璃放在太阳下测试,电流有12mA以上。能充起一点点电。等大晴天看一看能不能达到卖家说50mA。┗( T﹏T )┛感觉达不到。这个东西只能当一个玩具(;′⌒`)。不过如果汽车上一些行车记录仪加一个这个,汽车经常在太阳下停车,可能再也不用充电了。

贾saisai的博客 1万+

【附源码】Node.js毕业设计高校院级校友信息管理系统(Express)

首先,该系统可以提高高校对校友信息管理的效率和准确性。通过系统提供的查询功能,高校可以方便地获取校友的最新联系方式和动态,及时了解校友的发展情况,为校友提供更好的服务和支持。总之,开发高校院级校友信息管理系统将为高校提供一个高效、便捷的工具,有助于提升校友管理水平和服务质量,促进高校与校友之间的良好互动关系。通过使用前端技术HTML、CSS、JavaScript和Vue框架,结合后端技术Node.js和Express框架,以及MySQL数据库,可以实现对校友信息的快速录入、查询、修改和删除等操作。

佳愉毕设源码 894

数学建模之0—1规划(Python)

目录 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1​ (2)案例2 3、遗传算法—sko-GA包实现 (1)代码 (2)结果 4、PuLp实现 (1)代码 (2)结果 5、致谢 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1 (2)案例2 3、遗传算法—sko-GA包...

weixin_46039719的博客 4112

基于强化学习的多无人机路径规划

我们使用了Dueling Double Deep Q-Network(DDDQN)算法来训练智能体,这个算法在深度Q学习算法的基础上进行了升级,具有更快的收敛速度和更好的性能。本文提出了一种基于强化学习的算法,实现了多无人机路径规划,并提供相应的MATLAB代码。通过基于强化学习的多无人机路径规划算法,我们能够高效地解决复杂环境下的任务需求,并在实际应用中取得了良好的效果。首先,我们定义了状态空间和动作空间。实验结果表明,我们的方法能够有效地解决多无人机路径规划问题,提高了任务完成的效率和准确率。

DjjPython的博客 821

2025华为od机试真题B卷【停车场费用统计】Python实现

2025华为od机试真题B卷【停车场费用统计】Python实现

MISAYAONE的博客 538

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: fl2440内核自带按键驱动移植及hexdump命令
下一篇: linux环境高级编程之fork、getpid、getppid函数
fml1997
博客等级 码龄10年 30粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值