您尚未登录。

#1 2015-10-11 21:24:24

Mr.I
路人丙
所在地: China_shanghai
注册时间: 2015-08-29
帖子: 116

(已解决)如何用Shell脚本捕获声卡输出?

如题,想用Shell写个有录音功能的脚本,但是不会捕获声卡输出到扬声器的音频信号,囧。

最近编辑记录 Mr.I (2015-10-14 11:53:38)


运维工程师,业余程序员,偶尔写写代码,对 ArchLinux 和 Gnome3 一见钟情 wink

离线

#2 2015-10-11 23:13:06

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,388
个人网站

Re: (已解决)如何用Shell脚本捕获声卡输出?

这样?

gst-launch-1.0 pulsesrc device=0 ! vorbisenc ! oggmux ! filesink location=input.ogg

设备序号用

pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2

离线

#3 2015-10-12 00:56:48

Mr.I
路人丙
所在地: China_shanghai
注册时间: 2015-08-29
帖子: 116

Re: (已解决)如何用Shell脚本捕获声卡输出?

百合仙子 说:

这样?

gst-launch-1.0 pulsesrc device=0 ! vorbisenc ! oggmux ! filesink location=input.ogg

设备序号用

pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2

好高端啊 - -  完全看不懂啊,讲解一下呗


运维工程师,业余程序员,偶尔写写代码,对 ArchLinux 和 Gnome3 一见钟情 wink

离线

#4 2015-10-12 11:09:26

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,388
个人网站

Re: (已解决)如何用Shell脚本捕获声卡输出?

第一行,按 ! 分隔,依次为:从 pulse 的 0 号设备里取数据,使用 vorbis 编码,使用 ogg 容器,存到文件 input.ogg 里去。
第二行就是普通的 shell 了,从 pactl 里取得需要的数据。

离线

#5 2015-10-13 10:57:25

Mr.I
路人丙
所在地: China_shanghai
注册时间: 2015-08-29
帖子: 116

Re: (已解决)如何用Shell脚本捕获声卡输出?

百合仙子 说:

第一行,按 ! 分隔,依次为:从 pulse 的 0 号设备里取数据,使用 vorbis 编码,使用 ogg 容器,存到文件 input.ogg 里去。
第二行就是普通的 shell 了,从 pactl 里取得需要的数据。

啊,谢谢,我能理解一些了,这2段命令我都试了一下,第二段可以获得设备号。第一段会做出一个 .ogg 文件,但是这个文件似乎是不能直接用的唉,貌似我还少做了些什么,请再指点一下。
还有一个问题是:第二段命令取得的设备号要用在哪里呢?


运维工程师,业余程序员,偶尔写写代码,对 ArchLinux 和 Gnome3 一见钟情 wink

离线

#6 2015-10-13 11:45:56

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,388
个人网站

Re: (已解决)如何用Shell脚本捕获声卡输出?

mgna17 说:
百合仙子 说:

第一行,按 ! 分隔,依次为:从 pulse 的 0 号设备里取数据,使用 vorbis 编码,使用 ogg 容器,存到文件 input.ogg 里去。
第二行就是普通的 shell 了,从 pactl 里取得需要的数据。

啊,谢谢,我能理解一些了,这2段命令我都试了一下,第二段可以获得设备号。第一段会做出一个 .ogg 文件,但是这个文件似乎是不能直接用的唉,貌似我还少做了些什么,请再指点一下。
还有一个问题是:第二段命令取得的设备号要用在哪里呢?

用在第一条命令里,按顺序数第几个就是几减一了。
那个 ogg 文件可以播放的,就是捕获到的内容。如果选错了设备的话可能就什么都听不到啦。

离线

#7 2015-10-14 11:51:53

Mr.I
路人丙
所在地: China_shanghai
注册时间: 2015-08-29
帖子: 116

Re: (已解决)如何用Shell脚本捕获声卡输出?

百合仙子 说:
mgna17 说:
百合仙子 说:

第一行,按 ! 分隔,依次为:从 pulse 的 0 号设备里取数据,使用 vorbis 编码,使用 ogg 容器,存到文件 input.ogg 里去。
第二行就是普通的 shell 了,从 pactl 里取得需要的数据。

啊,谢谢,我能理解一些了,这2段命令我都试了一下,第二段可以获得设备号。第一段会做出一个 .ogg 文件,但是这个文件似乎是不能直接用的唉,貌似我还少做了些什么,请再指点一下。
还有一个问题是:第二段命令取得的设备号要用在哪里呢?

用在第一条命令里,按顺序数第几个就是几减一了。
那个 ogg 文件可以播放的,就是捕获到的内容。如果选错了设备的话可能就什么都听不到啦。

嘿嘿 ^_^  ,谢谢狐仙大大的指点,我会用了。

最近编辑记录 Mr.I (2015-10-14 11:52:56)


运维工程师,业余程序员,偶尔写写代码,对 ArchLinux 和 Gnome3 一见钟情 wink

离线

页脚