
视频编解码
文章平均质量分 59
tkp2014
这个作者很懒,什么都没留下…
展开
-
音视频封装格式、编码格式知识
常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准。一个完整的视频文件是由音频和视频2部分组成的。H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。例如:将一个Xvid视频编码文件和一个MP3音频编码文件按AVI封装标准封装以后,就得到一个AVI后缀的视频文件,这个就是我们常见的AVI视频文件了。转载 2017-09-11 11:22:00 · 728 阅读 · 0 评论 -
H264学习方法-心历路程-资料搜集
我的H.264学习历程 半年前,我知道了H.264这个名词。那个时候决定学习H.264,可是我连资料都不知道如何收集。而且整个学校就只有我一个人在学习H.264,找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网上认识一个学习H.264的同志真的是一件让我很高兴的事。 后来慢慢在网上找到了一些介绍H.264的文章,当然也找到了peter李的网站,找到转载 2015-08-02 15:24:10 · 768 阅读 · 0 评论 -
VS2010调试JM8.6
JM代码网址:http://iphome.hhi.de/suehring/tml/download/old_jm/选择下载JM8.6版本,用VS 2010打开tml.sln,如下图所示:其中,“lencod”用于视频编码,“ldecod”用于视频解码,“rtpdump”暂时不用管。接下来需要搭建环境,首先针对“lencod”进行配置:转载 2015-07-16 19:36:12 · 1850 阅读 · 0 评论 -
H.264基本概念
frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slice group:条带组,每一帧/场图像中,按照光栅扫面的顺序,将MB/MB对分成多个条带(slice)。I/转载 2015-07-15 19:15:51 · 818 阅读 · 0 评论 -
FFmpeg参数
参数FFmpeg可使用众多参数,参数内容会根据ffmpeg版本而有差异,使用前建议先参考参数及编解码器的叙述。此外,参数明细可用 ffmpeg -h 显示;编解码器名称等明细可用 ffmpeg -formats 显示。下列为较常使用的参数。主要参数-i 设定输入档名。-f 设定输出格式。-y 若输出档案已存在时则覆盖档案。-fs 超过指定的档案大小时则结束转换。-s转载 2015-07-15 22:06:51 · 2963 阅读 · 0 评论 -
运动估计综述
1.定义这里指基于块的运动估计,基本思想是将图像序列的每一帧分成许多互不重叠的块,并认为块内所有像素的位移量都相同,然后对每个宏块到参考帧某一给定特定搜索范围内根据一定的块匹配准则找出与当前块最相似的块,即匹配块,匹配块与当前块的相对位移即为运动矢量。2.运动估计算法2.1全搜索每一点都要比较,需计算(2*d+1)*(2*d+1)次(d是搜索范围)。对分辨率360x288,帧率转载 2015-07-15 21:39:15 · 2899 阅读 · 0 评论 -
块匹配算法--全搜索
原理:假设有两帧图片,第K帧(当前帧)与第K-1帧(上一帧),第K帧图片以M*N的图像块为单位,分成一个个块,块间不重叠。对于第x个图像块A,在第K-1帧中,寻找与它最匹配的图像块A',我们认为A图像块是由A'图像块平移而得到的。于是就把图像块A'到A的运动矢量MV记作图像块A的运动矢量。全搜索算法:假设图像块在X方向与Y方向的可以最大位移为Xmax与Ymax,那么在以图像转载 2015-07-15 21:21:47 · 7640 阅读 · 0 评论 -
SDL播放yuv数据
#include extern "C"{#include "sdl/SDL.h";#include "sdl/SDL_thread.h";};int screen_w = 500, screen_h = 500;const int pixel_w = 320, pixel_h = 180;const int bpp = 12;unsigned char buffer[pix原创 2015-08-08 15:04:33 · 953 阅读 · 0 评论 -
FFmpeg + Opencv 解码和显示
利用FFmpeg开源编解码库实现解码,转换为Mat格式后,使用Opencv显示/*** 抽取ffmpeg中的函数接口实现视频解码* 再通过Opencv中的函数接口播放,同时开启两个视频进行操作*/#define __STDC_CONSTANT_MACROS#include #include #include // Opencv#include原创 2015-07-07 14:12:17 · 1919 阅读 · 0 评论 -
基于NVIDIA显卡的硬编解码
1.硬解码软编码方法:大体流程,先用ffmpeg来读取视频文件的包,接着开启两个线程,一个用于硬解码,一个用于软编码,然后将读取的包传给解码器,编码出的frame download到内存,然后做scale处理,将scale后的帧和编码参数一起传给编码函数,最终生成pkt包,将其写入文件。由于CUVID中CuvideoSource不支持rtsp视频流数据,不能由rtsp地址创建VideoSource转载 2015-07-26 20:30:38 · 2148 阅读 · 3 评论 -
基于CUDA的硬编解码
1.硬解码软编码方法:大体流程,先用ffmpeg来读取视频文件的包,接着开启两个线程,一个用于硬解码,一个用于软编码,然后将读取的包传给解码器,编码出的frame download到内存,然后做scale处理,将scale后的帧和编码参数一起传给编码函数,最终生成pkt包,将其写入文件。由于CUVID中CuvideoSource不支持rtsp视频流数据,不能由rtsp地址创建VideoSource转载 2015-06-13 15:53:30 · 7756 阅读 · 0 评论 -
I、P、B帧的区别
IDR(Instantaneous Decoding Refresh)--即时解码刷新。 I帧:帧内编码帧是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码,视频序列中的第一个帧始终都是I帧。 I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。 I转载 2015-07-10 10:27:07 · 2007 阅读 · 0 评论 -
使用ffmpeg实现解码并保存为yuv文件
通过ffmpeg实现解码并保存为yuv文件/*** 抽取ffmpeg中的函数接口实现视频解码并保存*/#define __STDC_CONSTANT_MACROS#include extern "C"{#include "libavutil/avutil.h"#include "libavcodec/avcodec.h"#include "libavforma原创 2015-06-26 16:14:27 · 2302 阅读 · 0 评论 -
FFmpeg解码-Opencv数据显示-双线程调度
大致想法是:使用ffmpeg实现解码,解码后的数据转化为 Mat,调用 opencv中的函数显示,同时开启两个线程解码显示两路视频/*** 抽取ffmpeg中的函数接口实现视频解码,再通过Opencv中的函数接口播放*/#define __STDC_CONSTANT_MACROS#include #include #include // Opencv#inclu原创 2015-06-26 18:11:38 · 901 阅读 · 0 评论 -
ffmpeg解码数据转为Mat通过opencv函数显示
/*** 抽取ffmpeg中的函数接口实现视频解码,再通过Opencv中的函数接口播放*/#define __STDC_CONSTANT_MACROS#include // Opencv#include #include #include #include extern "C"{#include "libavutil/avutil.h"#include "liba原创 2015-06-26 16:39:48 · 5530 阅读 · 1 评论 -
FFmpeg(2.4.4)中关于图像格式的头文件 -- pixfmt.h
/* * copyright (c) 2006 Michael Niedermayer * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Pu原创 2015-06-26 16:32:06 · 6285 阅读 · 0 评论 -
Table 9-5 -- coeff_token mapping to TotalCoeff(coeff_token) and TrailingOnes(coeff_token)
原创 2015-07-22 17:52:34 · 719 阅读 · 0 评论 -
Table 9-6 -- Codeword table for level_prefix
The syntax element level_prefix is decoded using the VLC specified in Table 9-6原创 2015-07-22 18:09:39 · 423 阅读 · 0 评论 -
VP9编解码标准知识总结
1. How VP9 works, technical details & diagrams Doom9 论坛关于VP的讨论(链接)2. 技术书籍 《VP9 Bitstream superframe and uncompressed header DRAFT 》 《VP9 Bitstream & Decoding Process Specifi原创 2017-09-07 17:00:47 · 3720 阅读 · 0 评论 -
H.264并行解码算法分析
h.264并行解码算法分析并行算法类型可以分为两类Function-level Decomposition,按照功能模块进行并行Data-level Decomposition,按照数据划分进行并行 Function-level Decomposition在h.264解码时进行功能划分,例如对于四核系统,各个核心分别执行下列任务熵解码framen逆量转载 2017-07-19 11:28:08 · 512 阅读 · 0 评论 -
音视频同步记录
学习资源链接:链接1 链接2 链接3原创 2016-08-22 13:47:52 · 878 阅读 · 0 评论 -
视频并行化解码原理的解析
A comprehensive guide to parallel video decodingAs promised, today we’ll talk about video decoding. We will review the most important operations that a decoder has to fulfill, and翻译 2016-04-13 16:38:54 · 533 阅读 · 0 评论 -
什么是码率?
什么是码率?码率是指每秒码流中经过的比特数。此处所指码流即MPEG文件。 一般情况下,MPEG的压缩率是通过指定码率实现的。码率越高,画质和音质越好,而压缩率则越低。 在同一码流中码率始终恒定时,称之为固定码率(CBR,Constant Bit Rate)。 一般情况,MPEG基本上是CBR,VBR技术被DVD等广泛支持。 PAL与NTSC制式的转换问题转载 2016-04-10 09:56:55 · 8059 阅读 · 0 评论 -
VDPAU
维基百科https://en.m.wikipedia.org/wiki/VDPAUmythTVhttps://www.mythtv.org/wiki/Vdpau原创 2016-01-04 13:18:20 · 1621 阅读 · 0 评论 -
H264中的码流结构分析
1、码流总体结构:h264的功能分为两层,视频编码层(VCL)和网络提取层(NAL)。H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00转载 2015-07-23 22:21:57 · 877 阅读 · 0 评论 -
Residual block CAVLC semantics
原创 2015-07-22 20:59:23 · 647 阅读 · 0 评论 -
Table 9-1 -- Bit strings with "prefix" and "suffix" bits and assigment to codeNum rangs
原创 2015-07-22 20:33:30 · 606 阅读 · 0 评论 -
CAVLC中的前缀和后缀
CAVLC中如何处理前缀和后缀的: H264中的CAVLC在对TrailingOne之后的非零系数编码时,使用了前缀(prefix)和后缀 (suffix)的概念,并且用suffixlength来表示后缀的长度。具体编码过程是这样的: 一,将suffixlength初始化为0(如果超过10个非零系数,而且少于3个 TrailingOnes,suffixlength初始化为1)转载 2015-07-22 20:43:48 · 532 阅读 · 0 评论 -
FFmpeg解码封装为类以及Opencv显示播放
// 解码函数接口头文件//#ifndef __FFMPEG_DECODE_H__//#define __FFMPEG_DECODE_H__// Opencv#include #include #include #include extern "C"{#include "libavutil/avutil.h"#include "libavcodec/avcodec原创 2015-08-02 10:58:06 · 866 阅读 · 0 评论 -
基于上下文自适应的可变长编码(CAVLC)
1、TotalCoeffs(非零系数的数目)、TrailingOnes(拖尾系数的数目)非零系数的数目范围从0到16,拖尾系数数目的范围从0到3,如果±1的个数大于3,只有最后3个被视为拖尾系数,其余被视为普通的非零系数。对非零系数数目和拖尾系数数目的编码通过查表得到,共有4个变长表格和1个定长表格可供选择。定长表格的码字是6bit,高4bit表示非零系数个数(TotalCoeff原创 2015-07-20 10:12:49 · 1127 阅读 · 0 评论 -
YV12转为I420
YV12在内存的中的存储顺序为:Y Y Y Y Y Y Y Y Y Y U U U U U U U U UV V V V V V V V I420在内存中的存储顺序为:Y Y Y Y Y Y Y Y Y Y V V V V V V V V U U U U U U U U U二者只是U、V排列顺序不同,YV12(YU原创 2015-06-25 19:07:49 · 1533 阅读 · 0 评论 -
NV12转换为I420
int nv12Toi420(int nWidth,int nHeight,int nPitch,CUdeviceptr* Src_NV12,unsigned char *Dst_i420){ if(m_pTempBufSize < nPitch * nHeight * 3 / 2) { m_pTempBufSize = nPitch * nHeight * 3 / 2; if(m_原创 2015-08-03 14:49:33 · 2795 阅读 · 0 评论 -
Table 9-7 -- total_zeros tables for 4x4 blocks with TotalCoeff(coeff_token) 1 to 7
原创 2015-07-22 19:21:06 · 478 阅读 · 0 评论 -
YUV420、YUV422、RGB24转换
//平面YUV422转平面RGB24static void YUV422p_to_RGB24(unsigned char *yuv422[3], unsigned char *rgb24, int width, int height){ int R,G,B,Y,U,V; int x,y; int nWidth = width>>1; //色度信号宽度 for (y=0;y转载 2015-06-24 23:44:02 · 543 阅读 · 0 评论 -
图文详解YUV
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma转载 2015-06-24 21:21:04 · 627 阅读 · 0 评论 -
YUV Tools 和 YUV Library
关于 YUV 的资源网站http://www.sunrayimage.com/download.html原创 2015-06-24 19:44:32 · 1251 阅读 · 0 评论 -
YV12、I420、YUV420P的区别
YV12和I420的区别一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小 size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色转载 2014-12-13 11:57:28 · 607 阅读 · 0 评论 -
H.264学习网站及资源(不定时更新)
下载视频的网站http://i21www.ira.uka.de/image_sequences/http://trace.eas.asu.edu/yuv/index.htmlhttp://www.powercam.cc/home.php?user=vclab&来源是台湾清华大学视讯实验室其中子分类“96-98 H.264报告”讲解了H.264和JM代码的各个方面,非原创 2014-12-24 22:44:56 · 182038 阅读 · 0 评论 -
YUV的三种存储方式
YUV Planar(p)Y\U\V数据是分开存放的,在三个不同的平面(数组)Y Y Y Y Y Y Y Y Y Y...U U U U U U U U U U...V V V V V V V V V V V...YUV Semi-Planar(sp)Y是单独一个平面(数组),而U、V是交叉存放的,在另一个平面(数组)Y Y Y Y原创 2014-12-23 22:23:58 · 1974 阅读 · 0 评论 -
YUV格式详解(英文版)
Summary: This article describes the 8-bit YUV formats that are recommended for video rendering in the Microsoft Windows operating system. This article presents techniques for converting between YUV an转载 2014-12-23 22:04:13 · 956 阅读 · 0 评论