- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
当我 capture my screen 时,我想用 ffmpeg
录制音频.我在使用 alsa
时遇到的错误是我的图像没有声卡 -f alsa -ac 2 -i hw:0
这是在新版本的 Ubuntu 上重现的方法
在新的 ubuntu docker 镜像中启动 session 。
docker pull ubuntu
docker run -it --rm ubuntu
设置 alsa(高级 Linux 声音架构)
apt-get update
apt-get install alsa-utils
列出声卡
aplay -l
# aplay: device_list:268: no soundcards found...
并且播放这个声音会失败,因为这个图像没有任何声卡
sudo aplay /usr/share/sounds/alsa/Front_Center.wav
最佳答案
编辑:在阅读 BMitch 关于不需要在本地计算机上播放的第一条评论后
我推荐使用pulseaudio,因为它的用户空间代码并且不需要内核模块。在我看来,alsa 不太可能适用于 docker(尽管我可能是错的)
如果我这样做:
apt-get update
apt-get install pulseaudio socat
apt-get install alsa-utils
apt-get install ffmpeg
# Start the pulseaudio server
pulseaudio -D --exit-idle-time=-1
# Load the virtual sink and set it as default
pacmd load-module module-virtual-sink sink_name=v1
pacmd set-default-sink v1
# set the monitor of v1 sink to be the default source
pacmd set-default-source v1.monitor
# Start the ffmpeg capture to an audio file
ffmpeg -f pulse -i default out.mp3
然后在一个单独的终端中
paplay /usr/share/sounds/alsa/Front_Center.wav
WAV文件的音频被ffmpeg捕获并出现在out.mp3中
我真的不知道你的 X 设置是什么样的,但如果你可以让音频进入 pulseaudio,那么 ffmpeg 将捕获音频而不需要真正的声卡
原答案:如果您想让音频进入 Mac OS 声卡
我最初访问此页面是因为我试图将音频从 VM 内播放到 Mac OS。但是,如果您不关心将其从 VM 中取出,那么以下内容就过于复杂了。我把它留在这里,因为这个想法是我最终来到这里的原因
可以在 VM 中使用 pulseaudio 将 WAV 文件播放到物理声卡。我在 Mac OS Sierra 上使用 docker 17.03.1-ce 并使用 brew 安装 sox。此设置还需要在 VM 上安装 socat,但我认为具有更多 pulseaduio 知识(或者如果我有更多时间)的人应该能够删除这部分
策略是使用paplay 通过pulseaudio 播放wav 文件,并让pulseaudio 通过网络在VM 启动时发布的端口上发送音频。在 Mac 端,您将连接到这个发布的端口并通过 sox 将数据发送到 Mac。
1. MAC: 使用已发布的端口拉取并运行镜像
docker pull ubuntu
docker run -it --rm -p 127.0.0.1:3000:3000 ubuntu
<强>2。 VM: 更新并安装所需的包
apt-get update
apt-get install pulseaudio socat
apt-get install alsa-utils
我只为 wav 文件安装 alsa-utils,所以你可以删除它
3. VM: 启动 pulseaudio 服务器
pulseaudio -D --exit-idle-time=-1
这告诉服务器 fork 到后台而不是基于不活动退出
4. VM:为pulseaudio创建一个“接收器”
sink 是 pulseaudio 以特定格式发送音频数据的地方:
pacmd load-module module-pipe-sink file=/dev/audio format=s16 rate=44100 channels=2
这会将音频以 44100Hz 的带符号 16 位 2 声道发送到文件/dev/audio。
5. VM: 将文件附加到网络
这个文件现在需要“附加”到网络上,socat 用于在发布的地址创建一个监听套接字(注意:这里没有身份验证),准备在 Mac 端连接时发送音频
socat file:/dev/audio tcp-listen:3000
6. MAC:从网络读取数据到sox
在 Mac 端,我们现在需要连接到此端口并通过 sox 将详细信息发送到音频驱动程序:
nc 127.0.0.1 3000 | sox -traw -r44100 -b16 -c2 -e signed-integer - -d
mac 默认有 netcat (nc),所以我在这里使用它来连接到发布的端口,然后将数据通过管道传输到 sox,并带有标志到 sox 以匹配上面“加载模块”语句中设置的值。
7. VM: 玩!
最后,使用pulseaudio包中的paplay可以播放WAV文件:
paplay /usr/share/sounds/alsa/Front_Center.wav
8. MAC:听着!在 mac 端,您现在应该在这里看到音频,并且能够看到 sox 的输出,其中包括一个小电平表,这应该会移动:
$ nc 127.0.0.1 3000 | sox -traw -r44100 -b16 -c2 -e signed-integer - -d
-: (raw)
File Size: 0
Encoding: Signed PCM
Channels: 2 @ 16-bit
Samplerate: 44100Hz
Replaygain: off
Duration: unknown
In:0.00% 00:00:06.78 [00:00:00.00] Out:299k [ | ] Clip:0
反向操作(即将 Mac 音频发送到 VM 上的 pulseaudio)也应该可以使用类似但反向的设置(module-pipe-source?)
我没有针对 ffmpeg 页面上的命令对此进行测试,因为我没有 X 服务器。
关于ubuntu - 在 Ubuntu Docker 镜像上录制声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43312975/
是否可以在无需用户点击或鼠标悬停的情况下播放声音文件? 我有一个记分牌,我想在球队得分时播放声音文件。任何指示将不胜感激。我基本上完成了记分牌,但没有声音。 谢谢。 最佳答案 https://gith
我正在创建一个音频应用程序,其中有两个名为 录制音频 浏览音频 当用户单击第一个按钮时,他可以录制音频。这已经实现。 当用户单击第二个按钮时,他可以浏览以查找iPhone库中已经存在的音频/声音。我对
香港专业教育学院一直在使用SoX来将文件修剪为恰好2秒长,但是我注意到音频文件最后总是额外多了32毫秒左右,显然它的额外数据是要告知其他解码器其信息,但是否必须添加放在文件的长度上? 我创建了一个程序
我将使用代码来获取设备的默认音量/声音,该默认音量/声音是使用设备上的音量调高或调低按钮设置的,下面是我要访问声音的代码, 为了解决此错误,我已经进行了研究,发现要访问此代码,我们需要使用CoreAu
我有解码 MP3 并用所有“值”填充数组的代码。 我的问题是:这些值(value)观是什么?它们是频率吗?它们是振幅吗? 这是代码: File file = new File(song.getFile
哈乌乌,我正在尝试实现 Pong。 现在我想播放声音,但它抛出异常(UnsupportedAudioFileException)。我做错了什么? AudioInputStream ainBalk;
我在大学的一个兄弟会中,在这个兄弟会中我们有楼梯。时不时有人从那些楼梯上掉下来。我们通常从吧台后面的电脑播放音乐(通常来自互联网或 iTunes)。我有一个 usb 按钮,想编写一个程序,当有人从楼梯
我想检测来自用户语音的声音/噪音,如果语音输入为空,它会自动停止。 为应用程序点赞 talking tom cat当有声音/语音输入时它会自动开始收听,当没有声音/语音输入时会自动停止。 任何帮助都将
我正在使用 jQuery Sound Plugin在我的网站上创建一些声音效果,但我无法播放。我收到此消息: settings.events.error(null, {msg: "You have n
我有一段代码可以在我点击一个按钮后播放声音。当我第二次单击此按钮时,首先会出现重置之类的东西。 我想要的是:每次单击按钮时我都想立即播放声音而无需重置按钮。 我的代码: -(IBAction)play
我在android studio中制作了一个闹钟。我可以运行该应用程序,除了播放闹钟铃声外,其他一切正常。实际上,当闹钟时间到来时,没有声音播放。我不知道我的代码有什么问题。请帮我找出错误。 主要 A
有什么方法可以在关闭声音的情况下播放 UILocalNotification 声音。实际上,我正在尝试创建一个闹钟,即使用户关闭了声音也能正常工作。或实现此目的的任何替代方法。 最佳答案 如果用户关闭
我试图从字符串创建音频,我试图举一个例子,用户输入他们的名字,然后将其转换为声音/音频 - 声音/音频会根据输入的字符串而有所不同。 (我不想在字符串上执行“文本到语音”,只是创建由字符串生成的声音,
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
对大量二进制文件(例如音频和视频文件)进行版本控制的最佳方法是什么? Git 似乎并不是真正为处理大量二进制文件而设计的。 另一个问题是内容制作者不一定想学习如何使用像 Git 这样的开发人员工具。
我想让一个 python 程序在它完成任务时发出哔声来提醒我。目前,我使用 import os 然后使用命令行语音程序说“处理完成”。我宁愿它是一个简单的“铃铛”。 我知道 Cocoa 应用程序中可以
请原谅这个愚蠢的新手问题,但是:当我(不小心)在命令行窗口中按退格键时,如何关闭 MATLAB 发出的极其烦人的“哔”声? 最佳答案 只是beep off在最新版本中。 https://www.mat
如何找出用户在控制面板中配置了哪些声音文件? 示例:我想播放“设备已连接”的声音。 哪个API可用于查询控制面板声音设置? 我看到控制面板对话框中有一些由第三方程序创建的自定义条目,因此必须有一种方法
我对实现与此人 link 类似的处理方式感兴趣。 据我了解,她将一段视频切成 tiff 格式,然后使用 RiTa 库进行合成 有谁知道如何实现这样的事情,只是改变我正在使用其他扩展名或文件格式的事实。
使用 C#,我试图捕获 PC 正在播放的音频,而不使用 WASAPI 和环回,因为我的声卡似乎不支持它。 TeamViewer 之类的程序是如何做到的?当我使用它时,人们可以从我的 PC 听到音频。
我是一名优秀的程序员,十分优秀!