手把手教你实现Android直播全过程

近些年直播越来越火了,由于项目要求需要做一个android的直播app。网上也有很多优秀的sdk框架,由于之前没有接触过流媒体,经过查阅了相关的资料后,一个直播的流程主要分为三大部分:推流,拉流,以及流媒体服务器。

如果你还不了解直播可以参照一下这篇博文:https://blog.csdn.net/github_37855556/article/details/73467698

我开始思考,直播这三大部分,需要逐个击破,我选择了先解决流媒体服务器,然后解决推流端,最后是拉流端。

通过一段时间的研究,实现了手机直播三大板块,后面我将自己遇到的问题和一些经验分享给大家,希望能帮到你。

最终直播实现方案(SRS流媒体服务器+yasea推流+vitamio拉流)

首先我们得了解直播用的协议是RTMP即实时传输协议

搭建流媒体服务器

准备工作

1.     首先下载vm

2.     下载ununtu16.04   *只有这个版本测试编译srs成功

3.     在vm中安装ununtu16.0.4,安装时设置网络为桥接模式(了解局域网下的桥接模式),安装完ununtu16.04后,安装vm tools可解决ubuntu不是全屏的问题(安装后才可以windows向里面拖文件)

4.     Ubuntu16.0.4更改语言为汉语,自行百度

在ubun中测试涉及到权限,需先创建root用户,https://blog.csdn.net/sunxiaoju/article/details/51993091

安装vim(编辑配置文件)

一些vim操作方法

https://blog.csdn.net/xxdded/article/details/52903107

下载srs和编译

https://blog.csdn.net/gengbaolong/article/details/77620408

其中第六大点的第六小点的命令为:./objs/srs -cconf/rtmp.conf

详情参照:

注意在ubuntu中测试srs,进行推流拉流时,可在ubuntu中下载obs-studio(推流用),vlc play(拉流用)

可参照

https://blog.csdn.net/calvin_zhou/article/details/78613422

更多关于srs可参照

https://github.com/ossrs/srs/wiki/v2_CN_Home

编译好srs后

在srs根目录trunk下root权限启动srs,命令为 ./objs/srs -cconf/rtmp.conf

停止关闭srs ./etc/init.d/srs stop 

启动服务器:

用obs测试推流


用vlc成功拉流


到此服务器搭建成功,后续将贴上集成好的android推流+拉流demo和集成时的注意事项,敬请期待



  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务器 流媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs流媒体服务器部署 播放器 android端的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和流媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的流程:
PyTorch是一个用于深度学习的开源Python库,它提供了丰富的工具和函数,可以简化神经网络模型的实现。Transformers是一种用于自然语言处理的深度学习模型,其基本方法是通过自注意力机制来实现文本序列的编码和解码。下面将手把手你如何使用PyTorch实现Transformers。 1. 首先,安装PyTorch库。可以通过pip命令来安装:`pip install torch`。 2. 导入必要的库。在代码的开头,导入PyTorch和Transformers相关的库: ``` import torch from transformers import BertModel, BertTokenizer ``` 3. 加载预训练的Transformers模型和分词器。Transformers库提供了一些预训练的模型,可以从Hugging Face的模型库中下载。我们使用Bert模型作为例子: ``` model_name = 'bert-base-uncased' model = BertModel.from_pretrained(model_name) tokenizer = BertTokenizer.from_pretrained(model_name) ``` 4. 输入编码。将文本输入编码成模型所需的格式。使用分词器对文本进行分词,并将分词后的结果转化为模型所需的编码格式: ``` text = "I love PyTorch" tokens = tokenizer.tokenize(text) input_ids = tokenizer.convert_tokens_to_ids(tokens) input_tensor = torch.tensor([input_ids]) ``` 5. 模型前向计算。将输入数据传入模型进行前向计算: ``` model_output = model(input_tensor) ``` 6. 获取特征表示。从模型输出中获取特征表示。对于Bert模型,可以获取词嵌入和每个词的隐藏状态: ``` embeddings = model_output[0] # 词嵌入 hidden_states = model_output[2] # 每个词的隐藏状态 ``` 7. 解码输出。根据任务需求,对模型的输出进行解码。例如,可以使用BertPooler层获取整个句子的语义表示: ``` pooler_output = model.pooler(hidden_states[-1]) # BertPooler层 ``` 以上就是用PyTorch实现Transformers的基本步骤。根据具体任务的不同,可以对模型进行进一步的调整和优化。希望这个手把手程能够帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值