07 线程、音视频播放

线程

当有两个或两个以上的功能的必须处在死循环中,且要同时运行的时候,就可以考虑给其中的功能起一个线程
在这里插入图片描述

函数

//头文件
#include <pthread.h>
//申请一个线程号
pthread_t tid;
//编译时要连接对应的线程库文件:-pthread

线程的创建
int pthread_create(pthread_t *thread,
										const pthread_attr_t *attr,
										void *(*start_routine) (void *),
										void *arg);
//参数
	thread:线程号
	attr:线程的属性,没有就NULL
	start_routine:线程的执行函数
	arg:线程的执行函数启动时传递的参数,没有就NULL
	
	
线程的回收(等线程死了,回收资源)
int pthread_join(pthread_t thread,void *retval);
//参数
	thread:线程号
	retval:线程函数参数的返回值,没有就NULL
	

线程的取消(杀了线程,没有回收资源)
int pthread_cancel(pthread_t thread);
//参数
	thread:线程号

线程的退出(杀死线程,回收资源)
void pthread_exit(void *retval);
//参数
	retval:线程函数参数的返回值,没有就NULL
	
	
//函数为int类型有返回值
	成功返回0
	失败返回错误数字,-1-2

示例代码

//头文件
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
//申请一个线程号
pthread_t tid;

void *gesture(void *arg)
{
	while(1)
	{
		printf("线程\n");
		sleep(3);
	}
}

int main(int argc, char const *argv[])
{
	pthread_create(&tid,NULL,gesture,NULL);//创建线程
	while(1)
	{
		printf("主进程\n");
		sleep(1);
	}
	return 0;
	pthread_exit(NULL);//线程的退出
}

//暂停线程
flag_tid=0;//1杀线程,0创建线程
在一个死循环中,if(!flag_tid)pthread_create(&ad_tid,NULL,gesture,NULL);//创建线程
void *gesture(void *arg)
{
	while(1)
	{
		sleep(2);
		if(flag_tid)pthread_exit(NULL);//杀死线程
	}
}

//在需要进行下一步的那段代码中写,用来确认线程暂停,若未暂停会卡在这里
if (pthread_join(ad_tid, NULL) != 0) perror("pthread_join");

音、视频播放

  1. 音频播放工具:madplay
  2. 视频播放工具:mplayer

将madplay和mplayer上传到开发板中,移动到/bin目录下,修改权限

在Secure CRT中输入命令:

//播放音乐
madplay 1.mp3 (若加“&”则表示后台播放)
//暂停播放
killall -SIGSTOP madplay
//继续播放
killall -SIGCONT madplay
//结束播放
killall -SIGKILL madplay

//播放视频
mplayer -slave -quiet -geometry 0:0 -zoom -x 800 -y 480 d.avi
		-slave:使用slave命令来控制视频
		-quiet:不输出多余信息
		-geometry 0:0:指定播放的起始坐标
		-zoom:允许视频缩放
		-zoom -x 800 -y 480:指定视频播放帧宽度(x)、高度(y)
		d.avi:视频文件的文件名(或者mp4,质量不能太高)
//暂停播放
killall -SIGSTOP mplayer
//继续播放
killall -SIGCONT mplayer
//结束播放
killall -SIGKILL mplayer

在程序中实现播放音频、视频

system()函数

system("madplay 1.mp3");

char cmd[64]="mplayer -slave -quiet -geometry 0:0 -zoom -x 800 -y 480 d.avi";
system(cmd);
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值