技术文章
-
音视频无缝续播的解决方案
现如今互联网最火的两大领域一个是人工智能,另一个就是以抖音、火山小视频为首的短视频APP。我们在使用这些短视频APP的时候又一个很好的体验就是从一个视频的播放从一个界面跳转到另外一…
-
ijkplayer编译实践(基于MacOS NDKr10e)
众所周知ijkplayer是基于FFmpeg开发的一款开源播放器,既然是开源,我们直接在项目中引用不就完事了么,为什么需要自己编译? 这是因为官方默认的编译做了一些功能上的阉割,比…
-
火山引擎 RTC 自研音频编码器 NICO 实践之路
1. 前言 随着互联网技术的不断发展,越来越多的人开始尝试使用或者依赖实时音视频产品解决团队沟通与协作问题。在通话过程中,我们时常会遇到因为网络波动(如拥塞、丢包、延时和抖动等)而…
-
FFMPEG中内存管理
参考n4.4.2版本中ibavutil/mem.c,主要代码早期放在libavcodec/utils.c,后来分拆过来,文件顶部注释中有FFMPEG初版作者大神Fabrice Be…
-
WebRTC 音视频通信实现流程
WebRTC(Web Real-Time Communication),即“网页即时通信”,WebRTC 是一个支持浏览器进行实时语音、视频对话的开源协议,目前主流浏览器都支持We…
-
webrtc 视频会议服务器搭建(webrtc视频会议搭建教程)
通过webrtc 视频会议的需求越来越多,很多人反映搭建webrtc 视频会议服务器便遇到很多问题,这篇文字将webrtc 视频会议搭建过程重新梳理一遍,希望对大家能有帮助,通过下…
-
音视频系列之MP4格式详解
MP4简介 MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分,是“ISO/IE…
-
Loki: 通过融合基于规则的模型提高基于学习的实时视频自适应的长尾性能
最大化实时视频的体验质量(QoE)是一个长期存在的挑战。传统的视频传输协议以少量确定性规则为代表,难以适应异构、高度动态的现代互联网。新兴的基于学习的算法已经显示出应对这一挑战的潜…
-
RTMP封包协议解析
想做一个直播推流而已,为什么还要学习RTMP的协议?我们想回想一下我们推流端的简要流程: 那么在第三步,RTMP包如何封装呢?真的是简单的调用一下API就完事了吗? 我们现在看一段…
-
NDK 编译 FAAC 引入 Android 工程
AAC就是高级音频编码(Advanced Audio Coding),出现于1997年,基于MPEG-2的音频编码技术,目的是取代MP3格式。 2000年,MPEG-4标准出现后,…
-
NDK编译x264引入到Android工程中
H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,…
-
音视频开发进阶课程|第六讲下:色彩和色彩空间·RGB和YUV的采样和存储
在上一篇文章《音视频开发进阶课程|第六讲上:色彩和色彩空间》,我们带大家了解了视频、图像、像素和色彩之间的关系,还初步认识了两种常用的色彩空间,分别是大家比较熟悉的 RGB,以及更…
-
iOS VideoToolbox 硬编指南(VideoToolbox避坑指南)
引言 调用系统 VideoToolbox 的 API 实现一个硬编很容易,仔细看看文档、了解 API 的使用实现一个基本功能相信难不倒大家。但实际工作中有许多细节,一不注意就会掉坑…
-
SurfaceView、TextureView、GLSurfaceView 和 SurfaceTexture
SurfaceView SurfaceView 是一个可以在子线程中更新 UI 的 View,且不会影响到主线程。 它为自己创建了一个窗口(window),就好像在视图层次(Vie…
-
OpenSL ES渲染音频实例
OpenSL ES 是可以让你使用C或者C++来实现高性能,低延迟音频API。ES代表Embedded Systems,在嵌入式系统中单独设计。使用OpenSL ES可以省去nat…
-
AudioTrack播放ffmpeg解码的PCM音频数据
本文主要介绍ffmpeg解码音频并且搭配AudioTrack以及OpenSLES播放PCM原始音频数据。 音频解码 对于使用ffmpeg进行音视频的解码过程,我们来回忆一下这张图:…
-
Android使用OpenGL渲染ffmpeg解码的YUV数据
在《安卓使用SurfaceView绘制ffmpeg解码的视频数据》虽然我们成功地实现了视频的渲染,但是在YUV转换成RGB的时候,我们调用了ffmpeg内部的转换函数,这里面包含大…
-
OpenGL基础知识(OpenGL技术术语)
在前面的实战中,我们已经通过SurfaceView成功渲染视频了。虽然功能上我们是实现了视频的解码和渲染,但是这里有一个性能方面的问题:就是在解码渲染视频的时候CPU使用率会很高。…
-
Android使用SurfaceView绘制ffmpeg解码的视频数据
在上一篇文章《ffmpeg如何将一个视频文件解码为yuv文件》中我们已经使用ffmpeg解码视频为yuv数据文件了,那么yuv数据如何显示呢? 不知道大家是否还记得这张图: 其中一…
-
音视频生产关键指标:采集预览优化丨音视频工业实战
随着相机采集越来越多的与滤镜、美颜、特效等前处理流程结合,关注采集预览的性能变得十分重要。采集预览阶段表示打开相机,但是还没开始进行直播推流或者视频录制的阶段,但这时候一般也开始进…