随笔分类 -  多媒体处理

摘要:前面提到了YV12转RGB的各种实现方法和优化方法,主要是CPU上的实现。本文主要介绍基于GPU的YV12转RGB的实现。1. 基于OpenGL的实现利用OpenGL shader实现将YV12转RGB,将Y、U、V分量数据作为纹理数据,并构造YUV转RGB的shader代码,最终纹理数据在shad... 阅读全文
posted @ 2014-05-07 16:12 一点心青 阅读(4712) 评论(1) 推荐(1) 编辑
摘要:YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式。因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式。RGB与YUV的变换公式如下: YUV(256 级别) 可以从8位 RGB 直接计算:Y = 0.299 R + 0.587 G + 0.114... 阅读全文
posted @ 2014-05-07 15:53 一点心青 阅读(77217) 评论(5) 推荐(8) 编辑
摘要:YUV,是一种颜色编码方法,Y表示明亮度(Luminance、Luma),U和V则是色度、浓度(Chrominance、Chroma)。YUV,Y`UV,YCbCr,YPbPr等都可以称为YUV,彼此有重叠。YUV和Y`UV通常用来描述模拟信号,YCbCr与YPbPr则是用来描述数位的影像信号。YU... 阅读全文
posted @ 2014-05-07 15:47 一点心青 阅读(13212) 评论(0) 推荐(0) 编辑
摘要:本文主要记录在64位Windows 7下,编译64位ffmpeg的过程。1.资源准备 (1). MSYShttp://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/ (2). MinGW-w64http://www.drangon.org/mingw/ (3). SDLhttp://www.libsdl.org/download-1.2.php (4). x264http://www.videolan.org/developers/x264.html (5). FFmpeghttp://ww... 阅读全文
posted @ 2014-03-27 13:31 一点心青 阅读(28690) 评论(1) 推荐(0) 编辑
摘要:为了深入了解ffmpeg的工作原理,需要阅读源代码,调试源代码。在Windows下调试ffmpeg源码,一种方法是在MinGW+Msys环境下,利用GDB进行调试;另一种是借助Eclipse进调试,其本质也是调用GDB进行调试,只是提供了良好界面,便于用户交互。本文主要记录利用Eclipse调试FFmpeg源码的过程。1.Eclipse安装 Eclipse安装过程可参考网上其他资料,安装完Eclipse后,需要配置C/C++开发环境,参考:http://shinepaopao.iteye.com/blog/1926445。2.建立ffmpeg工程 Eclipse-->File--> 阅读全文
posted @ 2014-03-26 19:51 一点心青 阅读(10444) 评论(1) 推荐(1) 编辑
摘要:由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类似Linux的编译环境。本文主要记录Windows下FFmpeg编译的过程。1.资源准备准备编译过程所需的软件工具和源代码。(1). MinGW-MSYS Bundlehttp://sourceforge.net/projects/mingwbundle/(2).Yasm http://yasm.tortall.net/Download.html(3).SDL http://www.libsd.. 阅读全文
posted @ 2014-03-26 15:46 一点心青 阅读(38979) 评论(0) 推荐(0) 编辑
摘要:前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码。一、DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范。DXVA规范制定硬件加速解码可分四级:VLD,控制BitStream;IDCT,反余弦变换;Mocomp,运动补偿,Pixel Prediction;PostProc,显示后处理。其中,VLD加速等级最高,所以其包含IDCT、MoCoopm和PostProc;IDCT加速次之,包含MoCoopm和PostProc;最后MoComp加速仅包含PostProc。一款显卡芯片在硬件支持DXVA规范,并不代表它就实现了DXVA所有. 阅读全文
posted @ 2013-08-09 16:47 一点心青 阅读(17392) 评论(1) 推荐(0) 编辑
摘要:一、OpenCV中的硬编码OpenCV2.4.6中,已实现利用GPU进行写视频,编码过程由cv::gpu::VideoWriter_GPU完成,其示例程序如下。 1 int main(int argc, const char* argv[]) 2 { 3 if (argc != 2) 4 { 5 std::cerr " > frame;28 if (frame.empty())29 {30 std::cout << "Stop" << std::endl;31 break;32 ... 阅读全文
posted @ 2013-08-08 22:56 一点心青 阅读(9896) 评论(0) 推荐(0) 编辑
摘要:问题描述:项目中,需要对高清监控视频分析处理,经测试,其解码过程所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈。解决思路:利用GPU解码高清视频,降低解码所占用CPU资源,加速解码过程。一、OpenCV中的硬解码OpenCV2.4.6中,已实现利用GPU进行读取视频,由cv::gpu::VideoReader_GPU完成,其示例程序如下。 1 int main(int argc, const char* argv[]) 2 { 3 if (argc != 2) 4 return -1; 5 const std::string fname(arg... 阅读全文
posted @ 2013-08-07 22:18 一点心青 阅读(20272) 评论(10) 推荐(0) 编辑
摘要:问题描述:ffplay播放rtsp视频流时,播放过程中随机出现花屏现象。基本流程学习:阅读ffplay源码,熟悉其播放rtsp视频流的基本流程。在ffplay源码阅读和分析的基础上,画出了其播放rtsp的函数调用关系,如下图所示:avformat_open_input函数根据输入的文件名,与rtsp_read_packet关联。rtsp_read_packet完成每个rtp包的读取和解析,读取主要是利用rtp_read从缓冲区获取数据,解析主要是根据rtp协议,解析rtp包,得到h264码流数据,由rtp_parse_packet完成。av_read_frame读取一帧数据的avpacket包 阅读全文
posted @ 2013-08-06 11:35 一点心青 阅读(24625) 评论(13) 推荐(2) 编辑
摘要:1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264ffmpeg –i test.avi –vcodec copy –an –f m4v test.2643.视频转码ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –.. 阅读全文
posted @ 2013-08-06 11:17 一点心青 阅读(155541) 评论(2) 推荐(5) 编辑