Android音视频开发
文章平均质量分 87
普通网友
这个作者很懒,什么都没留下…
展开
-
RTP协议基本分析(RTSP、WebRTC使用)
实时流传输协议(RTSP:Real Time Streaming Protocol)是一种网络传输协议,旨在发送低延迟流。该协议由RealNetworks,Netscape和哥伦比亚大学的专家在1996年开发。它定义了应如何打包流中的数 据以进行传输。2、RTPRTP协议原理,负责对流媒体数据进行封包并实现媒体流的实时传输,即它按照RTP数据包格式来封装流媒体数据,并利用与它绑定的协议进行数据包的传输。原创 2023-01-29 20:06:03 · 2318 阅读 · 1 评论 -
解决OBS录屏模糊问题
静态配置输出分辨率动态配置比特率和FPS值作者:Onisme★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。见下方!原创 2023-01-13 21:07:41 · 5638 阅读 · 0 评论 -
ijkplayer基于rtsp直播延时的深度优化
现在ijkPlayer是许多播放器、直播平台的首选,相信很多开发者都接触过ijkPlayer,无论是Android工程师还是iOS工程师。我曾经在Github上的ijkPlayer开源项目上提问过:视频流为1080P、30fps,如何优化RTSP直播的延时为大约100ms呢?发现大家对RTSP直播延时优化非常感兴趣,纷纷提问或者给出自己的观点。本文主要是总结,也是与大家探讨RTSP直播的延时优化。目录一、修改编译脚本支持RTSP二、修改播放器的option参数三、网络抖动的丢包。原创 2023-01-13 20:57:43 · 2102 阅读 · 0 评论 -
2023年音视频开发前景如何?音视频开发需要掌握哪些技术?
而在电信行业发展的途中,也同样伴随着时代的进步,2G 为我们打开了移动互联网天下,3G 带来了即时通信,诞生了QQ、微信等巨头,4G带来了短视频兴起,字节跳动等公司迅速崛起;可以说 2G、3G、4G 的出现促成了移动互联网的数 10 年繁荣,同样也见证了音视频的蓬勃发展。5G 作为第五代移动通信技术,将被赋予与移动互联网、物联网、云计算、人工智能、大数据等关联领域紧密结合,为工业、交通、教育、医疗、娱乐等产业应用赋能,带动形成全社会广泛参与、跨行业融合赋能的万亿级 5G 音视频产业链。原创 2023-01-13 20:03:05 · 1707 阅读 · 0 评论 -
基于webrtc多人音视频的研究(一)
众所周知,WebRTC非常适合点对点(即一对一)的音视频会话。然而,当我们的客户要求超越一对一,即一对多、多对一设置多对多的解决方案或者服务,那么问题就来了:“我们应该采用什么样的架构?简单的呢有人会考虑copy多个p2p就完成了多人之间的会话,可并没有考虑到到来的问题:cpu、内存、尤其是流量问题;传统的解决方案是MCU服务器,利用服务器硬件的能力去mix音视频,然后传给各个参与者,这能到达预想的,这个亦能到达我们的需求;使用基于网状拓扑结构的结构可能是前两者的折中之选。原创 2023-01-12 21:25:30 · 1729 阅读 · 1 评论 -
音视频面试基础题
GOP ( Group of Pictures ) 是一组连续的画面,由一张 I 帧和数张 B / P 帧组成,是视频图像编码器和解码器存取的基本单位。也就是说GOP组是指一个关键帧I帧所在的组的长度,每个 GOP 组只有 1 个 I 帧。GOP 组的长度格式也决定了码流的大小。GOP越大,中间的P帧和B帧的数量就越多,所以解码出来的视频质量就越高,但是会影响编码效率。SPS又称作序列参数集。SPS中保存了一组编码视频序列的全局参数。包含了profile、level、宽高和颜色空间等信息。原创 2023-01-12 20:20:06 · 766 阅读 · 0 评论 -
FFMpeg 实现视频编码、解码
FFMpeg 作为音视频领域的开源工具,它几乎可以实现所有针对音视频的处理,本文主要利用 FFMpeg 官方提供的 SDK 实现音视频最简单的几个实例:编码、解码、封装、解封装、转码、缩放以及添加水印。接下来会由发现问题->分析问题->解决问题->实现方案,循序渐进的完成。原创 2023-01-12 20:11:03 · 1495 阅读 · 0 评论 -
为什么 TCP 协议有性能问题
TCP 协议的一些设计在今天来看虽然仍然具有巨大的价值,但是并不能适用于所有场景。为了解决 TCP 的性能问题,目前业界有两种解决方案:使用 UDP 构建性能更加优异、更灵活的传输协议,例如:QUIC19等;通过不同的手段优化 TCP 协议的性能,例如:选择性 ACK(Selective ACK, SACK),TCP 快开启(TCP Fast Open, TFO);由于 TCP 协议在操作系统内核中,不利于协议的更新,所以第一种方案目前发展的更好,HTTP/3 就使用了 QUIC 作为传输协议20。原创 2023-01-11 20:57:33 · 1525 阅读 · 0 评论 -
为什么 TCP 建立连接需要三次握手
在具体分析今天的问题之前,我们首先可以了解一下最常见的错误类比,这个对 TCP 连接过程的错误比喻误导了很多人,作者在比较长的一段时间内也认为它能够很好地描述 TCP 建立连接为什么需要三次握手:你听得到吗?我能听到,你听得到?我也能听到;这种用类比来解释问题往往就会面临『十个类比九个错』的尴尬局面,如果别人用类比回答你的为什么,你需要仔细想一想它的类比里究竟哪里有漏洞;原创 2023-01-11 20:45:20 · 13126 阅读 · 3 评论 -
为什么流媒体直播的延迟很高
流媒体直播的高延迟是一个系统性的工程问题,与微信视频等 1 对 1 的实时通信相比,视频流的生产方和消费方之间的链路极长,很多因素都会影响主播和观众的感受,因为带宽的成本、历史的惯性以及网络的不确定,我们只能通过不同的技术解决遇到的问题,而不得不牺牲的就是用户的体验:全量的音视频数据过多 — 使用音视频编码会使用关键帧以及增量修改的方式压缩数据,关键帧的间隔 GOP 决定了客户端在播放第一个画面时需要等待的最长时间;原创 2023-01-11 20:32:09 · 1142 阅读 · 0 评论 -
FFmpeg功能命令汇总
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片 ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频//-r 提取图像的频率,-ss 开始时间,-t 持续时间。★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。原创 2023-01-10 21:39:08 · 2047 阅读 · 1 评论 -
FFmpeg音频重采样API(libswresample)
参考lswr功能介绍lswr使用说明示例代码\1. 参考[1][2][3]\2. lswr功能介绍 FFmpeg中重采样的功能由libswresample(后面简写为lswr)提供。lswr提供了高度优化的转换音频的采样频率、声道格式或样本格式的功能。功能说明:采样频率转换:对音频的采样频率进行转换的处理,例如把音频从一个高的44100Hz的采样频率转换到8000Hz。从高采样频率到低采样频率的音频转换是一个有损的过程。API提供了多种的重采样选项和算法。原创 2023-01-10 20:45:42 · 1053 阅读 · 0 评论 -
MP3解码算法原理解析
看懵逼了是吧。这里面有很多概念需要一一讲解。是一种内容分发协议。它采用高效的软件分发系统和共享大体积文件(如一部电影或电视节目),并使每个用户像网络重新分配结点那样提供上传服务。(因为没有专业学过这方面的内容,我暂且把它理解为一段数据,里面的内容有时间再探讨)。:mp3的数据流的传输和同步工作中都是以帧为单位的。帧是MP3最小的格式单元,它不可以再被分割。每一帧头部包含了当前帧的一些基本信息,其中就包括同步信息。同步信息的组成是包含连续的12比特的‘1’。原创 2023-01-09 20:52:04 · 2688 阅读 · 0 评论 -
FFMPEG完美入门资料---004---FFmpeg 裁剪说明
此次是在 linux 环境下进行的,在以后的配置中,如果需要其他的什么编码器或什么 的, 按照选项要求进行配置即可。即使是有经验的用户也偶尔需要使用使用--help 选项, 因为一个复 杂的项目会包含附加的选项。与--prefix 选项类似,但是他是用来设置结构倚赖的文件的安装位置。相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用--enable-FEATURE 来起用它。类似的, --x-libraries 选项提供了向 configure 脚本指明包含 X11 库的目录的方法。原创 2023-01-07 21:55:22 · 1068 阅读 · 0 评论 -
FFMPEG完美入门资料---003---FFmpeg 架构
ffmpeg 项目的数据 IO 部分主要是在 libavformat 库中实现, 某些对于内存的操作部分在 libavutil 库中。数据 IO 是基于文件格式(Format)以及文件传输协议(Protocol) 的, 与具体的编解码标准无关。ffmpeg 工程转码时数据 IO 层次关系如图所示:对于上面的数据 IO 流程, 具体可以用下面的例子来说明, 我们从一个 http 服务器 获取音视频数据, 格式是 flv 的, 需要通过转码后变成 avi 格式, 然后通过 udp 协议进 行发布。原创 2023-01-06 22:09:07 · 626 阅读 · 0 评论 -
直播协议RTMP
说起RTMP协议,相信很多人都比较陌生,这个协议相对HTTP、HTTPS、TCP等我们常见的协议而言,我们在工作中确实较少接触它,但是对现在如火如荼的直播行业,RTMP是一个重要的协议,它在实时音视频场景中使用非常广泛,而且目前市占率很高。本文的主要内容是分析RTMP的协议,当然不是纯理论分析,这样没多大意思,还是结合实践抓包文件来具体分析,这样才能较好地理解RTMP的内涵。具体如何抓包见本文末尾的“Android抓包”模块。希望你阅读完本章之后,自己也能简单地动手操作一下,这样理解深刻一下。原创 2023-01-06 21:45:47 · 2169 阅读 · 4 评论 -
秒懂流媒体协议 RTMP 与 RTSP
流媒体协议,英文学名,用一句人话来解释:流媒体协议是一种用于通过Web传递多媒体的协议。每次观看直播或点播视频时,背后的技术就是流媒体协议。流媒体协议有很多,主要分为三大类:传统视频流协议基于 HTTP 的自适应协议新技术传统视频流协议 传统视频流协议主要有:RTMPRTSP基于 HTTP 的自适应协议 基于 HTTP 的自适应协议主要有:Apple HLSMPEG-DASHAdobe HDS新技术 新技术主要有:SRTWebRTC而我们今天着重要介绍和比较的就是。转载 2023-01-06 21:29:40 · 1664 阅读 · 1 评论 -
FFMPEG完美入门资料---002---FFmpeg 支持能力说明
打开终端,值得一提的是格式转换需要超级用户才能进行,故在命令行输入:su,, 输入密码进入超级用户, 本例中, 以 FFmpeg 将 test.avi 转换为 test.mpg。需要说明的是, 各个版本的 ffmpeg 对屏幕录制的命令不一。2.3.1 FFmpeg 对编码解码器的支持 ffmpeg 支持的编解码器种类共有 280 多种, 涵盖了几乎所有常见音视频编码格式, 能解码几乎所有的音视频, 每种音视频编解码器的实现都在 libavcodec 目录下有具体的 C 语言实现。原创 2023-01-05 22:06:25 · 724 阅读 · 0 评论 -
FFMPEG入门资料---001---介绍和参数说明
4mv 使用 4 个运动矢量 仅用于 mpeg4 -part 使用数据划分 仅用于 mpeg4 -bug param 绕过没有被自动监测到编码器的问题 -strict strictness 跟标准的严格性 -aic 使能高级帧内编码 h263+ -umv 使能无限运动矢量 h263+ -deinterlace 不采用交织方法 -interlace 强迫交织法编码 仅对 mpeg2 和 mpeg4 有效。-ss position 搜索到指定的时间[-] hh:mm:ss[.xxx]的时间格式也支持。原创 2023-01-05 21:49:11 · 648 阅读 · 0 评论 -
WebRTC学习总结
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。SDP(Session Description Protocol,会话描述协议):包含建立连接的一些必要信息,比如IP地址等,sdp由RTCPeerConnection对象方法创建,我们目前不需要知道该对象中的具体内容,使用黑盒传输即可。原创 2023-01-04 21:30:03 · 581 阅读 · 0 评论 -
从0搭建一个WebRTC,实现多房间多对多通话,并实现屏幕录制
这篇文章开始会实现一个一对一WebRTC和多对多的WebRTC,以及基于屏幕共享的录制。本篇会实现信令和前端部分,信令使用fastity来搭建,前端部分使用Vue3来实现。为什么要使用WebRTC WebRTC全称Real-Time Communication,是一种实时音视频的技术,它的优势是低延时。本片文章食用者要求能搭建简单的node服务,docker配置vue框架的使用环境搭建及要求 废话不多说,现在开始搭建环境,首先是需要开启socket服务,采用的是来进行搭建。,本例使用的是3.x来启动的。原创 2023-01-03 21:48:16 · 1753 阅读 · 0 评论 -
如何使用WebRTC建立一个视频会议App(二)
如果房间中已经存在了一个参与者,那么客户端会被添加到房间中,并且向它发送加入事件。服务器传递请求到第二个参与者,第二个参与者反过来在请求反馈方面做了同样的事:创建了它自己的peer connection对象并且设置事件听众,接着存储请求准备一个将会存储在本地的应答,接着通过setLocalAndAnswer函数发送到服务器端。★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。原创 2023-01-03 21:12:41 · 522 阅读 · 0 评论 -
如何使用WebRTC建立一个视频会议App(一)
在这个文件中将会得到网页元素就像div元素的引用,用户用来输入房间号的输入文本,用户点击的按钮,等等。我们不会将其设计的太复杂,它将会是一个简单的一对一视频会议App,并且仅仅使用了WebRTC APIs和一些其他的library来建立一个信令服务器。用户首先看到一个需要输入房间号的屏幕界面,可以是用户想去的任意一个房间,接着当另一个用户想要加入的时候,他可以输入同样的房间号来开始交流通话。就如之前所说,我们将会建立一个简单的一对一视频会议App.它将会有一个房间功能,在每个房间将会主持不同的会议。原创 2023-01-03 20:59:07 · 812 阅读 · 0 评论 -
WebRTC的拥塞控制技术(Congestion Control)
算法(1)由数据的接收方实现,接收方需要记录每个数据包到达的时间和大小,并计算每个数据分组之间(inter-group)的延迟的变化,由此判断当前网络的拥塞情况,并最终输出码率估计值由RTCP feedback(TMMBR或 REMB)反馈给发送方;测量方程进一步改写为 d(i) = m(i) + v(i),其中m(i)符合均值为0的正态分布(标准正态分布),v(i)表示为网络抖动等因素带来的对数据延迟的影响。其中,当|m(i)| < del_var_th(i-1)时K(i)=K_d;原创 2022-12-30 21:25:29 · 1132 阅读 · 0 评论 -
音视频开发系列--H264编解码总结
NAL层:负责将VCL产生的比特字符串适配到各种各样的网络和多元环境中,覆盖了所有片级以上的语法级别。原创 2022-12-30 16:25:02 · 2192 阅读 · 0 评论 -
FFmpeg 滤镜详解
其中被split处理输出的第二路流被命名为[tmp],它又被crop滤镜处理裁去下半部视频,然后通过vflip进行了水平镜像(垂直翻转,即把视频镜像到下半部了)。(8) 视频中去水印delogo ffmpeg -i good_mark.mp4 -vf delogo=x=10:y=10:w=100:h=60 delogo.mp4 (ffmpeg -i good_scale.mp4 -i mark.png -filter_complex overlay=10:10 good_mark.mp4 加水印)原创 2022-12-29 21:24:08 · 1716 阅读 · 0 评论 -
webRTC 实现人脸识别
首先我们需要先了解一下什么是webRTC 他能做什么 webRTC主要是帮我们处理多媒体应用,如音视频通话,屏幕共享都可以实现,主要基于浏览器API调用,其底层浏览器会调用native C++ 等一些库帮我们实现的,而我们在应用层掉API 即可。桌面程序我们选择 tauri 而不是 electron。原创 2022-12-29 20:00:56 · 1282 阅读 · 3 评论 -
WebRTC音频引擎实现分析
本文在深入分析WebRTC关于音频引擎实现代码的基础上,首先给出了WebRTC音频引擎的整体框架,然后静态分析了其实现上的若干重要对象,最后完整分析了音频数据从采集到播放的完整流动过程。通过本文,对WebRTC有了更深入的认识和体会,为未来进一步学习打下坚实基础。作者:weizhenwei★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。见下方!原创 2022-12-28 21:33:10 · 463 阅读 · 0 评论 -
WebRTC中RTP/RTCP协议实现分析
RTP协议是Internet上针对流媒体传输的基础协议,该协议详细说明在互联网上传输音视频的标准数据包格式。RTP协议本身只保证实时数据的传输,RTCP协议则负责流媒体的传输质量保证,提供流量控制和拥塞控制等服务。在RTP会话期间,各参与者周期性彼此发送RTCP报文。报文中包含各参与者数据发送和接收等统计信息,参与者可以据此动态控制流媒体传输质量。RFC3550 [1]定义RTP/RTCP协议的基本内容,包括报文格式、传输规则等。原创 2022-12-28 21:18:21 · 474 阅读 · 0 评论 -
FFmpeg功能命令汇总
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片 ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频//-r 提取图像的频率,-ss 开始时间,-t 持续时间。ffmpeg -i 视频源地址 -vf scale=853:480 -acodec aac -vcodec h264 视频输出地址(如:out.mp4)原创 2022-12-28 20:52:30 · 1126 阅读 · 0 评论 -
FFmpeg常用推流命令
首先确保自已已经安装了nginx + rtmp服务器。打开配置文件nginx.conf 完成如下配置如果没有nginx + rtmp服务器,请阅读这一篇简书文章二、FFmpeg推流 1.推流MP4文件视频文件地址:/Users/xu/Desktop/bangbangbang.mp4acc:RTMP的音频格式flv: RTMP的视频格式输入命令行后,暂时先不要点回车,等设置好本地拉流后,再进行推流。原创 2022-12-28 20:08:01 · 8259 阅读 · 2 评论 -
菜鸟也能懂的 - 音视频基础知识。
说到视频,大家自己脑子里基本都会想起电影、电视剧、在线视频等等,也会想起一些视频格式 AVI、MP4、RMVB、MKV等等。但是我们如果认真思考这些应该就有很多疑问,比如以下问题:mp4 和 mkv有什么区别?视频封装格式 和 解码格式 有什么区别?什么是H.264?什么是 mpeg?等等很多疑问,我们不知道这些问题的答案是因为我们没有去了解他们背后的东西,下面我会给大家分享当初我学习时候的整理的一些知识。原创 2022-12-27 20:52:10 · 2091 阅读 · 0 评论 -
ffmpeg分片 m3u8以及视频截取
EXT-X-ENDLIST:结束标签,如果没有这个标签,都是从倒数第三片开始播放,如果不满三片则不播放。AVERAGE-BANDWIDTH:当播放EXT-STREAM-INF下对应的M3U8时占用的平均码率 可选 CODECS:声明EXT-X-STREAM-INF下面对应的音频编码、视频编码信息。EXT-X-DISCONTINUITY:前一分片与后一分片有不连续的时候播放可能会出错,需要这个标签,以播放当前分片的duraiton时间刷新M3U8列表,然后做对应的加载动作。抽出视频流H.265(测试无效?原创 2022-12-27 20:07:08 · 1501 阅读 · 0 评论 -
一文读懂MP4封装格式
MP4或称MPEG-4第14部分(MPEG-4 Part 14)是一种标准的数字多媒体容器格式。扩展名为.mp4。虽然被官方标准定义的唯一扩展名是.mp4,但第三方通常会使用各种扩展名来指示文件的内容:同时拥有音频视频的MPEG-4文件通常使用标准扩展名.mp4仅有音频的MPEG-4文件会使用.m4a扩展名大部分数据可以通过专用数据流嵌入到MP4文件中,因此MP4文件中包含了一个单独的用于存储流信息的轨道。原创 2022-12-27 17:21:24 · 1008 阅读 · 0 评论 -
RTSP协议之TCP/UDP问题
综上,在可靠连接和资源方面考虑,在嵌入式安防产品中采用TCP方式较多。,此方式比较灵活,它不用另外建立音视频传输的Socket,而直接使用RTSP的Socket,这样做可以节省不少资源开支。原创 2022-12-19 22:15:33 · 2993 阅读 · 1 评论 -
RTSP协议实例分析
rtsp协议在音视频流传输上具有很高的地位,在直播平台、流媒体平台、安防监控中使用较多,学会抓包分析rtsp连接问题,能事半功倍解决问题。★文末名片可以免费领取音视频开发学习资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。见下方!原创 2022-12-19 22:04:54 · 664 阅读 · 0 评论 -
FFMPEG详解(完整版)
FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器,堪称多媒体业界的瑞士军刀。因此,对于从事多媒体技术开发的工程师来说,深入研究FFMPEG成为一门必不可少的工作,可以这样说,FFMPEG之于多媒体开发工程师的重要性正如kernel之于嵌入式系统工程师一般。几个小知识:FFMPEG项目是由法国人Fabrice Bellard发起的,此人也是著名的CPU模拟器项目QEMU的发起者,同时还是的保持者。原创 2022-12-19 22:00:51 · 17482 阅读 · 0 评论 -
FFmpeg filter过滤器使用方法
FFmpeg filter 提供了很多音视频特效处理功能,比如视频缩放、截取、翻转、叠加等。FFmpeg有很多已经实现好的滤波器,这些滤波器的实现位于libavfilter目录之下,用户需要可以调用这些滤波器实现滤波。我们可以通过ffmpeg -filters命令查看FFmpeg支持的过滤器。FFmpeg常用的filter包括:scale:视频/图像的缩放;overlay:视频/图片的叠加;crop:视频/图像的裁剪;trim:截取视频的片段;rotate:以任意⻆度旋转视频。原创 2022-12-16 22:24:46 · 1062 阅读 · 0 评论 -
RTMP 和 RTSP,它们之间有什么区别?
简单地说,流协议就是在两个通信系统之间传输多媒体文件的一套规则,它定义了视频文件将如何分解为小数据包以及它们在互联网上传输的顺序,RTMP 与 RTSP 是比较常见的流媒体协议。原创 2022-12-16 21:49:16 · 1538 阅读 · 0 评论 -
常见音视频编码格式
这种压缩方式的全称叫MPEG Audio Layer3,MP3是利用MPEG Audio Layer 3的技术,将音乐以1:10甚至1:12 的压缩率,压缩成容量较小的file,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度。而且还非常好的保持了原来的音质。压缩率:10~12倍优点:压缩比高,适合用于互联网上的传播缺点: MP3 在 128KBitrate 及以下时,会出现明显的高频丢失。原创 2022-12-16 20:56:56 · 1695 阅读 · 0 评论