视频编解码
文章平均质量分 93
老衲不出家
寨都码农一枚,平常喜欢关注音视频技术,从事音视频行业小几年,主要是音视频编解码,语音处理,移动端音视频开发,博客是一个自我记录的地方,如果不妥之处,请高人不吝赐教,如有侵权,请联系我删除。tanningzhong@126.com
展开
-
ZLMediakit独家特性介绍
1、先播放后推流痛点:推流成功前不能提前播放场景介绍:有些及时推流的场景,存在推流和播放同时发生的场景,这种场景一般是一对一的,譬如说基于rtmp推流的行车记录仪,用户在调阅车载摄像头视频的,下发推流命令给设备时,同时开始播放视频,如果播放请求先于推流到达流媒体服务器,那么流媒体服务器通常会立即返回流未找到的错误,为了解决这个问题,一般的解决方案是,通过设备确认推流成功再开启播放,但是这样往往会增加视频打开延时,拉低用户体验。zlmediakit针对此场景作出特别优化,可以在流不存在时,先不回原创 2022-01-13 19:17:24 · 2854 阅读 · 1 评论 -
音视频基础知识-时间戳的理解
转自:https://mp.weixin.qq.com/s/w-UUR596wRkUOGpKxEIw7Q问题背景:凡是和流媒体和音视频打交道,时间戳基本是一个必须深刻理解的概念。你会在各种各样的传输协议和封装格式中看到这个东西,而且表现形式还不一样。其次这个概念会涉及到音视频播放的同步问题,也会影响音视频播放的控制问题。前者说的是音画同步,后者说的是类似快进,随机点播放等。如果要理解好这个...原创 2020-04-16 18:47:47 · 6773 阅读 · 2 评论 -
在HTML5上开发音视频应用的五种思路
问题背景:无论是实时视频监控还是直播点播等应用场景,最起码的一个操作就是播放视频。其中最基本的思路就是利用OS的API在PC开发桌面应用、在移动端开发Native App,目前这种技术已经成熟,大厂小厂都是这么做的,但是缺点也很明显:开发比较费时费力,需要IOS开发一遍再去Android开发一遍。特别对于一些非刚性需求比如用户家里有一两个监控摄像头,一个礼拜也不会打开看几次,你却要他下载和安装...原创 2019-10-28 09:44:52 · 1189 阅读 · 0 评论 -
音视频解封装:MP4核心Box详解及H264&AAC打包方案
问题背景:上一篇文章《音视频封装:MP4结构概述和分析工具》让大家看了下MP4的主要结构和推荐了一些分析工具,如果你对MP4没有任何了解,还是先看上文,了解MP4的基本结构,其中还有许多工具需要下载和使用。这篇文章借助一个实例分析下核心Box的语法结构和字段含义,其次总结下H264码流的是如何打包到MP4中的,这篇文章也是下篇文章计算一些音视频信息,实现音视频操作和对MP4码流处理的基础。...原创 2019-10-22 14:57:25 · 2534 阅读 · 0 评论 -
音视频封装:MP4结构概述和分析工具
原文地址:https://mp.weixin.qq.com/s/dlHn_Ki_BwUM2Dgst-hjTw问题背景:前面已经讲了好几种封装格式包括了TS、FLV、RTP等。现在用几篇文章讲解下MP4,这种封装格式设计思路和前面都不太一样,其应用范围最广、灵活性最高、跨平台最好,兼容性最强。带来的负面影响就是格式本身比较复杂,特别是在封装和转封装方面代码实现起来比较长。这个系列会和前面...原创 2019-10-22 14:54:40 · 1076 阅读 · 0 评论 -
音视频压缩:H264码流层次结构和NALU详解
问题背景:前面在讲封装格式过程中,都有一个章节讲解如何将H.264的NALU单元如何打包到TS、FLV、RTP中,解装刚好相反,怎么从这些封装格式里面解析出一个个NALU单元。NALU即是编码器的输出数据又是解码器的输入数据,所以在封装和传输时,我们一般处理对象就是NALU,至于NALU内部到底是什么则很少关心。甚至我们在编解码时,我们只需要初始化好x264编码库,然后输入YUV数据,它就会给...原创 2019-10-14 14:10:55 · 1337 阅读 · 0 评论 -
5G媒体流架构
引言本文来自IBC2019(国际广播大会),主要讲述了3GPP为5G开发了一种新的媒体流架构,其中加入了媒体产业的最新成果和5G系统提供的新特性。该媒体服务架构注重移动网络运营商和媒体服务提供商之间的协作场景的优化,同时这些优化也适应传统广播的发展需要。新的架构支持目前支持单播下行媒体分发和上行流媒体。5GMSA的背景现行的3GPP分组交换流(PSS)架构是为3...原创 2019-10-14 11:16:36 · 1328 阅读 · 0 评论 -
针对android&ios yuv旋转、镜像、格式转换、裁剪 算法实现
http://blog.csdn.net/dangxw_/article/details/50903693移动端录像在yuv数据上存在如下问题: 1.无论Android还是iOS都不能直接从摄像头取出颜色空间为i420的数据,所以在编码前需要进行格式转换。2.而且由于所取图像得分辨率必须是摄像头所提供分辨率中得一组,所以有可能需要裁剪。3.另外由于1)想让无论用户哪个方向拿手机所录的视频内容永远“...原创 2018-03-20 17:31:55 · 747 阅读 · 0 评论 -
H264/SVC Temporal Scalability
在多人远程会议或直播系统中,参与的用户可能处于不同的网络环境(有线、wifi、3G、4G)中,网络质量各不一致,为了所有用户可进行远程会议或者直播的观看,简单的做法就是降低发送端的视频码流,这样不管网络质量好坏,参与的用户都将观看低码率的视频流。这种方案缺点在于大部分网络较好的用户会被少数的网络较差的用户给拖累。这里介绍 H264 编码器中的 Temporal Scalability 机制来优化该...原创 2018-06-05 11:30:54 · 4521 阅读 · 0 评论 -
openH264参数总结
在基于webrtc项目中用到了openH264编码器,在实际应用中对编码器的关键参数优化给出一些总结和建议:1.iRCMode:码率控制模式:0值对应quality mode(RC_QUALITY_MODE)更侧重保证视频质量,码率稳定性控制稍差;1值对应bitrate mode (RC_BITRATE_MODE),更侧重保证码率的稳定性。 建议该参数设置为1:iRCMode =1;2. iTe...原创 2018-05-30 15:39:10 · 3774 阅读 · 0 评论 -
webrtc branch 63版本 ios硬编H264与android和pc不能互通解决
问题描述ios硬编H264不能与android和pc版本互通,android和pc解码时候crash解决方案修改modules/video_coding/codecs/h264/h264_decoder_impl.cc文件,匹配ios硬编AV_PIX_FMT_YUVJ420P格式。修改如下:@@ -32,7 +32,8 @@ namespace {-cons...原创 2018-07-31 14:13:31 · 1388 阅读 · 0 评论 -
android音视频指南-支持的媒体格式
本文描述了Android平台提供的媒体编解码器、容器和网络协议支持。作为应用程序开发人员,您可以使用任何可以在任何Android设备上使用的媒体编解码器,包括Android平台提供的媒体编解码器和特定于设备的媒体编解码器。然而,使用与设备无关的媒体编码配置文件是一种最佳实践。下表描述了Android平台中内置的媒体格式支持。不保证在所有Android平台版本上都可用的编解码器在括号中注明,...翻译 2018-10-30 10:30:48 · 286 阅读 · 0 评论 -
iOS利用FFmpeg实现Video硬解码
需求将编码的视频流解码为原始视频数据,编码视频流可以来自网络流或文件,解码后即可渲染到屏幕.实现原理正如我们所知,编码数据仅用于传输,无法直接渲染到屏幕上,所以这里利用FFmpeg解析文件中的编码的视频流,并将压缩视频数据(h264/h265)解码为指定格式(yuv,RGB)的视频原始数据,以渲染到屏幕上.注意: 本例主要为解码,需要借助FFmpeg搭建模块,视频解析模块,渲染模块...转载 2019-06-20 16:38:47 · 4460 阅读 · 1 评论 -
18个实时音视频开发中会用到开源项目
实时音视频的开发学习有很多可以参考的开源项目。一个实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。我们今天汇总了一些能帮助到正在学习或进行音视频开发的实时音视频开发者们的开源项目与几个也在为开源...原创 2019-06-27 15:48:19 · 1539 阅读 · 0 评论 -
FFmpeg命令
引言FFmpeg是领先的多媒体框架,本帖将展示六个常用的FFmpeg命令。FFmpeg的官网下载地址为:https://ffmpeg.org/download.html。1、基础命令ffmpeg -i input.mp4 output.mp4命令解释: ffmpeg执行ffmpeg程序,如果你没有将ffmpeg加入环境变量,那么你需要输入ffmpeg的完整路径...原创 2019-07-12 16:58:12 · 612 阅读 · 0 评论 -
音视频码率的计算
原文出处https://juejin.im/post/5d34116ce51d4576bc1a0ebf一、前言 音视频处理相关,首先需要面临的是音视频多媒体的比特率问题,比特率也是码率,一个音频比特率为 128kb/s,即每秒128k bit,8bit=1Byte,也就是这个音频每秒钟占用16KB的存储空间,而如果涉及到多声道就应该乘以相应的倍数。 由于视频...原创 2019-07-29 14:48:38 · 4576 阅读 · 0 评论 -
FFmpeg库移植并优化YUV、BGR24 转化
最近项目使用OpenCV实现视频帧透视变换,当切换视频流720p、1280p,出现部分手机和小米ipad2平板等出现视频流卡顿、应用程序退出问题。原因分析:OpenCV API 方法:cvtColor() 实现yuv 与 bgr24转化消耗时间较长,因此视频流的优化,就是减少各种转换消耗的时间。FFmpeg so包编译和jni开发下载FFmpeg 3.1.3网址:https://ffmpeg.or...原创 2018-03-30 10:11:08 · 1288 阅读 · 0 评论 -
YUV I420裁剪
废话不对说哈,直接上代码:static void Cut_I420(uint8_t* Src, int x, int y, int srcWidth, int srcHeight, uint8_t* Dst, int desWidth, int desHeight)//图片按位置裁剪 { //得到B图像所在A的坐标 int nIndex = 0; int BPosX = x;//列 ...原创 2018-03-20 09:26:18 · 1037 阅读 · 1 评论 -
展望2018音视频技术:AV1,AI,区块链,WebRTC
编者按:音视频技术的历史可能要追溯到19世纪末——特斯拉与爱迪生的伟大时代。直到今天,他们的发明依然伴随我们生活的每时每刻。2018年音视频技术将有哪些突破?来自学霸君的资深架构师袁荣喜从编解码器、客户端、传输网络、动态缓冲区以及媒体处理技术几个方面解析实时音视频技术。展望2018,区块链、AI、WebRTC、AV1将成为关键词。本文由LiveVideoStack与《程序员》杂翻译 2018-01-05 10:49:41 · 1178 阅读 · 0 评论 -
pkg-config for mingw 安装及配置
pkg-config for mingw 安装及配置--schroedinger库在mingw+msys上的编译过程 如果有朋友比较着急,不想听在下啰嗦,请直接进入第三节 一. 背景 在msys + mingw上编译schroedinger的过程中,总会冒出以下的这个错误 error: liboil-0.3 >= 0.3.13 is required转载 2015-09-19 15:59:25 · 4621 阅读 · 0 评论 -
android编译ffmpeg+x264
编译x264:下载最新版的x2641.解压到指定的目录2.切换当前目录为该目录3.创建一个shell脚本build_x264.sh,内容如下:export NDK=/opt/android-ndk-r8cexport PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuiltexport PLATFORM=$N原创 2015-09-19 14:17:10 · 439 阅读 · 0 评论 -
X264 利用MinGW 在windows 下的编译
1 第一步,工欲善其事必先利其器,首先下载X264和MinGW,这两个代码都是开源的代码,可以在开源网站上直接获得。尤其说一下MinGW,网址为http://www.mingw.org/,一开始看了一些网友的博客,也按着其提供的链接下载了文件,可是总是出现各种各样的问题,包括msys的路径配置啊什么的,搞了好久没搞对。后来直接下载了最新的MinGW,安装在了C盘下,打开直接就能用了。在下载MinG原创 2015-09-18 13:52:58 · 505 阅读 · 0 评论 -
x264命令参数与代码对应关系
最近弄x264,整理了一下x264参数的对应关系,做了一张excel表格, 如下图:原创 2016-12-16 16:17:58 · 611 阅读 · 0 评论 -
关于编译x264时出现的for Cortex-A8 erratum because it has no mapping symbols问题
linux下编译x264库时提示警告信息:cannot scan executable section 1 of libx264.a(dct-a.o) for Cortex-A8 erratum because it has no mapping symbols要去掉该警告信息,将Makefile中含有 (STRIP) -x 的地方语句-@ $(if $(STRIP), $(STR原创 2016-12-27 17:55:38 · 1322 阅读 · 0 评论 -
在Ubuntu Server上编译FFmpeg
FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所以需要自己编译。FFmpeg官方给出了详细的编译步骤:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu本文和官方指南相比,主要在于改进了以下几处:编译的bin目转载 2017-06-19 11:42:08 · 296 阅读 · 0 评论 -
[FFMPEG硬件加速]nvidia方案
1.目标显卡性能参数;方案可行性;2.平台信息2.1.查看当前显卡信息命令: lspci |grep VGA 信息: 01:00.0 VGA compatible controller: NVIDIA Corporation GK106 [GeForce GTX 645 OEM] (rev a1)解析: GK106,是一个由英伟达公司制造的适转载 2017-06-30 18:01:10 · 2140 阅读 · 0 评论 -
windows10 编译x264出现 undefined reference to `_beginthreadex'解决
windows10 用msys2 编译x264出现如下问题common/win32thread.o:win32thread.c:(.text+0x60): undefined reference to `_beginthreadex'common/win32thread.o:win32thread.c:(.text+0x60): relocation truncated to fit: R_原创 2017-08-01 17:25:11 · 2965 阅读 · 1 评论 -
ffmpeg集成libx264编码错误,提示“Input picture width(xxx) is greater than stride(0)” 问题解决
最近突然萌生了把常用音视频编码集成到ffmpeg库中,这样就不要每次都需要去编译第三方库和集成第三方库了,在调试ffmpeg+x264+fdk-aac的时候,aac成功测试通过,无奈libx264,老提示编码失败,提示如下:[libx264 @ 00de2980] Input picture width (480) is greater than stride (0)经过多放查找,和查看原创 2017-08-11 15:08:13 · 4532 阅读 · 0 评论 -
ffmpeg sws_scale函数详解
1. 介绍如果想在两个AVPixelFormat之间转换,例如将YUV420P 转换到YUV422,亦或者是要改变其大小,放大缩小什么的,就要用到ffmpeg中的swscale函数了,此版本基于ffmpeg 3.3.3版本开发1. AVPixelFormat定义enum AVPixelFormat { AV_PIX_FMT_NONE = -1, AV_PIX_FMT_Y原创 2017-08-11 17:39:19 · 10605 阅读 · 0 评论 -
如何使用MP4SetTrackESConfiguration
在使用MP4v2制作.mp4档案时,如果你要使用的Audio编码格式是AAC,那么你就需要使用MP4SetTrackESConfiguration这个函式来设定解码需要的资料。在网路上看到的例子都是以FAAC编码为居多,大多都可以参考需要的设定,设定MP4SetTrackESConfiguration的方式,都是先利用FAAC里的 faacEncGetDecoderSpecificInfo得到想原创 2017-08-24 11:11:13 · 1784 阅读 · 0 评论 -
多媒体 MP4V2 录制mp4(h264+aac)音视频同步
MP4录制程序是根据mpeg4ip中mpeg4ip-1.5.0.1\server\mp4live\file_mp4_recorder.cpp文件改的。程序支持h264+aac(raw 流)的写入方式,用到了动态库mp4v2-2.0.0,不要用mpeg4ip中那个较老的版本,因为在录制大文件时会有效率问题,下面是一些mp4v2接口的简介。MP4FileHandle MP4Crea原创 2017-08-24 11:23:45 · 1714 阅读 · 0 评论 -
值得推荐的C/C++框架和库
【本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留作存档下次造轮子前先看看现有的轮子吧值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测转载 2017-10-24 15:21:46 · 579 阅读 · 1 评论 -
ExoPlayer里里外外之:流媒体播放与数据结构
播放器中的Buffer(从source读到视频数据经过处理送给Decoder解码之前存放视频数据的缓冲,“source->Buffer->decoder”)设计往往很重要,涉及读、写、跳转等操作的效率,流媒体播放器更是如此,经典的设计比如rolling buffer,还有叫ring-buffer的,简单理解就是一个数组然后让首、尾连起来,通过读指针和写指针的移动来控制读写的位置更新。转载 2017-11-30 09:47:20 · 2756 阅读 · 0 评论 -
VP9 vs H.265——下一代视频编码标准的王道之争
目前下一代主流的视频编码标准有 ITU-T VCEG 推出来的 H.265 和 Google 推出 VP9 。H.265 在 H.264 的基础上保留其中的部分技术,并对相关技术加以改进研发而成。新技术主要通过提升压缩效率、鲁棒性,提高错误恢复能力,减少实时时延、减少信道获取时间等方面,让视频编码达到效率更高。同时 H.265 可以实现利用 1~2Mbps 传输速度传送 720P 普通高清转载 2017-12-15 10:57:59 · 1602 阅读 · 0 评论 -
视频流GPU解码在ffempg的实现(二)-GPU解码器
1.gpu解码器的基本调用流程要做视频流解码,必须要了解cuda自身的解码流,因为二者是一样的底层实现,不一样的上层调用那cuda的解码流程是如何的呢在 https://developer.nvidia.com/nvidia-video-codec-sdk 下载 Video_Codec_SDK_8.0.14解压开来在sampls里面有几个针对不同场原创 2018-01-12 17:38:14 · 7909 阅读 · 4 评论 -
windows平台MingW环境下编译FFMPEG及X264
1.安装MingW环境下载页面:http://sourceforge.net/projects/mingw/files/找到文件mingw-get-inst-xxx.exe,我选的最新的安装文件:mingw-get-inst-20120426.exe注意,下载完后该exe文件就是安装文件,安装时请选上所有的选项。安装过程可能需要几个小时。安装yasm,下载页面为http://yas转载 2015-09-19 11:22:15 · 1847 阅读 · 0 评论