• 关于ffmpeg视频的渲染


         从 ffmpeg sdl教程 我们可以看到,使用的方法是ffmpeg解码,转成YUV格式的视频帧,然后再使用sdl的yuv覆盖的模式进行渲染。虽然 yuv对每个像素的占用内存较少,且sdl的的输出快速,但是如果要集成到其他UI上就有点麻烦了。

          SDL仅仅就是通过传递参数SDL_WINDOWID给SDL_putenv函数(如下所示),以此重定向视频的渲染输出.中间sdl所做的细节完全看不到,想扩展也不易。据goolge查到,此代码也不能工作在mac系统上.还有一个问题是,假设Widget A上面有子Widget,那么如果你直接用此方法把输出放到Widget A上,那么将造成Widget A 的子Widget疯狂的闪烁。 既然如此还用SDL渲染干嘛。

    SDL_putenv("SDL_WINDOWID=0x00111E18"); //假设0x00111E18 为一个widget 
    

          据实践知道,可以直接从ffmpeg转换出rgb 格式的视频帧,然后生成QImage,再交由Widget的painEvent进行绘制,那将灵活好多。如果我们中间需要做一些视频帧的变换处理,比如缩放,翻转,加水印之类也变得不再是难事,qt本身就有提供这些功能,何乐不为呢。

  • 相关阅读:
    Git工作中用法(Gitlab)
    面试记录,不定时更新中。。。
    webservice 技术改进
    HTTP详解
    Git学习05 --分支管理02
    Git学习04 --分支管理
    链表判环问题
    k-选取问题
    图片与字符串(base64编码)的转化
    二叉堆与堆排序的简单实现
  • 原文地址:https://www.cnblogs.com/foxhengxing/p/1931485.html
Copyright © 2020-2023  润新知