- 博客(49)
- 资源 (38)
- 收藏
- 关注
原创 ffmpeg用到的命令
g++ -o a.out ffcode.cpp -I /home/share/ffmpeg/ffmpeg-3.3.1 -lavcodec -lavformat -lavdevice -lavutilffmpeg -i 123.mp4 out.flvgcc -g -o a.out ffmpeg.c cmdutils.c ffmpeg_cuvid.c ffmpeg_op
2017-05-30 19:03:14 492
原创 ubuntu下 ffmpeg视频编码和转换命令
ffmpeg -i Forrest_Gump_IMAX.mp4 hugefile.yuv ffmpeg -s 640x352 -i hugefile640\ x\ 352.yuv out.avi
2017-05-28 22:16:44 3158
原创 将ffmpeg编译
1. 下载源文件 make 2.make install3. 将ffmpeg命令 编译成a.out 文件,这样便于对源代码阅读,只要在源代码根目录下运行下面的编译就可以 gcc -g -o a.out ffmpeg.c cmdutils.c ffmpeg_cuvid.c ffmpeg_opt.c ffmpeg_vdpau.c ffmpeg_filter.c ffmpeg_v
2017-05-28 21:23:16 353
转载 H.264编码系统几个比较重要的算法
H.264编码系统比较复杂,这里是它的几个比较重要的算法:1. Configure()函数,用于解析命令行参数,读取配置文件,其中,ac表示命令行参数数量,av表示命令行参数。void Configure(int ac, char *av[ ]){……}2. AllocNalPayloadBuffer()函数,用于初始化NAL模块,即分配NAL_Payload_buffer缓冲区。
2017-05-24 16:16:28 578
转载 libevent多线程
利用libevent和多线程 实现多并发的服务器的设计。主进程监听连接的到来使用一个base,进行事件循环。每当 一个连接进来时,创建一个新的线程实现与客户端之间的通信,子线程建立一个base,进行事件循环客户端(多线程): 主线程->连接描述符(socket_fd = connectServer(ip, port);) -》创建子进程(init_read_event_th
2017-05-22 15:42:04 778 1
转载 利用libevent 和线程池实现高并发服务器的设计
主进程添加监听套接字的事件并进行事件循环,将连接描述符放入定义的数据结构中,并在主进程中进行写管道,触发子线程的读管道事件,然后从连接结构中获取连接描述符进行和客户端进行通信。其中主进程和子线程都有不同的基事件base. #include <stdio.h>#include <stdlib.h>#include <unistd.h>#inc...
2017-05-22 15:08:12 5020 3
转载 libevent多线程使用bufferevent的那些事
void do_accept(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *sa, int socklen, void *ctx){ //不使用Nagle算法,选择立即发送数据而不是等待产生更多的数据然后再一次发送 int optval = 1; setsockopt(fd, S
2017-05-22 12:18:36 1221
转载 图文详解YUV420数据格式
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chro
2017-05-21 20:12:53 221
原创 一 视频播原理
1.音视频涉及技术有:(1) 压缩编码技术 (2)封装技术 (3)流媒体协议技术 2.音视频封装格式有avi rmvb mp4 flv mkv(把音视频打包成一个文件的规范)3.视频播放器的原理解协议(http rmtp)-->解封装(mp4 mkv ts flv)-->音频/视频解码(PCM)解码(YUV420P RGB)
2017-05-21 15:30:21 380
原创 好的视频编解码网址和博文地址
http://blog.csdn.net/yangzhongxuan/article/category/1242740
2017-05-18 08:39:48 1035
转载 十四、H.264的变换编码(一)——矩阵运算与正交变换基本概念
GitHub代码地址:点击这里1. 矩阵的定义矩阵,英文称为”Matrix”,是数学中一个非常重要的概念。从形式上看,矩阵可以用一个m行n列的数组成的表格表示。如下图可表示一个4行4列的方形矩阵:在实际应用中,矩阵可以在多个技术领域发挥重要作用,如音视频压缩编码、机器学习、人工智能等领域。2. 矩阵的运算矩阵必须在计算中才能与其他
2017-05-17 22:29:08 1269
转载 十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据
GitHub代码地址:点击这里1. H.264的CAVLC解析宏块残差数据的流程在H.264的解码器在解析宏块的残差数据时,其流程类似于上文提到的CAVLC编码的逆过程。在解析一个宏块残差的时候,首先解析的是残差矩阵的非零系数以及拖尾系数的个数numCoeff和trailingOnes。随后是每一个拖尾系数的符号trailingSigns。而后是每一个非拖尾非零系数level的
2017-05-17 22:27:35 749
转载 十三、熵编码算法(3):CAVLC原理
GitHub代码地址:点击这里上下文自适应的变长编码(Context-based Adaptive Variable Length Coding, CAVLC)1. 引言在前述的几章节的博文/视频中,我们已经了解到熵编码是利用信息的统计冗余进行数据压缩的无损编码方法,并且已经讨论过了熵编码的基本原理、H.264中使用的语法元素解析算法“指数哥伦布编码”的算法与实践:
2017-05-17 22:24:49 2715
转载 十二、解析H.264码流的宏块结构(上)
GitHub代码地址:点击这里H.264中Slice Body——宏块结构(Macroblock)的解析1.Slice Data结构的定义在已经实现了一个slice的header部分之后,下面的工作将是研究如何解析一个slice的主体,即Slice Body部分。一个Slice的body部分主要是一个个的宏块结构Macroblock组成,此外还存在一些辅助的信息。标准文档中
2017-05-17 22:23:14 2183
转载 十一、H.264的Slice Header解析
GitHub代码地址:点击这里H.264中的条带(Slice)1. Slice的概念我们已经知道,整个H.264的码流结构可以分为两层:网络抽象层NAL和视频编码层VCL。在NAL层,H.264的码流表示为一系列的NAL Units,不同的NAL Units中包含不同类型的语法元素。前面两篇中所解析的序列参数集SPS和图像参数集PPS就是其中重要的两个部分,其中包含了控制解
2017-05-17 22:22:21 6003 1
转载 十、图像参数集Picture Paramater Set(PPS)解析
GitHub代码地址:点击这里除了序列参数集SPS之外,H.264中另一重要的参数集合为图像参数集Picture Paramater Set(PPS)。通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。1. 图像参数
2017-05-17 22:18:58 1029
转载 九、序列参数集Sequence Paramater Set(SPS)解析
在H.264标准协议中规定了多种不同的NAL Unit类型,其中类型7表示该NAL Unit内保存的数据为Sequence Paramater Set。在H.264的各种语法元素中,SPS中的信息至关重要。如果其中的数据丢失或出现错误,那么解码过程很可能会失败。SPS及后续将要讲述的图像参数集PPS在某些平台的视频处理框架(比如iOS的VideoToolBox等)还通常作为解码器实例的初始化信息使
2017-05-17 22:17:52 1741
转载 八、H.264中的熵编码基本方法、指数哥伦布编码
1. H.264中的熵编码基本方法在成功从NAL Unit中获取到语法元素的码流之后,接下来就是对语法元素的码流进行解析。根据我们在前面的博文中所讲述的H.264编码框架图,经过预测、变换量化等步骤后得到的H.264语法元素将通过熵编码器压缩为符合标准的H.264码流。因此,为了还原各个语法元素,必须对码流使用熵编码的解码器进行解码。在H.264的标准协议中,不同的语法元素指定了不
2017-05-17 22:17:15 1754
转载 七、 熵编码算法(1)——基础知识
1. 熵编码概念“熵”这一概念原本来自于化学和热力学,用于度量能量退化的指标,即熵越高,物体或系统的做功能力越低。后来香农将这一概念引入到信息论中,用于表示消息的平均信息量。信源的熵通常可以表示信源所发出信息的不确定性,即越是随机的、前后不相关的信息,其熵越高。在信息论中,香农提出了信源编码定理。该定理说明了香农熵与信源符号概率之间的关系,说明信息的熵为信源无损编码后的平均码字长度
2017-05-17 22:16:36 2657
转载 六. NAL Unit格式解析
GitHub代码地址:点击这里在有序字节流格式的H.264码流中,我们可以根据前缀起始码0x 00 00 01或0x 00 00 01获取到一个完整的NAL Unit所包含的的字节数据。H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用。因此将H.264的码流解析为NAL Unit之后,下一步将是对NAL Unit中的数据进行解析。1. NA
2017-05-17 22:15:29 2946
转载 五. H.264的码流封装格式
H.264的语法元素进行编码后,生成的输出数据都封装为NAL Unit进行传递,多个NAL Unit的数据组合在一起形成总的输出码流。对于不同的应用场景,NAL规定了一种通用的格式适应不同的传输封装类型。通常NAL Unit的传输格式分两大类:字节流格式和RTP包格式;字节流格式:字节流格式在H.264标准的协议文档中在Annex B中规定,是大多数编码器实现的默认输出格式。字节流格式
2017-05-17 22:14:24 1338
转载 四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码
常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码我们已经知道,H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法。H.264标准并未规定编码器的实现或流程,这给了不同的厂商或组织在编码实现方面极大的自由度,并产生了一些比较著名的开源H.264编解码器工程。其中H.264编码器中最著名的两个当属JM和X264,这二者都属于H
2017-05-17 22:13:38 9774
转载 三. H.264简介
一. H.264视频编码标准H.264视频编码标准是ITU-T与MPEG合作产生的又一巨大成果,自颁布之日起就在业界产生了巨大影响。严格地讲,H.264标准是属于MPEG-4家族的一部分,即MPEG-4系列文档ISO-14496的第10部分,因此又称作MPEG-4/AVC。同MPEG-4重点考虑的灵活性和交互性不同,H.264着重强调更高的编码压缩率和传输可靠性,在数字电视广播、实时视频通
2017-05-17 22:12:43 456
转载 二. 主流视频编码标准的发展
http://www.voidcn.com/blog/shaqoneal/article/p-6123909.html一. 主流视频编码标准的发展长期以来,视频编码标准主要由两个国际组织负责制定:国际电信联盟ITU-T和国际标准化组织ISO。目前影响力最强的视频编码标准基本均出自这两个组织:除了上述两个组织之外,其他比较有影响力的标准还有:
2017-05-17 22:11:38 3179
转载 一. 视频信息与压缩编码
一、人与世界的交互从远古时代人类文明诞生之日起,人类就在人类就在不断为适应环境、改造环境而艰苦斗争。其中最为基础的前提就是利用感官对外界信息的获取。利用各种感官,人类可以与世界环境进行多种不同的信息交互,例如:嗅觉:识别各种气味,辨别环境变化和食物、饮水的质量等;听觉:识别同类的联络信息和天敌等危险信号等味觉:挑选最适宜的食物触觉:制作与使用工具时非常重要另
2017-05-17 22:09:21 847
转载 openssh无法登录:server responded "algorithm negotiation failed”
修改ssh的配置文件 /etc/ssh/sshd_config在配置文件中添加:Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbcMACs hmac-m
2017-05-17 14:38:14 525
转载 深度解析KGDB调试Linux模块和内核
http://blog.csdn.net/swingwang/article/details/72331196转载文章请注明作者和二维码及全文信息。不会编程的程序员,不是好的架构师,编程和内核调试也是出色架构师的必修课。谈起编程人员的数量,基于Linux平台的软件工程师肯定是最多的,没有之一。那今天我们就以Linux为例,深入讲一下内核模块和内核的调试技术和调试工具KG
2017-05-16 23:05:12 3984
转载 Ubuntu14.04安装编译ffmpeg
因为要用到improved dense trajectory特征,用源码需要编译ffmpeg和OpenCV,网址给出的源码需要的OpenCV-2.4.2 和ffmpeg-0.11.1都比较老,我用的是比较新的opencv2.4.12和ffmpeg-snapshot.tar.bz2 (2016-05-22)。本文主要基于此官方指导编译1. 安装依赖sudo apt-get u
2017-05-16 23:03:21 472
转载 RGB与YUV转换
1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确的满足各自的需求,就出现了各种各样的色彩空间模型来量化的描述颜色。我们比较常接触到的就包括 RGB / CMYK / YIQ / YUV / HSI等等。
2017-05-16 16:24:34 577
转载 Linux tcpdump命令详解
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tcpdump普通...
2017-05-10 19:59:43 322
转载 setsockopt
#include int setsockopt( int socket, int level, int option_name,const void *option_value, size_t option_len);第一个参数socket是套接字描述符。第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET。opt
2017-05-10 10:22:26 267
转载 mmap详解
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域
2017-05-10 00:11:41 242
转载 mmap
简单的目录mmap基础概念mmap内存映射原理mmap和常规文件操作的区别mmap优点总结mmap相关函数mmap实例mmap基础概念1.mmap内存映射原理mmap是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对应关系;实现这样的映射关系后,
2017-05-10 00:01:03 614
转载 Ubuntu 安装mysql和简单操作
ubuntu上安装mysql非常简单只需要几条命令就可以完成。 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client 3. sudo apt-get install libmysqlclient-dev 安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成
2017-05-09 22:50:44 542
转载 gdb调试多进程和多线程命令 .
1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明parent
2017-05-09 16:47:52 355
转载 iovec结构体定义及使用
[cpp] view plain copy print?#include struct iovec { ptr_t iov_base; /* Starting address */ size_t iov_len; /* Length in bytes */ }; struct iovec定义了一个向量元
2017-05-08 15:48:34 643
转载 libevent+多线程的服务器模型
最近在看memcached的源码,觉得它那种libevent+多线程的服务器模型真的很不错,我将这个模型封装成一个C++类,根据我的简单测试,这个模型的效率真的很不错,欢迎大家试用。这个类的使用方法很简单(缺点是不太灵活),只要派生一个类,根据需要重写以下这几个虚函数就行了://新建连接成功后,会调用该函数virtual void ConnectionEvent(Conn *conn
2017-05-07 15:37:57 1496
转载 Linux如何查看端口状态
在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
2017-05-07 11:22:05 89504
转载 网络编程学习笔记--1.socket可读可写条件
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45788591socket可读可写条件,经常做为面试题被问,因为它考察被面试者对网络编程的基础了解的是不是够深入。要了解socket可读可写条件,我们先了解几个概念:1.接收缓存区低水位标记(用于读)和发送缓存区低水位标记(用于写):
2017-05-07 10:43:47 389
深入剖析NGINGX
2018-01-31
source insight
2017-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人