前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux音视频(SDL与YUV)

Linux音视频(SDL与YUV)

作者头像
用户2617681
修改2019-08-08 16:00:56
1.6K0
修改2019-08-08 16:00:56
举报
文章被收录于专栏:秘籍酷秘籍酷

SDL是一个比较底层的音视频处理库,很多UI系统的内核都用到它,我们还可以用它来处理摄像头中YUV数据。

拓展:

SDL(Simple DirectMedia Layer)是一个跨平台的底层开发库,提供操作诸如音频、键盘、鼠标、游戏杆以及显卡等硬件的方法,被很多多媒体播放器、模拟器和流行游戏所使用,SDL支持Windows、MacOS、Linux、iOS以及Android,也就是说你目所能及的几乎所有平台它都能运行,并且SDL是开源的,完全由C语言编写,可以在C/C++以及众多主流编程语言中被使用。

使用SDL来显示YUV数据的大概步骤是这样的:

第一步,初始化SDL视频子系统并定义YUVOverlay:

SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_TIMER);

SDL_Overlay *bmp = SDL_CreateYUVOverlay(fmt->fmt.pix.width, fmt->fmt.pix.height, SDL_YUY2_OVERLAY, screen);

第二步,将YUV数据拷贝到YUVOverlay中(需加锁):

SDL_LockYUVOverlay(bmp); memcpy(bmp->pixels[0], yuvdata, size); bmp->pitches[0] = width; SDL_UnlockYUVOverlay(bmp);

第三步,显示:

SDL_DisplayYUVOverlay(bmp, &rect);

当然,有时候YUV数据(上面的变量yuvdata)的各个分量跟SDL的定义方式不同,需要调换次序,总体而言大概如下图所示:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秘籍酷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档