MLT多媒体框架生产消费架构解析

  • 前提
  • 通过本文可以获取什么?
  • 核心类解析
    • Properties
    • 为生产者添加滤镜
  • Demon展示
    • 修改Filter(马赛克)效果
    • 代码
  • 附属代码下载链接
  • 参考资料

前提

  1. 通过阅读【MLT】MLT多媒体框架生产消费架构解析(一)满足以下两点:
    1. 了解MLT的核心C++封装的层级关系
    2. 掌握使用MLT的Consumer(sdl)消费Producer(MP4)
  2. 通过阅读【MLT】MLT多媒体框架生产消费架构解析(二)满足以下两点:
    1. 了解Service(服务抽象基类)与 Filter(滤镜抽象服务类)
    2. 掌握为Producer(生产者)添加Filter(滤镜)

通过本文可以获取什么?

本文将在【MLT】MLT多媒体框架生产消费架构解析(二)的基础上对给生产者attach的滤镜做宽高属性的变换,如下图:

核心类解析

Properties

  • 滤镜只对height设置
  • 代码

        Profile profile; // defaults to dv_pal    Producer producer(profile, filename);    Consumer consumer(profile); // defaults to sdl          Mlt::Filter *filter = new Mlt::Filter(profile, "frei0r.pixeliz0r");    filter->set(qUtf8Printable("0"), 0.300);     filter->set(qUtf8Printable("1"), 0.300);    producer.attach(*filter);    // Prevent scaling to the profile size.    // Let the sdl consumer do all scaling.    consumer.set("rescale", "none");    // Automatically exit at end of file.    consumer.set("terminate_on_pause", 1);    consumer.connect(producer);    consumer.run();    consumer.stop();

    附属代码下载链接

    源代码下载链接

    参考资料

    【1】MLT github链接