小编Xal*_*dew的帖子

Android 作为 UVC 相机

我被一个相当糟糕的网络摄像头困在家里。我正在考虑升级,但后来让我震惊:现在的手机内置了非常好的摄像头。那么为什么不将其用作网络摄像头呢?

然而,当我进一步研究这个时,我对可用的应用程序感到非常失望。据我所知,我们有大致如下工作的 Android 应用程序:

  • 将手机摄像头作为网络连接摄像头呈现。然后您可以使用本地软件将该提要用作网络摄像头。参见例如IP 网络摄像头。这可能就足够了,但这是一个复杂的设置,而且网络延迟使其远非理想。

  • Android 应用程序将摄像头馈送发送到自定义主机应用程序,该应用程序又会创建一个虚拟网络摄像头。参见例如DroidCam。这基本上解决了延迟问题,但还是比较复杂,而且需要我们安装特定的第三方应用程序,在用户隐私方面很麻烦。特别是因为应用程序是闭源的。

所以,我采用了工程方法,并试图看看是否有可能改善这种情况。据我所知,Android 支持用作自定义 USB配件。查看 USB 视频类文档,我觉得应该可以创建一个 Android 应用程序,将手机显示为通用 UVC 网络摄像头,这样我们就不必求助于上述技巧。

理想情况下,除了调试模式、文件传输等之外,我希望 Android 添加另一个 USB 设备选项(“使用 USB 连接作为网络摄像头”)。然而,这在短期内似乎不太可能发生。

所以,我的问题是:是否已经存在具有上述功能的应用程序?到目前为止,我的搜索没有产生任何结果,但我可能会遗漏一些东西,因为谷歌搜索结果比我预期的要难一些。

或者,我上面的假设是否错误,以至于存在一些基本问题,为什么不能使 Android 应用程序以这种方式工作?

webcam android uvc

14
推荐指数
2
解决办法
3509
查看次数

用于不同编码风格的 Emacs Yasnippet

最近才开始将 yasnippet 用于 emacs 并且非常喜欢它的工作方式,但是我遇到了一个小麻烦,如果可能的话,我需要一些帮助来解决。

我特别喜欢的一个片段是“for”片段,即:

# -*- mode: snippet -*-
# name: for
# key: for
# --
for (${1:i = 0}; ${2:i < N}; ${3:i++}) {
    $0
}
Run Code Online (Sandbox Code Playgroud)

然而,我最近开始从事一个我们有不同编码风格的项目。只需将上面的代码片段更改为将起始大括号位置更改为:

# -*- mode: snippet -*-
# name: for
# key: for
# --
for (${1:i = 0}; ${2:i < N}; ${3:i++})
{
    $0
}
Run Code Online (Sandbox Code Playgroud)

然而,我想轻松地在不同的项目之间切换,从而在不同的编码风格之间切换,而无需手动更改片段或创建许多重复项。所以我认为应该可以在代码片段中编写一些 elisp 代码来自动适应当前活动的编码风格。

环顾一些 Emacs/elisp 文档,我发现了所谓的 c-hanging-brace-alist ( GNU doc ),我觉得我应该能够以某种方式使用它。但是,我从未真正在 elisp 中进行过任何编程,而且我不确定如何实现这一点。任何帮助或建议将不胜感激!

emacs elisp yasnippet

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

带有引用的 Rust 泛型 AddAssign

不久前,我考虑为斐波那契数列编写一个通用迭代器,它既可以接受原始数字,也可以接受自定义类型(例如 bignums)。在无法获得适用于原始类型和 的版本后bignums,我偶然发现了这个问题:

如何编写用于添加泛型类型的两个引用的特征绑定?

其中使用所谓的高排名特征边界来解决这个特定问题的问题。

但是,现在我正在尝试使用类似的策略来使用*_assign 运算符。特别是,我正在尝试获得与此类似的工作:

use std::ops::{Add, AddAssign};

fn add_test<'a, T>(x: &'a T, y: &'a T) -> T
where
    for<'b> &'b T: Add<Output = T>,
{
    x + y
}

fn add_assign_test<'a, T>(x: &'a mut T, y: &'a T) -> T
where
    for<'b> &'b mut T: AddAssign<&'b T>,
    T: Clone,
{
    x += y;
    x.clone()
}

fn main() {
    println!("add_test()={}", add_test(&1, &2));
    println!("add_assign_test()={}", add_assign_test(&mut 2, &2));
}
Run Code Online (Sandbox Code Playgroud)

add_test()按预期工作,但我无法以add_assign_test()类似的方式工作。我收到的错误表明,对于原始类型的这种行为,实际上可能不存在实现:

use …
Run Code Online (Sandbox Code Playgroud)

traits rust

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

标签 统计

android ×1

elisp ×1

emacs ×1

rust ×1

traits ×1

uvc ×1

webcam ×1

yasnippet ×1