其他
文章平均质量分 75
cy_weiyi
留下自己的青春
展开
-
x264 学习(一)
Main(int argc,char *argv[]);为了方便起见,不妨改写为:Main(void){......int argc=5;char *argv[]={"main","-o","test.264","foreman.yuv","352x288"}; ......}====================================转载 2015-05-08 14:22:17 · 403 阅读 · 0 评论 -
详解YUV420数据格式
YUV格式有两大类:planar和packed。Ø 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。Ø 对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或转载 2015-05-08 14:45:29 · 2929 阅读 · 0 评论 -
x264编码器的参数设置。
我对编码也是一知半解,很多参数意义也不太清楚,基本都是实际调整参数后,观看效果。如果描述错误,勿喷。我也没打算深入研究,只是想用用该编码器。本人使用x264主要想调整的参数,第一,profile,也就是使用baseline还是main,还是high编码。可以通过该接口设置x264_param_apply_profile();第二, 编码复杂度param.i_leve转载 2015-05-08 14:03:22 · 1374 阅读 · 0 评论 -
H264和X264究竟有什么区别?
视频编码 MPEG2 MPEG4 DIVX Xvid H264 VC1封装格式MKV AVI RMVB MPG TS解析 先简单说一下,mkv和avi的格式只是封装容器,里面封装的是视频流+音频流。容器不会影响画面质量,影响质量的是容器里面封装的什么东西。所以你换换容器,而里面的东西不换的话,对清晰度字幕音频等是没有影响的。补充一下视频基础知识吧,可能有不对的地方。转载 2015-05-07 20:23:10 · 9681 阅读 · 0 评论 -
如何使用JRtpLib3.5.0库中的函数和类对象和让JRTPLIB 发送/接收数据时使用同一个端口收藏
本文介绍了如何使用JRtpLib3.5.0库中的函数和类对象。1、RTP1.1、初始化生成RTPSession对象:RTPSessionSession初始化RTPSessio:Session.Create(RTPSessionParams,RTPUDPv4TransmissionParams),RTPSessionParams的关键作用就是设置时间戳,形式如下: RTPSes转载 2015-05-14 10:51:57 · 674 阅读 · 0 评论 -
C++中socket编程基础详解
对于SOCKET在这里我不想究其历史,我只想说其时它是一种进程通讯的方式,简言之就是调用这个网络库的一些API函数就能实现分布在不同主机的相关进程之间的数据交换. SOCKET中首先我们要理解如下几个定义概念: 一是IP地址:IP Address我想很容易理解,就是依照TCP/IP协议分配给本地主机的网络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置,位置如何来确定,就转载 2015-05-10 10:34:04 · 1115 阅读 · 0 评论 -
V4L2 pixel format
1. v4l2_pix_format定义/* * V I D E O I M A G E F O R M A T */struct v4l2_pix_format { __u32 width; __u32 height; __u32 pixelformat; en转载 2015-05-09 07:59:42 · 1044 阅读 · 0 评论 -
关于I帧,P帧,B帧和NAL单元的联系。还有slice片和NAL与各帧之间的关系
问题如上:先说一下个人的理解。分析一个h264文件,以00 00 00 01开始和结尾的部分代表一个NAL单元。live555里面在给每一帧打上时间戳的时候是读取一个完整的NAL单元,之后再读取下一NAL单元。用analyze_slice_header()函数分析这两个slice_header的区别。如果标志字段frame_num,pic_parameter_set_id,field_pic_转载 2015-05-08 17:47:11 · 3656 阅读 · 0 评论 -
X264编码h264
前言前段时间一直在搞视频编解码与传输的东西,现在基本上整个系统能够实现服务器实时编码打包传输给客户端,客户端实时解码并显示的功能,故将上一阶段的工作整理记录一下,将我使用x264进行h.264编码的过程,使用jrtplib进行h264数据包传输的过程以及使用ffmpeg进行解码的过程都记录下来,一方面是自己做一个总结,另外一方面也是想帮助那些跟我做同样工作的人更快的熟悉这些内容。下面,首先转载 2015-05-08 17:35:56 · 498 阅读 · 0 评论 -
X264编码
前面讲到了关于NAL打包成RTP后进行发送,那么这些NAL应该怎么得到呢?当然如果有现成的H264数据就可以直接用了,但是一般我们的摄像头采集的数据都不是H264格式的,那就需要编码。而且在我们这个项目中是需要进行图像算法处理的,在这些opencv中用到的图基本上都是BGR格式的Mat图,所以处理完后的图像需要重新进行X264编码,生成一个个的NAL后打包成RTP发送出去,这样就会在实现高清的同时转载 2015-05-08 17:13:48 · 712 阅读 · 0 评论 -
x264中重要结构体说明
首先解释一下cli_opt_t的这个_t代表结构图可能是type的意思。同时还有很多i_ b_等作为前缀的变量,其中的I_表示int类型的变量 b表示bool类型的。依次类推。正式进入主题。typedef struct { int b_progress; int i_seek; hnd_t hin; hnd_t hout; FILE *转载 2015-05-08 16:48:47 · 413 阅读 · 0 评论 -
V4L2视频采集 X264编码项目总结(下)
X264编码相关的总结一、库的交叉编译详情见交叉编译X264 注:之前我用的arm9的板子,交叉编译x264库的时候出现问题,说是arm9的架构没办法编译之后换成arm11的板子才成功的。 二、库的调用typedef struct { //编码需要使用的对象 为Encoder结构的成员x264_param_t *param; //参数设置x2转载 2015-05-08 14:41:25 · 829 阅读 · 0 评论 -
V4L2视频采集 X264编码项目总结(上)
做这个项目看了很多博客,也出现了很多问题,我几乎把视频技术论坛的帖都翻完了,还好最后终于都意想不到的解决了。先总结V4L2,然后在使用开源库x264编码的部分,会总结一下常见出现的系列问题和相应的解决方法。一、V4L2视频采集V4L2介绍视频采集流程1. 打开设备文件。 int fd=open(”/dev/video0″,O_RDWR);2. 取得设备的capability,看转载 2015-05-08 14:32:37 · 1113 阅读 · 0 评论 -
使用libx264将I420编码为H.264
转载自:http://www.cnblogs.com/fojian/archive/2012/09/01/2666627.htmllibx264 libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264。代码要把一个I420视频文件编码为H264格式。I420是YUV中planar格式的转载 2015-05-08 14:28:58 · 568 阅读 · 0 评论 -
x264中Parse函数欣赏
我们知道,在x264中,x264_param_default函数对一些参数值进行了设定,现在用户如果需要改变这些默认的参数值,就可以通过命令行配置来修改,具体就是传到argv[i]中去. 下面来看看Parse函数: /* Parse command line */ if( Parse( argc, argv, ¶m, &opt ) ret转载 2015-05-08 14:24:03 · 535 阅读 · 0 评论 -
x264中的 x264_param_default函数欣赏
#includeusing namespace std;void set(int *p){ *p = 0;}int main(){ int variable; set(&variable); cout return 0;} 下面来看看x264中x264_param_default函数转载 2015-05-08 14:24:43 · 501 阅读 · 0 评论 -
x264 参数详解【很强大、很细致,不再为不懂啥意思很烦恼】
输入用1个绝对路径定义输入文件(或者2个,rawYUV文件)。如下例:x264.exe -o NUL C:\input.avsx264 -o /dev/null ~/input.y4m如果输入文件是rawYUV格式的,还要把分辨率一并输入。如果开启了比特率控制,还需要输入帧率。如下例:x264.exe -o NUL –fps 25 D:\input.yuv 1280×720转载 2015-05-08 14:21:41 · 7808 阅读 · 0 评论 -
32位和64位系统区别及int字节数
一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器?之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的转载 2015-07-19 15:50:52 · 861 阅读 · 0 评论