我试图从一个充满jpeg帧的目录制作一个视频(无论格式).
我尝试使用avconv(v0.8),如互联网上的许多主题所见,以及libav文档:
avconv -i samples/*.jpeg output.mpeg
Run Code Online (Sandbox Code Playgroud)
它似乎很好地工作并创建output.mpeg文件.
但是任何读者都无法读取该文件(vlc,banshee,totem,...).没有错误,但按下Play时没有任何反应.
如果我检查视频文件大小,它大约是20kB,而原始视频是10MB.所以我们可以假设数据没有存储到文件中(无论输入的帧数是多少,它都是大约20kB)
我制作了一个处理调试日志的pastebin.我不熟悉编解码器世界,所以我不了解很多东西:http://pastebin.com/9dfxFWZe.
我也尝试了很多与-s,-r,-b,-vcodec,-f格式等组合.但问题仍然存在.
我做错了吗?
问我任何可以帮助你的事情,我会很快回答.
谢谢您的帮助 :)
我有 4 个实体:
Mall包含多个子Shop对象Shop包含多个子Basket对象Basket包含多个Fruit子对象。Fruit这是一个叶子子对象。updateMall(...)呼唤updateShop(...),呼唤updateBasket(...),呼唤updateFruit(...)。
每个函数完成后updateXxx(...)都会发送一个。XxxUpdatedEvent
因此,如果updateMall(...)调用,将会发送很多事件:FruitUpdatedEvent, BasketUpdatedEvent, ShopUpdatedEvent, MallUpdatedEvent。
这种事件粒度是理想的,因为一些事件监听器可能只关心例如BasketUpdatedEvent而不一定关心父数据事件。
这是 2 个生产者和 2 个侦听器的序列图:
正如您所看到的,Listener2需要使所有数据与其自己的内部业务逻辑保持同步。因此,它需要倾听一切。它不能只听MallUpdatedEvent,因为有时只会FruitUpdatedEvent发出。
(在我的现实生活场景中,这Listener2是一个 ElasticSearch 索引,试图跟上更改的数据)。
正如您所看到的,这里的问题是嵌套同步的冗余。子对象同步方法的调用次数超出了一遍又一遍地执行相同作业所需的次数。
我很确定这个设计问题很常见,人们必须一遍又一遍地解决它,但不幸的是我的谷歌搜索努力没有得到回报。什么是一个好的设计模式来以高效、精细和优雅的方式解决这个问题?
我想到了一些去抖机制,但它并不是万无一失的。
我是 CUDA 的初学者,我的同事总是使用以下包装来设计内核:
__global__ void myKernel(int nbThreads)
{
int threadId = blockDim.x*blockIdx.y*gridDim.x //rows preceeding current row in grid
+ blockDim.x*blockIdx.x //blocks preceeding current block
+ threadIdx.x;
if (threadId < nbThreads)
{
statement();
statement();
statement();
}
}
Run Code Online (Sandbox Code Playgroud)
他们认为在某些情况下,CUDA 可能会出于对齐/扭曲的原因启动比指定的线程更多的线程,因此我们每次都需要检查它。然而,到目前为止,我在互联网上还没有看到他们实际进行此验证的示例内核。
CUDA 实际上可以启动比指定的块/网格尺寸更多的线程吗?