音视频编解码
文章平均质量分 88
音视频一些介绍,包括流媒体、音视频解码的一些理论介绍
风雨兼程8023
这个作者很懒,什么都没留下…
展开
-
H264 NAL单元简介
编码时,一帧图片分为若干slice,编码以slice为单位进行,即slice之间编码相互独立。每个slice分为若干宏块MB,宏块MB是H264编码的基本单位。编码完成后输出宏块MB的亮度色度残差值经预测、变换、量化、熵编码后的数据以及多种语法元素,我们需要将编码输出值按照一定的格式打包成NAL单元用于传输。 NAL单元由NAL头和NAL单元载荷组成。NAL单元分为两类:一类为参数集SPS,PPS NAL单元以及补充增强信息SEI NAL单元等。另一类为slice NAL单元。NAL...原创 2020-09-02 19:58:50 · 3153 阅读 · 0 评论 -
关于音视频的一下源码以及工具
1. h264的库网址:http://download.videolan.org/pub/videolan/x264/snapshots/svn:git clone git://git.videolan.org/x264.git2. live555官网:http://www.live555.com/源码下载:http://www.live555.com/liveMedia/public/3. ffmpeg官网及下载:http://ffmpeg.org/...原创 2020-08-27 22:23:08 · 215 阅读 · 0 评论 -
FLV格式封装简析
FLV (Flash Video) 是由 Adobe 公司推出的一种封装格式,主要用于流媒体系统。FLV 封装的媒体文件具有体积轻巧、封装播放简单等特点,很适合网络应用。目前各浏览器普遍使用 Flash Player 作为网页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式广为流行的原因之一。 FLV 封装格式的文件扩展名为 .flv。FLV 文件主要由一个 Header 加上由多个 Tag 组成的 Body 构成。如下所述: 从FLV...原创 2020-07-31 21:40:09 · 282 阅读 · 0 评论 -
RTSP协议的一些分析(七)——传输AAC的RTSP服务器
直接上代码。#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <string.h>#include <time.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include原创 2020-06-03 09:43:30 · 488 阅读 · 0 评论 -
RTSP协议的一些分析(六)——使用RTP传输AAC文件
RTP的封装等信息,我已经在前面的文章中讲过,这里不做赘述。一、AAC的RTP打包1.1 AAC格式 详见音频编码基础。1.2 AAC的RTP打包方式 AAC的RTP打包方式并没有向H.264那样丰富,我知道的只有一种方式,原因主要是AAC一帧数据大小都是几百个字节,不会向H.264那么少则几个字节,多则几千。 AAC的RTP打包方式就是将ADTS帧取出ADTS头部,取出AAC数据,每帧数据封装成一个RTP包 需要注意的是,并不是将...原创 2020-06-03 09:40:46 · 3289 阅读 · 0 评论 -
RTSP协议的一些分析(五)——使用RTSP传输H.264裸码流
把RTSP协议的一些分析(三)——简单的rtsp服务器的实现和RTSP协议的一些分析(四)——RTP传输H.264结合在一起,就是本文的内容,这里不做多介绍,直接上代码。 rtp.h#ifndef _RTP_H_#define _RTP_H_#include <stdint.h>#define RTP_VESION 2#define RTP_PAYLOAD_TYPE_H264 96#define RTP_PAYL...原创 2020-06-02 19:17:56 · 2591 阅读 · 0 评论 -
RTSP协议的一些分析(四)——RTP传输H.264
文章目录一、RTP封装1.1 RTP数据结构1.2 RTP包的结构以及发包函数1.3 源码二、H.264的RTP打包2.1H.264格式以及H.264的RTP打包方式2.2 H.264 RTP包的时间戳计算2.3 源码三、H.264 RTP打包的sdp描述四、测试 在写RTP传输H264之前,需要了解一些知识。1. RTP流的相关知识。2. H264、H265裸流NALU的格式。以上两点在网络流媒体(三)—RTP流有所介绍。一、RTP封装...原创 2020-06-01 19:25:47 · 2122 阅读 · 1 评论 -
RTSP协议的一些分析(三)——简单的rtsp服务器的实现
RTSP服务器有两个部分组成,一个是RTSP的交互,一个是RTP数据的传输,本文主要实现RTSP服务的交互过程。原创 2020-05-29 09:04:41 · 1460 阅读 · 0 评论 -
RTSP协议的一些分析(二)——printf类似函数、sscanf以及log保存到内存中(printf输入重定位)
1、printf函数 #include <stdio.h> int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const ch原创 2020-05-18 19:54:10 · 382 阅读 · 0 评论 -
RTSP协议的一些分析(一)——部分字符串函数的使用
一、源码#include <stdio.h>#include <string.h>int main(int argc,char **argv){ const char *str1 = "abcd"; const char *str2 = "efgcc"; char str3[100]={0}; char *end_ptr; char *token; char str4[100] = "abc/def/hjgc/uuuu"; /* char *strcat原创 2020-05-18 19:14:14 · 625 阅读 · 0 评论 -
网络流媒体(八)———RTSP、RTCP、RTP区别
1 共同点 ① RTSP/RTMP/HTTP都是在应用应用层。 ② 理论上RTSP/RTMP/HTTP都可以做直播和点播,但一般做直播用RTSP/RTMP,做点播用HTTP。做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了。2 区别 ① HTTP将所有的数据作为文件做处理。http协议不是流媒体协议。RTMP和RTSP协议是流媒体...原创 2019-08-18 14:56:01 · 923 阅读 · 0 评论 -
网络流媒体(七)———RTSP
1 简介 DSP产生的媒体流需要通过网络传送到客户端,如图1.1所示为媒体流网络传输示意图,RTSP用于完成服务器与客户端之间的消息交互,RTP用于传递媒体流。RTSP使用TCP协议传输,RTP使用UDP协议传输。 如图1.2所示为RTSP消息交互流程:1. 创建RTSP套接字。2. 等待客户端连接。3. 接收RTSP消息请求。4. 对不同的请求作出相应的处...原创 2019-08-18 14:45:13 · 9069 阅读 · 3 评论 -
网络流媒体(九)———MP4
视频封装格式是指视频数据如何存储的,视频编码格式是指原始视频数据如何编码为二进制数据码流。编码后的视频数据最终通过视频封装格式存储为视频文件。在 mp4 中默认写入字节序是 Big-Endian的。1. 封装格式 ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)定义了一种通用的数字媒体文件...原创 2019-08-25 11:55:20 · 2335 阅读 · 0 评论 -
网络流媒体(六)———PTMP
0 简介 RTMP — Real Time Messaging Protocol(实时消息传输协议),是Adobe公司为Flash播放器和服务器之间开发的音视频数据传输的开放协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,一般传输flv或f4v格式的媒体流。 RTMP协议是应用层协议,是要靠底层可靠的传输...原创 2019-08-11 12:30:20 · 1996 阅读 · 0 评论 -
网络流媒体(三)————RTP流
1. 简介 实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。 ...原创 2019-07-28 13:49:30 · 6787 阅读 · 0 评论 -
网络流媒体(二)————PS流
1. 简介 每个视频帧分为若干NAL单元(NALU)。视频PS格式码流以NALU为单位进行打包。若当前为I帧或P帧的第一个NALU则需加PSH头部。若当前为I帧的第一个NALU还需要加PSM头部。每个NALU分为若干段,每段前需加PES头部,每段数据与PES头部组成PES包。 音频PS格式码流以帧为单位进行打包。音频PS格式码流PSH头部可选。音频关键帧包含PSM头...原创 2019-07-28 13:16:10 · 3892 阅读 · 0 评论 -
网络流媒体(一)————基本概念
1. ES流 原始流(Elementary Streams,ES)是直接从编码器出来的数据流,可以是编码过的视频数据流(H.264、MJPEG等),音频数据流(AAC),或其他编码数据流的统称。ES流经过PES打包器之后,被转换成PES包。 ES是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频ES的PES,只含...原创 2019-07-22 20:35:24 · 1484 阅读 · 0 评论 -
音频编解码基础
1.PCM PCM 脉冲编码调制是Pulse Code Modulation的缩写。脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。1.1 语音编码原理 有一定电子基础的都知道传感器采集音频信号是模拟量,而我们实...原创 2019-08-04 15:03:20 · 5327 阅读 · 0 评论 -
网络流媒体(五)———HLS
1. 简介 HLS(HTTP Live Streaming)是苹果公司提出的基于HTTP的流媒体网络传输协议。HLS把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。HLS 协议由三部分组成:HTTP、M3U8、TS。这三部分中,HTTP 是传输协议,M3U8 是索引文件,TS 是音视频的媒体信息。类似于MPEG-DASH,但是HLS更加简洁,它的基本原理也是...原创 2019-08-04 14:22:17 · 1631 阅读 · 0 评论 -
网络流媒体(四)———TS流
1. 数字视频压缩MPEG-2标准 MPEG-2是MPEG(Moving Picture Experts Group,运动图像专家组)组织制定的视频和音频有损压缩标准之一,它的正式名称为“基于数字存储媒体运动图像和语音的压缩标准”。与MPEG-1标准相比,MPEG-2标准具有更高的图像质量、更多的图像格式和传输码率的图像压缩标准。MPEG-2标准不是MPEG-1的简单升级,而是...原创 2019-08-04 11:54:59 · 15442 阅读 · 4 评论