codezjx's Home


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

WebRTC实现Android传屏demo

发表于 2020-10-19 | 分类于 WebRTC
WebRTC简介WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和音频流或其他任意数据的传输。 目前,WebRTC的应用已经不局限在浏览器与浏览器之间,通过官方提供的SDK,我们可以很容易的实现本地应用间的音视频传输。在Android平台上,我们也非常容易的集成WebRTC框架,用非常简洁的代码就能实现强大、可靠的音视频传输功能。 接 ...
阅读全文 »

Miracast技术详解(五):Permission 问题处理

发表于 2020-06-16 | 分类于 Miracast
Permission 问题处理由于Android上的Miracast功能强依赖Wi-Fi P2P,因此这个过程中也会依赖其相应的权限。经过调试及踩坑,主要会涉及到以下几个权限问题。 以下分析过程中涉及到的源码版本为android-8.1.0_r60 WFD Permission自Android 8.0及以后,官方已经限制了对setWFDInfo()接口的调用(这个接口本来也是@hide的,因此官方在高版本中对其进行限制也是理所当然),普通app已经没有权限进行调用了,也就是第三方app已经不 ...
阅读全文 »

Miracast技术详解(四):Sink源码解析

发表于 2020-02-07 | 分类于 Miracast
Sink源码概述Miracast Sink端源码最早出现在Android 4.2.2上,通过googlesource可以很方便的查看:https://android.googlesource.com/platform/frameworks/av/+/android-4.2.2_r1.2/media/libstagefright/wifi-display/sink/ 但是在Android 4.3以后,Google却移除掉了这部分源码,详细的commit记录在:https://android.goo ...
阅读全文 »

Miracast技术详解(三):RTP & MPEG2-TS

发表于 2020-02-06 | 分类于 Miracast
Miracast音视频流概述在上一篇文章中,我们已经成功完成RTSP能力协商与会话的建立,并准备开始音视频流的传输阶段。那么下一步,就是对音视频流进行解析,并将音视频展示给用户的过程。这样整个Miracast的流程就算分析完毕了。 先简单来总结下,在Miracast底层的实现中,是采用RTP协议对MPEG2-TS数据包进行封装,其中MPEG2-TS又同时封装了Audio和Video两种ES(Elementary Stream)。其中Audio格式一般为AAC,Video则为H.264。那么只要将 ...
阅读全文 »

Miracast技术详解(二):RTSP协议

发表于 2020-02-05 | 分类于 Miracast
RTSP概述在上一篇博客中我们已经通过Wi-Fi P2P建立好了Source和Sink端的TCP连接,在Miracast后续的音视频传输过程中,将采用RTSP协议来对流媒体进行控制。因此接下来的步骤就到了RTSP协商、会话建立及流媒体传输的阶段。首先,什么是RTSP协议呢? 实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如 ...
阅读全文 »

Miracast技术详解(一):Wi-Fi Display

发表于 2020-02-04 | 分类于 Miracast
Miracast概述MiracastMiracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的消费性电子产品(又称3C设备)可透过无线方式分享视频画面,例如手机可透过Miracast将影片或照片直接在电视或其他设备播放而无需任何连接线,也不需透过无线热点(AP,Access Point)。 Wi-Fi DirectWi-Fi直连(英语:Wi-Fi Direct),之前曾被称为Wi-Fi点对点(Wi-Fi Peer-to-P ...
阅读全文 »

编译Chromium源码for Android

发表于 2019-09-29 | 分类于 Chromium
编译环境在Windows或者Mac下编译Android客户端是不支持的,官方推荐的是使用Ubuntu来进行编译,因此我们的编译采用的是Ubuntu服务器,版本为14.04.2 LTS (GNU/Linux 3.16.0-30-generic x86_64)。需提前安装Git(拉代码)和Python(GN中的所有外部脚本都在Python中执行) 安装depot_toolsChromium使用depot_tools的脚本包来管理checkout和审查代码,因此拉代码前需要安装好此工具。首先拉取代码: ...
阅读全文 »

Android上使用MediaCodec对Opus音频解码

发表于 2019-09-04 | 分类于 Opus
简介Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由互联网工程任务组进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用于网络上低延迟的即时声音传输,标准格式定义于RFC 6716文件。Opus格式是一个开放格式,使用上没有任何专利或限制。 在官方的examples测试案例中,就算有30%的丢包率,也基本能够听清楚人声,这对于即时的声音传输场景来说非常重要。并且它支持动态、无缝的调节比特率与音频带宽,在网络环境多变的场景下更能保证音频的质量。 ...
阅读全文 »

scrcpy投屏工具源码解析

发表于 2019-06-24 | 分类于 Source Code Analysis
说到Android上投屏到PC或Mac端的软件,相信大家对Vysor应该都比较熟悉了,它是Chrome上的一款插件,安装完后就能方便的进行手机的投屏,但这款软件现在Pro版要收费了,免费版还一堆的广告。 今天我们要介绍的的是Genymobile自家开源的scrcpy工具,它也能实现我们想要的投屏功能,而且完全免费,没有任何广告,更重要的是它是一款开源软件!开源软件!开源软件!重要的事情说3遍。 在Mac上,通过Homebrew进行安装,等所有依赖下载完就可以使用了。 1brew install ...
阅读全文 »

在Mac上编译基于Android平台的FFmpeg源码

发表于 2019-06-21 | 分类于 FFmpeg
这段时间开始研究音视频编解码的相关知识,自然少不了学习FFmpeg这个开源项目。网上编译FFmpeg源码有很多教程,但是大部分都过时了,编译的时候还会遇到一大堆错误,踩了不少坑。因此总结了此文章,方便大家后续查阅。 下载NDK和FFmpeg编译Android平台的FFmpeg需要下载NDK和FFmpeg源码: 首先下载NDK,目前官方最新稳定版是r20的版本,但是建议不要下最新的。这里我们为了顺利编译,可以下载r17及以下的版本,这里我们下载了r17c版本,为什么?请看后面的报错处理环节。 然后 ...
阅读全文 »
12…5
codezjx

codezjx

46 日志
16 分类
55 标签
GitHub Twitter StackOverflow Weibo
© 2020 codezjx
由 Hexo 强力驱动
主题 - NexT.Pisces