- 博客(109)
- 资源 (6)
- 收藏
- 关注
原创 git 错误: Unable to find remote helper for ‘https‘解决方法
今天编译git2.28.0安装,会出现fatal: unable to find remote helper for 'https'网上搜索发现是:将 /usr/libexec/git-core 纳入 PATH,至少在使用 git 之前,设置一下PATH。$ PATH=$PATH:/usr/libexec/git-coregit-core下面有git-remote-https等...
2021-01-02 13:19:47
7426
1
原创 WebRTC服务器模型
目录1 1对1通话2 多对多通话2.1 mesh网络模型2.2 SFU网络模型2.3 MCU网络模型2.4 常用webrtc开源服务器1 1对1通话两端浏览器(clientA,clientB)可以直接音视频通话,而这种情况又可以分为两种情况:P2P(点对点通信) 成功 ClientA 与ClientB 之间直接建立起数据通道 P2P 失败 需要中转服务器参与在ClientA 与ClientB 之间进行数据转发为什么存在这两种情况下呢?因为一般情况下,因为IPv4地址
2020-12-21 20:26:29
764
转载 音视频会议开源软件
转自:http://www.oschina.net/project/tag/227/video-conferencing?lang=0&os=0&sort=view&p=1 视频会议系统OpenMeetings OpenMeetings是一个多语言可定制的视频会议和协作系统。它支持音频、视频,能让你查看每个与会者的桌面。OpenMeetings还包含一个白板,通过白板可以导入各种格式的图片和涂鸦。 在线演示:http://www.openmeetings...
2020-12-10 11:26:41
1323
原创 虚函数及虚函数表
虚函数及虚函数表各个类对象共享类的虚函数表,每个类对象有个虚函数指针vptr,虚函数指针vptr指向虚函数表(对于只有一个虚函数表的情况)。虚函数简单的说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类的所有虚函数对应的函数指针。C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术
2020-11-26 11:58:31
2671
2
原创 memcpy和memmove函数的实现
void* memcpy(void* memTo, void* memFrom, size_t size){ assert(memTo != NULL && memFrom != NULL); char* temFrom = (char*)memFrom; char* temTo = (char*)memTo; while(size-- > 0) *temTo++ = *temFrom++; return memTo;}memmove主要考虑了内存重叠的问题:.
2020-07-16 11:10:11
415
原创 RTMP协议详解
1. handshake1.1 概述rtmp 连接从握手开始。它包含三个固定大小的块。客户端发送的三个块命名为 C0,C1,C2;服务端发送的三个块命名为S0,S1,S2。握手序列:客户端通过发送 C0 和 C1 消息来启动握手过程。客户端必须接收到 S1 消息,然后发送 C2 消息。客户端必须接收到 S2 消息,然后发送其他数据。 服务端必须接收到 C0 或者 C1 消息,然后发送 S0 和 S1 消息。服务端必须接收到 C2 消息,然后发送其他数据。握手示意图. +
2020-05-25 15:57:46
2120
原创 TS封装格式介绍及解析
ts文件分为三层:ts层(Transport Stream)、pes层(Packet Elemental Stream)、es层(Elementary Stream)。es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层是在pes层上加入了数据流识别和传输的必要信息。ts层ts包大小固定为188字节,ts层分为三个部分:ts header、adaptation field、payload。ts header固定4个字节;adaptation fie..
2020-05-24 20:03:09
4558
原创 MP4封装格式介绍及解析
概述MP4文件由许多box组成,每个box包含不同的信息, 这些box以树形结构的方式组织。以下是主要box的简要说明:根节点之下,主要包含三个节点:ftyp、moov、mdat。ftyp:文件类型。描述遵从的规范的版本。 moov box:媒体的metadata信息。 mdat:具体的媒体数据。说明:在 mp4 中默认写入字节序是 Big-Endian的。分析mp4文件的工具:mp4box.js:一个在线解析mp4的工具。 bento4:包含mp4dump、mp4e.
2020-05-24 15:57:08
9698
原创 FLV封装格式介绍及解析
FLV封装格式FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv。FLV封装格式是由一个文件头(flie header)和 文件体(file Body)组成。其中,FLV body由一对对的(Previous Tag Size字段 + tag)组成。Previous Tag Size字段 排列在Tag之前,占用4个字节。Previous
2020-05-24 10:50:39
3040
原创 MP3文件结构解析
参考以下链接,写的很详细。https://blog.youkuaiyun.com/u010650845/article/details/53520426
2020-05-23 22:08:42
475
原创 AAC音频格式分析
AAC概述 AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术。由Fraunhofer IIS、Dolby Laboratories、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。 AAC是新一代的音频有损压缩技术,它通过一...
2020-05-23 21:19:21
2231
转载 RTSP协议
RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。RTSP作为一个应用层协议,提供了一个可供扩展的框架,使得流媒体的受控和点播变得可能,它主要用来控制具有实时特性的数据的发送,但其本身并不用于传送流媒体数据,而必须依赖下层传输协议(如RTP/RTCP)所提供的服务来完成流媒体数据的传送。RTSP负责定义具体的控制信息、操作方
2020-05-22 20:37:12
3460
原创 RTP/RTCP协议
RTP/RTCP协议背景流(Streaming)是近年在Internet上出现的新概念,其定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称,即流媒体技术;狭义上的流媒体是相对于传统的下载-回放方式而言的,指的是一种从Internet上获取音频和视频等多媒体数据的新方法,它能够支持多媒体数据流的实时传输和实时播放。通过运用流媒体技术,服务器能够向客户机发送稳定和连续的多媒体数
2020-05-21 17:10:40
54115
原创 RTP载荷H264视频流
H264 RTP包解析 预备 视频: 由一副副连续的图像构成,由于数据量比较大,因此为了节省带宽以及存储,就需要进行必要的压缩与解压缩,也就是编解码。 h264裸码流: 对一个图像或者一个视频序列进行压缩,即产生码流,采用H264编码后形成的码流就是h264裸码流。 码流传输: 发送端将H264裸码流打包后进行网络传输,接收端接收后进行组包还原裸码流,然后可以再进行存储,转发,...
2020-05-21 11:52:33
52097
转载 H264与H265的区别
转载自:https://blog.youkuaiyun.com/fireroll/article/details/77827156目录:1.编解码框架差异2.压缩性能比较3.各模块技术差异汇总4.块划分结构5.帧内预测6.帧间预测7.去块滤波8.SAO滤波9.Tile10.WPP11.Dependent slice12.其他技术1.H.264与H.265的主要差异H.265仍然采用混合编解码,编解码结构域H.264基本一致,主要的不同在于:...
2020-05-20 17:43:37
12256
原创 H264的基本原理
H264概述H264 是 MPEG-4 标准所定义的编码格式,标准写法应该是H.264。H264 视频格式是经过有损压缩的,但在技术上尽可能做的降低存储体积下获得较好图像质量和低带宽图像快速传输。H264压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:帧内预测压缩,解决的是空域数据冗余问题。 帧间预测压缩(运动估计与补偿),解决的是时域数据冗余问题。 整数离散余弦变换(DCT),将空间上的相关性变为频域上无关的数据然后进行量化。 CABAC压缩。经过压缩后的帧分为:I帧,P.
2020-05-19 21:01:05
62975
1
原创 FFmpeg —— MP4转FLV(带关键帧)
我们通过以下命令生成的FLV文件没有快进功能ffmpeg -i input.mp4 output.flv可以通过两种方法来实现第一种不改变原始音视频编码格式,增加参数 -flvflags add_keyframe_index,转换速度快。ffmpeg -i input.mp4 -vcodec copy -acodec copy -flvflags add_keyframe_index output.flv第二种重新指定FLV输出格式的音频编码格式和视频编码格式,转换速度慢。
2020-05-18 11:25:09
4410
1
原创 FFmpeg —— 读取摄像头数据并保存视频为MP4
该程序的实现方式与这边文章类似:FFmpeg —— RTMP推流到流媒体服务器(编码的方式)—— 读取摄像头数据并推流只需要将推流地址改为本地文件名的形式即可。#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswscale/swscale.h"
2020-05-17 17:19:15
13978
原创 FFmpeg —— RTMP推流到流媒体服务器(编码的方式)—— 读取摄像头数据并推流
流媒体服务器的搭建,可以参考这篇文章centos7+nginx+rtmp+ffmpeg搭建流媒体服务器基于命令行的方式推流可以参考这篇文章FFmpeg —— 屏幕录像和录音并推流(命令行的方式)本篇是基于代码的方式来实现的。读取摄像头数据并推流#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{#include "libavcodec/avcodec.h"#include "libavfor
2020-05-17 14:34:29
13288
1
原创 FFmpeg —— RTMP推流到流媒体服务器(编码的方式)—— 屏幕录像并推流
流媒体服务器的搭建,可以参考这篇文章centos7+nginx+rtmp+ffmpeg搭建流媒体服务器基于命令行的方式推流可以参考这篇文章FFmpeg —— 屏幕录像和录音并推流(命令行的方式)本篇是基于代码的方式来实现的。屏幕录像并推流#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{#include "libavcodec/avcodec.h"#include "libavformat
2020-05-17 14:12:30
12394
原创 FFmpeg —— RTMP推流到流媒体服务器(编码的方式)—— 推流本地文件
#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{#include "libavformat/avformat.h"#include "libavutil/mathematics.h"#include "libavutil/time.h"};int main(){ AVFormatContext *ifmtCtx = NULL; AVFormatContext *ofmtCtx = NULL; A.
2020-05-14 22:22:53
11623
原创 FFmpeg —— 屏幕录像和录音并推流(命令行的方式)
Windows方法一:dshow首先需要安装一个软件,screen capture recorder编译好的下载地址是:http://sourceforge.net/projects/screencapturer/files/ 安装后才能使用源码地址是:https://github.com/rdp/screen-capture-recorder-to-video-windows-free查看可用的设备:ffmpeg -list_devices true -f dshow -i dum.
2020-05-14 12:11:23
43365
1
原创 centos7+nginx+rtmp+ffmpeg搭建流媒体服务器
安装nginx和rtmp模块首先进入local目录cd /usr/local下载nginx(没有安装wget的请安装,安装命令:yum -y install wget)wget http://nginx.org/download/nginx-1.9.9.tar.gz解压tar zxvf nginx-1.13.12.tar.gzmvnginx-1.9.9 nginx创建nginx安装目录与模块目录mkdir -p /usr/local/nginx/module...
2020-05-12 17:12:28
24503
原创 可用的直播流地址(持续更新)
目前只找到http直播源RTMP协议直播源RTSP协议直播源HTTP协议直播源CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8CCTV6..
2020-05-11 16:01:53
144940
3
原创 FFmpeg —— librtmp的安装(linux)
安装环境linux版本:CentOS Linux release 7.7.1908 (Core)下载安装(RTMP)进入官网http://rtmpdump.mplayerhq.hu/通过git下载git clone git://git.ffmpeg.org/rtmpdump通过tar包下载http://rtmpdump.mplayerhq.hu/download/编译&安装cd rtmpdumpmakesudo make install...
2020-05-11 15:25:12
12359
原创 FFmpeg —— 18.FFmpeg简易播放器的实现——音视频播放(含音视频同步)
视频播放器基本原理解协议将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如 HTTP,RTMP,或是 MMS 等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用 RTMP 协议传输的数据,经过解协议操作后,输出 FLV 格式的数据。解封装将输入的封装格式的数据,分离成为音频流压缩编码数据和视.
2020-05-10 21:26:46
13089
转载 FFmpeg —— FFmpeg时间戳详解
1. I帧/P帧/B帧I帧:I帧(Intra-coded picture, 帧内编码帧,常称为关键帧)包含一幅完整的图像信息,属于帧内编码图像,不含运动矢量,在解码时不需要参考其他帧图像。因此在I帧图像处可以切换频道,而不会导致图像丢失或无法解码。I帧图像用于阻止误差的累积和扩散。在闭合式GOP中,每个GOP的第一个帧一定是I帧,且当前GOP的数据不会参考前后GOP的数据。P帧:P帧(Pr...
2020-04-30 17:29:28
14980
原创 音视频编解码常用知识点
目录视频播放器原理流媒体协议封装格式(容器)编解码转码帧(Frame)帧率(Frame rate)分辨率比特率(码率)采样率采样位数声道数有损压缩和无损压缩帧内压缩和帧间压缩对称编码和不对称编码音频编码声音数字化三要素音频编码标准视频编码色彩空间RGB色彩空间YUV色彩空间压缩原理熵与冗余帧内编码...
2020-04-29 22:15:47
53155
2
原创 FFmpeg —— FFmpeg常用结构体介绍
结构体之间的关系FFMPEG中结构体很多。最关键的结构体可以分成以下几类:a)解协议(http,rtsp,rtmp,mms)AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议...
2020-04-28 09:28:13
12156
原创 FFmpeg —— FFmpeg常用API函数介绍
目录1.常用API1.1 通用API1.1.1 av_register_all()——弃用1.1.2 内存的分配和释放(av_malloc()、av_free()等)1.1.3 常见结构体的初始化和销毁(AVFormatContext、AVFrame)1.1.4 avio_open2()1.1.5 avcodec_find_encod...
2020-04-27 15:45:28
20839
1
原创 FFmpeg —— 17.FFmpeg简易播放器的实现——视频播放
视频播放器基本原理解协议将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如 HTTP,RTMP,或是 MMS 等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用 RTMP 协议传输的数据,...
2020-04-23 21:06:01
14417
原创 FFmpeg —— 16.FFmpeg简易播放器的实现——音频播放
/* * * FFmpeg+SDL的简易播放器:音频播放器 * */#include <stdio.h>extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswresample/swresample.h"#include "SDL2/S...
2020-04-23 19:53:56
12960
原创 FFmpeg —— 15.示例程序(九):音频编码器(PCM编码为MP3)
代码和上篇几乎一模一样,只需将输出文件的后缀改为mp3即可。程序源码/** * *本程序实现了音频PCM采样数据编码为压缩码流(MP3,WMA,AAC等)。 * */#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{#include "libavformat/avformat.h"...
2020-04-20 20:10:40
12449
原创 FFmpeg —— 14.示例程序(八):音频编码器(PCM编码为AAC)
通过FFmpeg命令生成PCM文件ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le s16le.pcm该命令的作用是把input.mp4文件转换为s16(声卡支持该格式)、小端格式的PCM文件:s16le.pcm注:-i 表示设定输入流-vn 去除视频信息-ar 音频采样率-ac 音频通道数-f 输出格式播放P...
2020-04-20 18:01:18
15106
1
原创 FFmpeg —— 13.示例程序(七):视频编码器(YUV编码为H265)
此程序和上一篇YUN编码为H264类似,仅仅是修改几个参数程序源码/* * * 本程序实现了YUV像素数据编码为视频码流(H264) * */#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{#include "libavdevice/avdevice.h"#include "lib...
2020-04-19 10:58:26
13408
1
原创 FFmpeg —— 12.示例程序(六):视频编码器(YUV编码为H264)
参考:https://blog.youkuaiyun.com/leixiaohua1020/article/details/25430425https://www.jianshu.com/p/5d661ba25ffa流程下面附一张使用FFmpeg编码视频的流程图。使用该流程,不仅可以编码H.264的视频,而且可以编码MPEG4/MPEG2/VP8等等各种FFmpeg支持的视频。图中蓝色背景的函...
2020-04-18 22:16:13
16409
转载 视频编码技术详解
1、引言 如今我们所处的时代,是移动互联网时代,也可以说是视频时代。从快播到抖音,从“三生三世”到“延禧攻略”,我们的生活,被越来越多的视频元素所影响。 而这一切,离不开视频拍摄技术的不断升级,还有视频制作产业的日益强大。 此外,也离不开通信技术的飞速进步。试想一下,如果还是当年的56K Modem拨号,或者是2G手机,你还能享受到现在动辄10...
2020-04-18 14:06:53
73133
11
原创 FFmpeg —— 11.示例程序(五):音视频复用器(muxer——不涉及编码和解码)
参考:https://blog.youkuaiyun.com/leixiaohua1020/article/details/39802913FFmpeg版本:ffmpeg version git-2020-03-30-8d019db简介本文记录一个基于FFmpeg的视音频复用器(Simplest FFmpeg muxer)。视音频复用器(Muxer)即是将视频压缩数据(例如H.264)和音频...
2020-04-17 22:05:33
13109
1
原创 FFmpeg —— 10.示例程序(四):音视频分离(分离为AAC、H264格式)
参考:https://blog.youkuaiyun.com/leixiaohua1020/article/details/39802819流程图程序源码/* * * 本程序可以将封装格式中的视频码流数据和音频码流数据分离出来 * */#include <stdio.h>#define __STDC_CONSTANT_MACROSextern "C"{...
2020-04-17 16:51:38
13336
原创 FFmpeg —— 9.示例程序(三):音视频分离(分离为PCM、YUV格式)
#include <stdlib.h>#include <stdio.h>#include <unistd.h>extern "C"{//封装格式#include "libavformat/avformat.h"//解码#include "libavcodec/avcodec.h"//缩放#include "libswscale/sws...
2020-04-16 16:07:11
14158
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人