![](https://img-blog.csdnimg.cn/20200114135012625.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
图形图像与音视频
文章平均质量分 90
记录android,c等常用的音视频开发相关技术
Hirezy
人生没有彩排,每一个细节都是现场直播。
是非审之于己,毁誉听之于人,得失安之于数,成败归之于零.
展开
-
Android图片压缩原理分析(三)—— 哈夫曼压缩讲解
查阅源码后发现:在Android系统在7.0版本之前内部使用的是libjpeg非turbo版,并且为了性能关闭了Huffman编码计算,使用默认的哈夫曼表,而不是算数编码。从Android 7.0版本开始,系统内部使用了libjpeg-turbo库并且启用Huffman编码,标示就是optimize_code已经设置为了TRUE,也就是默认使用Huffman压缩计算生成新的哈夫曼表。libjpeg-turbo是一个C语音编写的高效JPEG图像处理库,相当于是一个libjpeg的增强版。原创 2023-08-24 17:11:35 · 1989 阅读 · 0 评论 -
Android图片压缩原理(二)—— 鲁班压缩算法解析
前面几篇文章,我们了解了一些关于。原创 2023-08-22 00:15:00 · 3061 阅读 · 0 评论 -
Android Bitmap详解(下)之图片缓存详解
public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)//以src为原图,创建新的图像,指定新图像的高宽以及是否可变。public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)以source为原图,创建新的图片,指定起始坐标以及新图像的高宽。原创 2023-08-21 11:25:46 · 1999 阅读 · 0 评论 -
浅谈网络通信中的流量整形
前言在前面的《浅谈网络通信中的 ACK、NACK 和 REX》一文中,我们知道了网络通信中的丢包重传的相关理论和方法,既在网络发生丢包的情况下的补救措施,本文则往前进一步,介绍下如何通过流量整形技术,尽可能地避免网络发生丢包。举个栗子下面我们就以高速路堵车为例,举例说明:堵车的原因有很多种,我们先聊聊图中的这种:假设某公路是 3 股道,也就是说,每时刻能同时进入该公路的车辆并行是 3 辆,那么,如果某一时间段,同时试图并行进入该公路的车辆超过 3 辆,则必然会出现由于公路的承载能力不够带来的 “堵原创 2021-08-31 17:48:44 · 6957 阅读 · 2 评论 -
浅谈音视频网络通信中的延时优化
前言在处理影视频网络通信的过程中,我们经常会遇到如下几个问题,今天就围绕如下几个问题讲讲我个人的优化心得.为什么 TCP 传输的延时比 UDP 大 ?直播的延时往往在 1s 以上,根本原因在哪里 ?RTC 实时通信的延时要求在 400ms 以内,是怎么做到的 ?举个栗子我们就以网上购物,一份快递从发货到送达这一过程的耗时优化为例子:在快递站入库和逗留的时间太长 ?—— 比如,每个快递件入库半天堆积 1 天再才转派发,看看,有哪些可能的因素会影响快递从商家 A 传递到消费者 B 的手中的时原创 2021-08-31 15:51:05 · 7392 阅读 · 4 评论 -
认识网络通信中的 ACK、NACK 和 REX
ACK、NACK、 REX在面试或者网络通信的时候,我们可能经常听到和遇到。今天就来详细介绍一下ACK、NACK、 REX。认识ACK、NACK、 REXACK:Acknowledgement,它是一种正向反馈,接收方收到数据后回复消息告知发送方。NACK:Negative Acknowledgement,则是一种负向反馈,接收方只有在没有收到数据的时候才通知发送方。REX:Retransmission,重传,当发送方得知数据丢失后,重新发送一份数据。那么ACK、NACK、 REX又能为我们解原创 2021-08-31 17:17:17 · 10265 阅读 · 2 评论 -
Android音频开发(七)音频编解码之MediaCodec编解码AAC下
在上一篇初识MediaCodec中,我们认识了MediaCodec,知道了MediaCodec的基本工作流程和开发注意事项,这一篇我将讲述如何利用MediaCodec编解码AAC。1:MediaCodec实时采集音频并编码我们将使用 AudioRecord 和 MediaCodec 实现这个功能,关于 AudioRecord 的使用后期我会单独讲述。为了保证兼容性,推荐的配置是 44.1kHz、单通道、16 位精度。首先创建并配置 AudioRecord 和 MediaCodec。 // 输入原创 2021-03-10 09:37:58 · 3871 阅读 · 0 评论 -
Android音频开发(六)音频编解码之初识MediaCodec上
前五篇我们介绍了关于音频的基础知识,今天来讲述一下音频的重点和难点部分,这一节依然是分上下俩个节点,深入讲述Android音频开发的编解码技术。1.MediaCodec 介绍MediaCodeC是Android 4.1(API16 ) 版本加入的一个新的音视频处理API,旨在提高Android平台的音视频编码能力,Mediacodec类可用于访问底层的媒体编解码器,即编码器/解码器组件。这是Android底层的多媒体支持基础设施的一部分(通常与 MediaExtractor, MediaSync, Me原创 2021-03-09 12:00:19 · 3818 阅读 · 0 评论 -
Android音频开发(五)如何存储和解析最简单的音频wav文件
我们大家都知道,无论是文字、图像还是声音,都必须以一定的格式来组织和存储起来,然后其它的软件再以相同的协议规则,相应的格式才能去打开解析这一段数据,例如,对于原始的图像数据,我们常见的格式有 YUV、Bitmap,而对于音频来说,最简单常见的格式就是 wav 格式了。今天我们简单的介绍一下如何简单的解析解析最简单的音频数据-wav文件。在前面几篇主要介绍了如何利用android系统的 API 来完成原始音频信号的采集和播放,今天就讲解如何在 Android 平台上,将采集到的 PCM 音频数据保存到 wa原创 2021-03-08 16:12:24 · 3900 阅读 · 4 评论 -
Android 音频开发(四) 如何播放一帧音频数据下
再看这一篇文章前,如果你是小白,我建议你先看一下Android 音频开发(一) 基础入门篇这一篇。今天继续讲解如何通过Android SDK自带API实现播放一帧音频数据。我们都知道,Android SDK 自带了三种API实现播放一帧音频数据,他们分别是MediaPlayer,SoundPool,AudioTrack,如果你对这三种API不是很了解,可以先看我的上一篇Android 音频开发(三) 如何播放一帧音频数据上这一篇,这里不在详细介绍。简单来说,MediaPlayer 更加适合在后台长时间播原创 2021-03-03 14:52:39 · 1675 阅读 · 0 评论 -
Android 音频开发(三) 如何播放一帧音频数据上
上一篇只要介绍了如何采集一帧音频,本篇就讲述如何播放一帧音频数据,这一篇我将分倆篇来详细介绍。Android SDK 提供了3套音频播放的API,分别是:MediaPlayer,SoundPool,AudioTrack,在讲解如何播放一帧音频数据前,我先介绍一下这三个API的区别在哪里。SoundPool,MediaPlayer,AudioTrack的区别SoundPool ---- 适合短促且对反应速度比较高的情况(游戏音效或按键声等)MediaPlayer ---- 适合比较长且时间要求不高的原创 2021-03-03 12:20:05 · 2928 阅读 · 0 评论 -
Android 音频开发(二) 采集一帧音频数据
这一节主要介绍如何采集一帧音频数据,如果你对音频的基础概念比较陌生,建议看我的上一篇Android 音频开发(一) 基础入门篇。因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的基础知识后,开发过程中的很多参数和流程就会更加容易理解。1:Android SDK 常用的2种音频采集APIAndroid SDK 提供了两套音频采集的API,分别如下:MediaRecorderMediaRecorder是更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP原创 2021-02-27 19:52:16 · 3200 阅读 · 0 评论 -
Android 音频开发(一) 基础入门篇
今天主要讲解下Android音频开发的入门知识,希望对想入门却不知如何下手的朋友有所帮助,同时希望能得到高手的指点和帮助。深入细化基础技能知识点大致细化如下10个知识点。音频开发的主要应用有哪些(应用场景有哪些)?音频开发的具体内容有哪些?开发音频应用的难点有哪些?音频开发必备基础概念有哪些?常见的音频编码方式有几种?常见的音频压缩格式有几种?Adndroid VoIP相关的开源应用有哪些 ?常见的音频算法处理的开源库有哪些 ?Android提供了哪些音频开发相关的API?10.音原创 2021-02-27 18:57:36 · 5178 阅读 · 0 评论 -
音视频开发基础(二)常用的直播协议
如今网络的发展已经从1G,2G,3G,4G逐渐过渡到5G,5G网络的出现,音视频的使用就变得越来越广。从以前的泛娱乐过渡到了更深次的领域,比如在线教育,在线会议…然而,要想有完美的视屏体验,还是要从很多方面考虑的。只有综合考虑这些潜在的影响因素,才能有更好的用户体验。其中推流和拉流就是其中很重要的一环。竟然设计到视频的推流和拉流,那么就要设计到网络通信,而视频的网络通信是有多种方式的,分别适用于不同的场景。今天我们来介绍四种常用的协议:rtmp、http-flv、hls。下面分别简单讲一下这几种协议的特点原创 2020-10-23 20:12:00 · 845 阅读 · 0 评论 -
Android 音视频开发学习思路大纲
前言大家都知道,2019年是5g元年,随着5g的崛起,音视频将会运用的更加的广阔(比如远程教学,在线教学,在线会议,远程互动,安防监控…),将不再单单局限与目前的泛娱乐平台,将会更加的完善,从而更好的服务于我们的生活。本人是非常爱好音视频开发的,奈何音视频的开发是有一定难度的,因为他涉及的层面比较广,要想深入学习,是需要有一定的学习体系,然后一步一个脚印的深入的。Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的。只能通过一点点的学习和积累把这块的知识串联原创 2020-08-25 17:41:52 · 6865 阅读 · 0 评论 -
音视频数据处理入门:原始视频格式YUV,NV12,NV21,YV12,YU12(I420)
我们知道,在Camera中设置Preview的回调函数onPreviewFrame时谷歌推荐我们使用NV21,YV12两种格式,因为这两种格式几乎在所有的设备里都通用。然而,视频的格式远远不止这俩种,有时可能需要转成NV12,YU12(I420)。。。。。那么,我们就需要理解如何将这些码流格式实现互相转换。我们首先先了解什么是YUV,什么是RGB,因为这是构成图像的基本元素。音视频编码颜色模型中就包括两种RGB和YUV。1.什么是YUV,什么是RGB1.1 什么是RGBRGB我们比较熟悉,它就是我们原创 2020-08-05 18:18:51 · 11743 阅读 · 3 评论 -
用Python从视频中提取每一帧的图片
我们经常会看到某些视频的画面感觉貌美如画,就像出水的芙蓉一般,就情不自禁想截取下来,却又烦于截图的繁琐,现在我就教大家使用Python提取视频中每一帧的画面,让大家不错过每一个精彩的瞬间!准备工作既然是视屏,那么,我们就需要录一段视屏,或者有实时的视屏源,有了视屏源,下面就是要开始实时预览,同时实现实时的抠图。所需要的库只需要准备好cv2,numpy插件即可,可以自行百度 (自行安装)实战分析一切的准备工作准备完毕了,那么剩下的就是实战部分,认真分析,你会发现,整个过程可以分为三步完成,原创 2020-07-17 16:24:59 · 33699 阅读 · 20 评论 -
图像实战 - RGB、YUV图像格式介绍
最近在做人脸识别的项目,所以接触到也采坑了不少关于图像方面的技术,比如RGB、YUV图像格式,今天就主要记录一下常用的几种图像格式:BGR24、NV21、NV12、I420、YUYV…。以下介绍这几种图像格式的内存排列方式。一、相关图像颜色空间介绍1. RGB颜色空间RGB颜色空间以Red、Green、Blue三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。常见的RGB格式有:RGB_565、RGB_888、ARGB_8888、ARGB_4444等。但是也有列外,尤其原创 2020-07-01 20:23:11 · 13913 阅读 · 0 评论 -
使用opencv-python读取多个(海康\大华)网络摄像头的视频流,解决实时读取延迟问题
在上一篇博客中,主要介绍了python之opencv按帧提取视频中的图片,但是,由于最近在做人脸识别的项目,用的是大华的监控摄像头,我发现大华的摄像头实时读取延迟问题特别严重,尤其是主码流,这个问题困扰了我好久,最终想到的方式就是自己实时推流,经过实践,终于解决了实时读取延迟问题。前言同样需要准备对应的python开发环境,具体参考上一篇python之opencv按帧提取视频中的图片,里面介绍了详细的需要的库文件。好了,既然是自己实现实时预览推流,那就要确定使用推流方式,我这里使用的是RTSP地址和格原创 2020-06-27 22:18:45 · 77978 阅读 · 44 评论 -
python之opencv按帧提取视频中的图片
大家应该都有这样的情况:在看到某些视频的画面时感觉美如画,想截取下来却又烦于截图的繁琐,现在我就教大家使用Python提取视频中每一帧的画面,让大家不错过每一个精彩的瞬间!所需的库既然是用是利用python版的opencv来实现视频的预览抠图,那么,需要准备需要的库的如下。cv2pip install opencv-pythonnumpypip install "numpy-1.11.3+mkl-cp27-cp27m-win_amd64.whl安装完所需的库文件后,我们就开始利原创 2020-06-20 10:44:37 · 23528 阅读 · 8 评论 -
Android修图处理算法—— drawBitmapMesh算法实现瘦脸效果
一.初识Canvas.drawBitmapMesh()1. 方法介绍分析先看drawBitmapMesh官方api介绍:打开元源码看看drawBitmapMesh的详细介绍,就知道这个方法参数的具体描述。函数的几个参数的意思如下:bitmap:将要扭曲的图像meshWidth:控制在横向上把该图像划成多少格meshHeight:控制在纵向上把该图像划成多少格verts:网格交叉点坐标数组,长度为(meshWidth + 1) * (meshHeight + 1) * 2vertOff原创 2020-05-25 15:23:58 · 3368 阅读 · 0 评论 -
音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器
前言前一篇我们知道了如何配置FFmpeg开发环境,接下来,就开始简单的推流吧。说道推流前,我们要知道常用的几个直播推流协议。直播推流协议在搭建服务之前先了解下目前主流的几个直播协议:RTMP:实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 ...原创 2020-01-16 12:44:58 · 5356 阅读 · 3 评论 -
音视频之——FFmpeg教程(一)——初见FFmpeg
什么是FFmpeg打开FFmpeg官网首先就会介绍什么是FFmpeg。原文:FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machi...原创 2020-01-14 13:29:08 · 5634 阅读 · 4 评论