视频处理
文章平均质量分 71
Lusoel
这个作者很懒,什么都没留下…
展开
-
C++使用FFmpeg库实现图片转视频
这里的实现是使用ffmpeg4.1版本。环境:Centos7.4FFmpeg安装目录:/usr/local/ffmpegg++版本:4.8.5在ffmpeg4.1的版本中有一个转封装的示例代码:remuxing.c,实现的是视频文件的封装转换。用这个示例修改,不断读取图片文件,封装到目标的视频文件中。并设置相应的帧信息。本文不涉及音视频的编解码,是直接将图片从一种封装格式文件中获取出来然后打包成另外一种视频文件封装格式的文件。/** * @file * libavform.原创 2021-12-13 11:32:41 · 7430 阅读 · 3 评论 -
RGB分离术
(1) 分离RGB24像素数据中的R、G、B分量/** * Split R, G, B planes in RGB24 file. * @param url Location of Input RGB file. * @param w Width of Input RGB file. * @param h Height of Input RGB file. * @param num Number of frames to process. * */int simples转载 2021-12-10 18:00:58 · 634 阅读 · 0 评论 -
YUV分离术
本文中像素的采样位数一律为8bit。由于1Byte=8bit,所以一个像素的一个分量的采样值占用1Byte。(1) 分离YUV420P像素数据中的Y、U、V分量/*** Split Y, U, V planes in YUV420P file.* @param url Location of Input YUV file.* @param w Width of Input YUV file.* @param h Height of Input YUV file.*...转载 2021-12-10 17:48:19 · 462 阅读 · 0 评论 -
pts,dts,time_base的理解
PTS:Presentation Time Stamp。PTS 主要用于度量解码后的视频帧什么时候被显示出来。DTS:Decode Time Stamp。DTS 主要是标识读入内存中的Bit流在什么时候开始送入解码器中进行解码。一、时间基的概念PTS 反映帧什么时候开始显示,DTS 反映数据流什么时候开始解码。怎么理解这里的“什么时候”呢?如果有某一帧,假设它是第10秒开始显示。那么它的pts是多少呢。是10?还是10s?还是两者都不是。为了回答这个问题,先引入FFmpeg中时间基的概念,转载 2021-12-10 15:17:18 · 581 阅读 · 0 评论 -
AVPacket 详细说明
AVPacket中的字段可用分为两部分:实际的帧数据、帖的属性数据和相关管理信息数据的属性有以下字段pts 显示时间戳 //取值为time_base的num和den之前的值 dts 解码时间戳 stream_index Packet所在stream的index flats 标志,其中最低为1表示该数据是一个关键帧 duration 数据的时长,以所属媒体流的时间基准为单位 pos 数据在媒体流中的位置,未知则值...原创 2021-12-10 12:12:34 · 7282 阅读 · 0 评论 -
ubuntu20.04 Server安装部署Janus
Janus版本:janus-gateway-0.11.5,注册版本与各组件版本的对应关系,注意组件间依赖的版本匹配问题。1.安装依赖库:下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y安装lua库sudo apt-get install liblua5.3-dev编译运行 Janus Server 需要依赖较多的一些第三方库,而这些依赖库在 Ubuntu 下主要通过 aptitude 进行安装,首先通原创 2021-11-17 17:45:14 · 4320 阅读 · 0 评论 -
WebRTC服务端的常用3种架构方案
WebRTC服务端有:Mesh、SFU、MCU常用的三种架构方案Mesh Mesh端对端的方案,只适用于单对单或小量用户参与的情况。参与方互相之间都有互联。SFU: SFU 的全称是:Selective Forwarding Unit,是一种通过服务器来路由和转发 WebRTC 客户端音视频数据流的方法。这样参与方只需要与Server建立一个连接就可以。但Server只把流直接转发给各个参与者。这样参与者所需要的带宽就是1路上行和N-1路下行,连接和上行...原创 2021-11-17 17:40:52 · 3416 阅读 · 0 评论 -
WebRTC建立互联的技术与步骤
WebRTC是基于ICE来建立来我Web应用间的互联的。由于A和B所处理的网络环境不同,A和B都没有固定我外网IP,当两个处理同一个NAT内部网络时,是能够直接连接成功的。当如A和B处理在NAT的两侧或隔了多个NAT时,中间会有很多防火墙并且网络地址也可能经过了多次转换,就没办法直连了,这时需要借助STUN来处理。STUN就是借助一个中间服务器,来建立A与B的直接连接,也就是我们常说的穿越。顾名思义,穿越就是要穿过重重防火墙来建立双方的连接。当A和B中间的NAT是采用一种被称为对称NAT的...原创 2021-11-17 17:06:28 · 224 阅读 · 0 评论 -
WEBRTC基础知识
WebRTC(Web Real-Time Communication)实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。 WebRTC项目的是让Web开发者能够基于浏览器(Chrome\FireFox\...)不使用任何插件的情况下轻易快捷开发出丰富的实时多媒体应用,包括实时的音视频通讯,视频会议等。 WebRTC项目是由G...原创 2021-11-17 16:25:27 · 346 阅读 · 0 评论 -
Centos7安装WebRTC网关Janus
1.Janus简介Janus 是由Meetecho设计和开发的开源、通用的基于SFU架构的WebRTC流媒体服务器,它支持在Linux的服务器或MacOS上的机器进行编译和安装。由于Janus 是使用C语言进行编写的,因此它的性能十分优秀。Janus 的整体架构图如下图所示。Janus 主要由三个部分组成,分别是Core、Plugin和Transport,下面是相关模块的介绍:Core: Janus的核心部分,其作用是处理数据流的转发,以及各种协议的接入,是WebRTC技术的具体实现。 P原创 2021-08-12 16:24:23 · 961 阅读 · 1 评论