小编Fab*_*ian的帖子

C++函数不接受具体实现

我正在尝试实现类型安全的事件总线.我坚持使用该EventBus::subscribe函数,因为它不接受我的具体事件处理程序.在早期版本中,我只将其AbstractEventHandler实现为抽象类,而不是模板.我对该实现没有任何问题.这就是为什么我认为实际问题是抽象模板.

下面的代码是我的实现的精简版本.第一个块由事件总线的"骨架"及其所需的类组成,而第二个块显示事件,事件处理程序和主要的实际实现.

enum拥有各种不同的事件可用.抽象事件是所有具体事件的基础.事件处理程序是一个抽象模板,其中事件作为模板类以确保类型安全.事件总线负责将所有已发布的事件分发给其各自的处理程序.

enum EVENT_TYPE 
{
    ON_EVENT_1,
    ON_EVENT_2
};

class AbstractEvent 
{
public:
    AbstractEvent() {};
    virtual ~AbstractEvent() {};

    virtual EVENT_TYPE type() = 0;
};

template<class T>
class AbstractEventHandler 
{
public:
    AbstractEventHandler() {};
    virtual ~AbstractEventHandler() {};

    virtual void on_event(T *event) = 0;
};

class EventBus 
{
public:
    EventBus() {};
    virtual ~EventBus() {};

    void subscribe(EVENT_TYPE type, 
                    AbstractEventHandler<AbstractEvent> *eventHandler) {
        // Add handler to vector for further use
    }

    void publish(AbstractEvent *event) {
        // send event to …
Run Code Online (Sandbox Code Playgroud)

c++ templates abstract-class

6
推荐指数
1
解决办法
488
查看次数

FFmpeg:组合具有不同开始时间的视频文件

我有两个webm文件,包含视频会议的音频和视频录制.这两个文件只包含会话的一面.它们的长度不同(有人在另一个之前加入),但我有每个视频文件开始时间毫秒的unix时间戳.

在时间轴上,它们看起来像这样:

webm 1:   -----------------------------------------------
webm 2:                 -----------------------------
Run Code Online (Sandbox Code Playgroud)

或者像这样:

webm 1:   -----------------------------------------------
webm 2:                          -----------------------------
Run Code Online (Sandbox Code Playgroud)

我想将这两个视频文件合并为一个文件,以便:

  1. 它们彼此相邻(使用hstack选项),和
  2. 考虑到开始时间的时间戳,它们混合在一起.最终的视频应如下所示:

目标结果:-------------- =========================== ----

新视频的开头和结尾将显示视频文件的黑色占位符,此时此混合流中没有数据.

目前我使用此命令:

ffmpeg -i 1463408731413703.webm -i 1463408880317860.webm -filter_complex \
"[0:v][1:v]hstack=inputs=2[v]; \
 [0:a][1:a]amerge[a]" \
-map "[v]" -map "[a]" -ac 2  -c:v libvpx output.webm
Run Code Online (Sandbox Code Playgroud)

这会创建一个这样的视频:

不好结果:===================== ------------------

对话不同步.

如何使用ffmpeg组合两个不同长度和不同开始时间的视频流,这样我最终会得到"目标结果"?

非常感谢!

video ffmpeg

3
推荐指数
1
解决办法
2157
查看次数

标签 统计

abstract-class ×1

c++ ×1

ffmpeg ×1

templates ×1

video ×1