小编pie*_*dar的帖子

如何从带时间戳的图像列表中呈现视频?

我在模式后面有一个完整的图像目录<timestamp>.png,其中<timestamp>表示自第一个图像以来经过的毫秒数. input.txt包含有趣图像的列表:

file '0.png'
file '97.png'
file '178.png'
file '242.png'
file '296.png'
file '363.png'
...
Run Code Online (Sandbox Code Playgroud)

我使用ffmpeg将这些图像连接成一个视频:

ffmpeg -r 15 -f concat -i input.txt output.webm
Run Code Online (Sandbox Code Playgroud)

如何告诉ffmpeg将每个帧放在其实际位置而不是使用恒定帧速率?

ffmpeg frame-rate video-capture

12
推荐指数
2
解决办法
4986
查看次数

如何从异步迭代器中产生一系列promise?

我从一个渲染并生成一系列图像斑点的函数开始.

async function* renderAll(): AsyncIterableIterator<Blob> {
  const canvases = await getCanvases();
  for (const canvas of canvases) {
    yield await new Promise<Blob>((resolve, reject) => {
      canvas.toBlob(result => { if (result) resolve(result); else reject(); });
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但性能并不理想,因为必须在开始下一个操作之前解决每个承诺.相反,调用者应该决定何时等待承诺,同时仍然保留订单.

async function* renderAll(): AsyncIterableIterator<Promise<Blob>> {
  const canvases = await getCanvases();
  for (const canvas of canvases) {
    yield new Promise<Blob>((resolve, reject) => {
      canvas.toBlob(result => { if (result) resolve(result); else reject(); });
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这无法编译,因为"类型Blob不能分配给类型" Promise<Blob>.进一步检查表明,yield操作员在异步功能中解包承诺,这 …

iterable async-await typescript

5
推荐指数
1
解决办法
804
查看次数

PowerManagement.Inhibit适用于dbus-python但不适用于dbus-send

我正在开发一个项目,我需要以编程方式禁止电源管理(例如暂停).我能够从Python完美地做到这一点:

import dbus
pm = dbus.SessionBus().get_object("org.freedesktop.PowerManagement", "/org/freedesktop/PowerManagement/Inhibit")
print(pm.HasInhibit()) # 0
inhibited = pm.Inhibit("Me", "I said so")
print(pm.HasInhibit()) # 1
pm.UnInhibit(inhibited)
print(pm.HasInhibit()) # 0
Run Code Online (Sandbox Code Playgroud)

但不是从命令行使用dbus-send时:

$ dbus-send --print-reply --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.HasInhibit
method return sender=:1.2 -> dest=:1.260969 reply_serial=2
  boolean false
$ dbus-send --print-reply --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.Inhibit string:"Me" string:"I said so"
method return sender=:1.2 -> dest=:1.260972 reply_serial=2
  uint32 52
$ dbus-send --print-reply --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.HasInhibit
method return sender=:1.2 -> dest=:1.260973 reply_serial=2
  boolean false
Run Code Online (Sandbox Code Playgroud)

为什么?

python linux dbus freedesktop.org

4
推荐指数
1
解决办法
1141
查看次数

是否绑定到本地引用的对象会自动销毁?

请考虑以下代码.

struct MyImage
{
    MyImage(const int handle);
    MyImage(const CString& filePath);
    virtual ~MyImage();

    void Process();
    void SaveAs(const CString& filePath);

    // No copying!
    MyImage(const MyImage& other) = delete;
    MyImage& operator=(const MyImage& other) = delete;
}

void ProcessImageFile(const CString& inFilePath, const CString& outFilePath)
{
    MyImage& image = MyImage(-1); // initialized with invalid handle

    if (DecryptionRequired())
    {
        const CString tempFilePath = ::GetTempFileName();
        Decrypt(inFilePath, tempFilePath);
        image = MyImage(tempFilePath);
        _tremove(tempFilePath);
    }
    else
    {
        image = MyImage(inFilePath);
    }

    image.Process();
    image.SaveAs(outFilePath);
}
Run Code Online (Sandbox Code Playgroud)

返回image时,被引用的对象是否会被破坏ProcessImageFile()

c++ visual-c++

2
推荐指数
1
解决办法
74
查看次数