本文共 1325 字,大约阅读时间需要 4 分钟。
原始图像
shell.albert@yantai:~/project/H.264/football>ls -l fb001.yuv fb002.yuv fb003.yuv fb011.yuv fb012.yuv fb013.yuv
-rw-r--r-- 1shell.albert users 126720 Feb 12 2002 fb001.yuv
-rw-r--r-- 1shell.albert users 126720 Feb 12 2002 fb002.yuv
-rw-r--r-- 1shell.albert users 126720 Feb 12 2002 fb003.yuv
-rw-r--r-- 1shell.albert users 126720 Feb 12 2002 fb011.yuv
-rw-r--r-- 1shell.albert users 126720 Feb 12 2002 fb012.yuv
-rw-r--r-- 1shell.albert users 126720 Feb 12 2002 fb013.yuv
合并为一个yuv文件
cat fb001.yuvfb002.yuv fb003.yuv fb011.yuv fb012.yuv fb013.yuv > 123.yuv
shell.albert@yantai:~/libx264>ls -l 123.yuv
-rw-r--r-- 1shell.albert users 760320 Apr 24 14:41 123.yuv
计算尺寸
126720*6=760320
正好对应上。
已知数据源为352x240YUV420格式的,所以一帧的数据量为width*height*3/2,
即为350*240*3/2=126720.00
那么最终的数据文件123.yuv中会包含
760320/126720=6.00帧原始的yuv图像。
使用libx264进行yuv2h264编码后,如下
shell.albert@yantai:~/libx264>ls -l 123.yuv libx264123.264
-rw-r--r-- 1shell.albert users 760320 Apr 24 14:41 123.yuv
-rw-r--r-- 1shell.albert users 44376 Apr 24 14:45 libx264123.264
可以数据量差距还是很大的,所以视频图像是需要先进行264编码后,再进行传输,然后再接收解码回显的。
libx264期望原始的yuv420p的数据流输入格式,如果是其他的则需要先进行转换。
如果想进入mjpeg,png图像进行h264压缩,那么在此之前必须先将mjpeg转换为原始的yuv图像再送入libx264进行编码。
接收端接收到h264文件,解码为yuv,然后转换为RGB,再使用QImage生成图像,使用QPixmap画到QWidget上面。
libx264只是一个h264编码库,将yuv420的输入编码成h264。没有解码功能,若想将h264解码还原为yuv数据,
则需要使用ffmpeg。
转载地址:http://gzzji.baihongyu.com/