linux多线程录音,Linux中用socket实现视频、音频的同步传输

本文介绍了如何在Linux环境中使用多线程和Socket实现视频、音频的同步传输。通过创建视频线程和音频线程,分别进行单向和双向传输,并利用Socket建立独立的视频和音频流,实现局域网内的同步效果。在服务器端,一个Socket监听两个连接请求,客户端则发起两个连接,确保视频和音频的同步传输。
摘要由CSDN通过智能技术生成

在之前的一篇里已经提到过视频、声音的同步传输问题,当时想了几个方案,当然都是很不成熟的想法。有些事情只有做了才知道到底行不行得通,有时候实际情况比想象得要简单。

1、创建两个线程-视频线程、音频线程。

关于视频部分的实现参考,音频部分的实现参考。其中,视频实现单向传输,音频实现双向传输。两个线程之间并没有做任何类似于“信号量“的同步措施。因为只要保证视频和音频是”同时“发送,在接收端就可以”几乎“同时显示和播放。因为是在局域网中传输,速度有保证,在要求不是很苛刻的情况下,同步是可以满足的。而且,事实也证明了,这种很朴素的方法是行得通的。

pthread_create(&enc_tid,NULL,(void *)video_send,

(void *)&arg);

//视频的详细介绍参看这里

pthread_create(&audio_tid,NULL,(void

*)audio_encdec,(void *)&sockfd_audio);

//声音的详细介绍参看这里

2、既然要用两个线程来实现传输,一个很自然的问题就是:视频流和音频流是如何处理的?答案是:建立用两条独立的流,一条传输视频,一条传输声音。我们知道,socket在服务器端创建一个sockfd_server之后,这个sockfd_server可以一直监听是否有连接请求。也就是说,我们可以在服务器端创建一个server_fd,然后连接客户端的两个连接请求-视频、音频。

还是代码表示更直观:

发送端:(作为服务器端,和上次比做了调换)

//socket描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值