小编Chr*_*ian的帖子

如何在 gstreamer 中设置通道位置/通道掩码?

我试图从 a 中获取 28 个通道jackaudiosrc,但是一旦我连接了一个deinterleave元素,源就会回退到无需任何通道掩码即可工作的 2 通道设置。我设置通道掩码的尝试是徒劳的。

发生的情况如下:

potential caps: audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int)48000, channels=(int)[ 1, 28 ]
filter caps: audio/x-raw-float, channels=(int)28, channel-positions=(GstAudioChannelPosition)< GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE >
actual caps: audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int)48000, channels=(int)2, channel-positions=(GstAudioChannelPosition)< GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT >
Run Code Online (Sandbox Code Playgroud)

下面是生成该输出的 Python 代码:

potential caps: audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int)48000, channels=(int)[ 1, 28 ] …
Run Code Online (Sandbox Code Playgroud)

python audio gstreamer python-gstreamer

5
推荐指数
0
解决办法
3915
查看次数

红黑树中插入和删除如何比 AVL 树更快?

我想更好地理解差异,但还没有找到可以将其分解到我的水平的来源。

我知道两棵树每次插入最多需要 2 次旋转。那么如何在红黑树中更快地插入呢?

以及插入如何在 avl 树中需要 O(log n) 次旋转而在红黑中需要 O(1) 次?

algorithm tree avl-tree red-black-tree

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

如何 json 序列化自定义可迭代对象?

我想创建一个行为类似于命名元组的类型,只不过它具有自定义表示形式,在序列化为 JSON 时也受到尊重。

天真的按书本方法是这样的:

from typing import NamedTuple
import json


class MyPair(NamedTuple):
    left: str
    right: str

    def __repr__(self):
        return self.left + ':' + self.right


class MyJSONEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, MyPair):
            return str(obj)
        return json.JSONEncoder.default(self, obj)
Run Code Online (Sandbox Code Playgroud)

现在将按预期print(MyPair('a', 'b'))输出,但会产生,因为仅当对象不能原始序列化为 JSON 时才被调用。由于我自己的类型是一个元组,因此在我有机会干预之前它将被序列化。a:bprint(json.dumps([MyPair('a', 'b')], cls=MyJSONEncoder))[["a", "b"]]default()

是否有任何好的或不太好的方法来实现此目的,而无需在用字符串替换所有对象的预处理步骤中MyPair不进行或迭代整个文档?TupleMyPair

编辑:为了解决 Joran 的答案,我仍然想保留序列化仅包含偶尔MyPairs 的复杂树的能力。我的最小例子可能没有说清楚,抱歉。

python json types python-3.x

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

Python套接字只接受本地连接

服务器:

import socket

host = ""
port = 4242
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
client, address = s.accept()
while 1:

    data = client.recv(size)
    if data:
        client.send(data)
        print(data.decode("utf-8"))
Run Code Online (Sandbox Code Playgroud)

客户:

import socket
import sys

host = sys.argv[1]
port = 4242
size = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
while True:
    line = input("What to say: ")
    s.send(line.encode("utf-8"))
Run Code Online (Sandbox Code Playgroud)

好吧,我在这里有点困惑.我开始学习套接字了,所以我开始使用一个简单的echo服务器.当服务器在Arch Linux或Ubuntu上运行时,我上面发布的代码可以很好地工作.但是,当它在Windows 7上时,它只接受本地连接.问题是,我没有运行防火墙.我不确定Python是否有单独的WinSock实现或什么,但我很困惑!如果你愿意的话,我非常清楚这是非常设计的(只接受客户端!),但我只是想知道为什么Windows不接受远程连接.

如果它有帮助,在Arch和Ubuntu上,我正在运行Python 3.1,而在Win 7上它运行在3.2.

python sockets windows

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

如何正确使用 Jenkins git 参数插件的“branch”选项?

我设置了如下所示的简单 Jenkins 项目。在这个最小的工作示例中,我想做的就是拥有一个 git 存储库,我可以在手动触发作业时选择其分支。

真正的项目还应该自动构建一组与源更新上的正则表达式匹配的分支,并在其自己的工作区中构建每个分支,但这些实际上是正在工作的部分。

然而,由于某种原因,构建的分支始终是具有最新提交的分支,而不是选择作为构建的分支或标记参数的分支。因此,对于给定的存储库,选择master仍然会构建branch1,因为这是最新提交发生的地方。

所有设置看起来都很简单,所以我看不出我在哪里犯了错误,我将不胜感激。

我使用的是 Jenkins 2.143 和 Git 参数插件 0.9.5。 项目设置

git jenkins jenkins-plugins

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