小编use*_*445的帖子

蓝牙耳机同时使用高品质编解码器和麦克风

我有各种蓝牙耳机,当我在 Android 和 ChromeOS 上使用这些耳机时,我可以在通话和视频聊天中获得不错的双向音频质量。

不幸的是,当我在我的 Arch Linux 笔记本电脑上使用它们时(使用 PulseAudio 13.99.2+13+g7f4d7fcf5-1、bluez 5.55-1 和 pulseaudio-modules-bt 1.4-3),我有一个选择(在pavucontrol配置面板下,或使用pactl set-card-profile):我可以使用 A2DP 和精选的编解码器(包括 SBC、AptX 和 AAC)启用高质量声音,或者我可以使用 HSP/HSF 而不是 A2DP 启用麦克风。使用 HSP/HSF 配置文件,麦克风“工作”,因为在 PulseAudio 中存在带有源和接收器的双向音频,但音质非常糟糕,以至于很难理解人们所说的话。

我的问题是:

  1. 当 Android 或 ChromeOS 在启用麦克风的情况下获得不错的音质时,实际发生了什么?是否可以在 HSP/HSF 模式下使用合适的编解码器?是否可以将麦克风与 A2DP 一起使用?或者还有其他蓝牙模式吗?

  2. pulseaudio-module-bt网站上,除 LDAC 之外的所有编解码器似乎都支持解码和编码,但我如何实际使用解码功能?这仅用于将我的笔记本电脑用作另一台设备的虚拟耳机,还是有办法将这些编解码器用于蓝牙耳机的麦克风?

  3. 我可以采取哪些具体步骤来让我的耳机在双向通话中音质更好?或者失败了,即使麦克风听起来很糟糕,我至少可以在不完全禁用麦克风的情况下使扬声器听起来不错吗?

更新

好吧,我不完全理解这一点,但似乎良好的音质至少需要 HFP 1.6,而 bluez 目前不支持 HFP,因为这样做需要破坏与oFono 的向后兼容性,这已成为一个有争议的问题。

在解决这个问题之前,我通过购买 Avantree DG80 蓝牙音频加密狗解决了这个问题。它看起来像 Linux 中的普通 USB 音频设备,但与我的耳机配对。音质不如 A2DP,但明显好于我从 bluez/PulseAudio 中得到的。通过在 PulseAudio 中的立体声和立体声 + 单声道输入之间切换,或者通过双击蓝牙适配器正面的开关,我还可以在 A2DP 和 HSP/HSF 模式之间切换。

linux arch-linux bluetooth pulseaudio

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

gpg-agent 拒绝 SSH 密钥,ssh-add 报告“代理拒绝操作”

我在 arch linux 上使用 openssh7.5p1 和 gnupg 2.1.21(这些是 arch 附带的默认版本)。我想gpg-agent用作 ssh 代理。我把以下内容放在我的~/.gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-qt
enable-ssh-support
Run Code Online (Sandbox Code Playgroud)

Arch 自动从 systemd 启动一个 gpg-agent,所以我设置

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"
Run Code Online (Sandbox Code Playgroud)

当我运行时ssh-add -l,它不报告任何身份并ps报告gpg-agent --supervised我所期望的过程。

不幸的是,当我运行时ssh-add,无论是什么键类型,它都不起作用。这是我如何尝试 dsa 的示例:

$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation
Run Code Online (Sandbox Code Playgroud)

所有其他 …

openssh ssh-agent gpg-agent

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

在 vi、nvi 和 vim 中编辑敏感文件时禁止恢复文件

我正在编写一个应用程序,它维护一个加密数据库,其中包含非常敏感的信息,包括加密密钥和密码。应用程序对使用 memlock、阻止 ptrace、防止 coredumps 等感到偏执,但有一个命令让数据库所有者编辑数据库的内容。此命令以人类可读的 ASCII 格式将整个数据库写入一个临时文件,并让用户对其进行编辑。具体来说,它在新创建的目录中创建一个新文件/tmp/XXXXXXXX/(其中 /tmp 是理想的内存文件系统),然后在该文件上运行用户首选的编辑器。当编辑器退出时,应用程序解析文件内容并/tmp/XXXXXXXX/在最终删除目录之前粉碎文件和其他任何内容。

不幸的是,这种策略不适用于任何 vi 变体,因为编辑器最终会将文件副本写入 /var/tmp/vi.recover,即使在 vi 删除它们之后,它们也可能会保留在磁盘上。(数据包含高价值的私钥,很容易搜索整个原始分区。)我正在寻找一种通用方法来抑制这些恢复文件,或者至少将它们移动到/tmp/XXXXXXXX/.

我的理想解决方案适用于大多数 vi 变体,但我也很高兴解析EDITOR环境变量并为每个编辑器做一些不同的事情。因此,如果您有一个适用于 vim 而不适用于其他人的解决方案,那至少是一个好的开始。(我已经使用特殊情况 vim 重新打开编辑器到解析错误的确切列号,而其他 vi 变体只能打开到适当的行。)

因为这是一个分发给其他人的应用程序,我不能做的一件事就是通过编辑人们的 .exrc 或 .vimrc 文件来解决问题。在绝对紧要关头,我想我可以在执行编辑器之前更改 HOME 环境变量并创建一个临时 .vimrc 将用户的真实版本与一些恢复抑制命令合并。但是,我更喜欢命令行或注释解决方案。

我能得出的最简单的工作示例是分享我为 emacs 所做的事情,即在文件末尾附加以下注释:

# Local Variables:
# make-backup-files: nil
# auto-save-default: nil
# End:
Run Code Online (Sandbox Code Playgroud)

尽管最简单的是命令行选项,但如果某些等效注释适用于 vim 或任何其他 vi 变体,那也很棒。

更新:

在对 strace 进行了一些实验后,似乎以下命令可以为 vim 做我想要的:

vim -n -c 'set viminfo=' /tmp/XXX/secret.ini
Run Code Online (Sandbox Code Playgroud)

但是,它不适用于--cmd,这是建议的选项,但仅适用于-c。此外,我真的不明白是什么-n …

vim vi nvi

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

标签 统计

arch-linux ×1

bluetooth ×1

gpg-agent ×1

linux ×1

nvi ×1

openssh ×1

pulseaudio ×1

ssh-agent ×1

vi ×1

vim ×1