【全志T113-S3_100ask】9-音频输入与输出
之前查看系统命令,发现有个aplay命令,然后尝试使用 aplay -Dhw:audiocodec -vvv gz.wav播放音频,然后报错 aplay: pcm_write:2127: write error: Input/output error
# aplay -Dhw:audiocodec gz.wav
Playing WAVE 'gz.wav' : [ 46.786665] [SNDCODEC][sunxi_card_hw_params][620]:stream_flag: 0
Signed 16 bit Little Endian, Rate 16000 Hz, Mono
aplay: pcm_write:2127: write error: Input/output error
然后就不会了。
8月2日100ask出了简单的教程,是需要先使用tinymix 设置参数的,但是。-bash: tinymix: command not found
我又不想再去编译安装 tinymix ,发现有个 amixer 命令,查阅资料成功配置,播放了音乐。
1、查看用法
# amixer -h
Usage: amixer <options> [command]
Available options:
-h,--help this help
-c,--card N select the card
-D,--device N select the device, default 'default'
-d,--debug debug mode
-n,--nocheck do not perform range checking
-v,--version print version of this program
-q,--quiet be quiet
-i,--inactive show also inactive controls
-a,--abstract L select abstraction level (none or basic)
-s,--stdin Read and execute commands from stdin sequentially
-R,--raw-volume Use the raw value (default)
-M,--mapped-volume Use the mapped volume
Available commands:
scontrols show all mixer simple controls
scontents show contents of all mixer simple controls (default command)
sset sID P set contents for one mixer simple control
sget sID get contents for one mixer simple control
controls show all controls for given card
contents show contents of all controls for given card
cset cID P set control contents for one control
cget cID get control contents for one control
Available advanced commands:
sevents show the mixer events for simple controls
events show the mixer events for simple controls
有点复杂看不懂。。。查阅资料。
2、常用命令
本节参考 https://blog.csdn.net/meirixuexi/article/details/71513007
amixer controls 用于查看音频系统提供的操作接口
amixer contents 用于查看接口配置参数
amixer cget + 接口函数
amixer cset + 接口函数 + 设置值
解释:比如想要设置主音量,第一次使用的话先得查询一下接口函数的配置参数,但是又不知道接口叫什么,先查询所有接口
# amixer controls
numid=17,iface=MIXER,name='Headphone volume'
numid=30,iface=MIXER,name='Headphone Switch'
numid=12,iface=MIXER,name='FMINL gain volume'
numid=13,iface=MIXER,name='FMINR gain volume'
numid=2,iface=MIXER,name='ADC1 ADC2 swap'
numid=24,iface=MIXER,name='ADC1 Input FMINL Switch'
numid=25,iface=MIXER,name='ADC1 Input LINEINL Switch'
numid=23,iface=MIXER,name='ADC1 Input MIC1 Boost Switch'
numid=6,iface=MIXER,name='ADC1 volume'
...省略...
找到了Headphone volume,意思是耳机音量,因为我们是使用3.5mm接口的,所以这一项和我们想要的很像。
使用 amixer cget + 接口函数查询现在的参数,如:
# amixer cget numid=17,iface=MIXER,name='Headphone volume'
numid=17,iface=MIXER,name='Headphone volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=4
| dBscale-min=-42.00dB,step=6.00dB,mute=0
value = 4,最大值为7
修改音量值为6:
# amixer cset numid=17,iface=MIXER,name='Headphone volume' 6
numid=17,iface=MIXER,name='Headphone volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=6
| dBscale-min=-42.00dB,step=6.00dB,mute=0
经过查询,之所以出现 aplay: pcm_write:2127: write error: Input/output error 错误是因为没有输出设备。
# amixer cget numid=30,iface=MIXER,name='Headphone Switch'
numid=30,iface=MIXER,name='Headphone Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
耳机开关的输出是 off !!!
将其开启:
# amixer cset numid=30,iface=MIXER,name='Headphone Switch' on
numid=30,iface=MIXER,name='Headphone Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
使用 aplay 可以从耳机输出音乐了!!
1、配置音频输出渠道:
# amixer cset numid=30,iface=MIXER,name='Headphone Switch' on
numid=30,iface=MIXER,name='Headphone Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
2、设置音量1:
# amixer cset numid=17,iface=MIXER,name='Headphone volume' 6
numid=17,iface=MIXER,name='Headphone volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
: values=6
| dBscale-min=-42.00dB,step=6.00dB,mute=0
设置音量2:
# amixer cset numid=5,iface=MIXER,name="PCM Volume" 170
numid=5,iface=MIXER,name='DAC volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=255,step=0
: values=170,170
| dBscale-min=-119.25dB,step=0.75dB,mute=0
3、播放音乐:
# aplay -Dhw:audiocodec -vvv piao.wav
Playing WAVE 'piao.wav' : [ 228.205229] [SNDCODEC][sunxi_card_hw_params][620]:stream_flag: 0
Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Hardware PCM card 0 'audiocodec' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
...省略...
实测:

配置音频输入渠道:
amixer cset numid=29,iface=MIXER,name='ADC3 Input MIC3 Boost Switch' on
amixer cset numid=31,iface=MIXER,name='HpSpeaker Switch' on
录音
arecord -Dhw:audiocodec -f S24_LE -r 16000 -c 1 -d 10 -vv ./in.wav
解释:使用 设备audiocodec
录制 格式为S24_LE
输入比特率为16000
通道1
时间为10s
保存在 ./in.wav
更多内容\查看帮助 arecord -h
实测:

从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我有一个应用程序可以读取文件的内容并为其编制索引。我将它们存储在磁盘本身中,但现在我使用的是AmazonS3,因此以下方法不再适用。事情是这样的:defperform(docId)@document=Document.find(docId)if@document.file?#Youshould'tcreateanewversion@document.versionlessdo|doc|@document.file_content=Cloudoc::Extractor.new.extract(@document.file.file)@document.saveendendend@docu
我目前正在使用带有Carrierwavegem的Rails3.2将文件上传到AmazonS3。现在我需要能够处理用户提交的大于5GB的文件,同时仍然使用Carrierwavegem。Carrierwave或Fog是否有任何其他gem或分支可以处理5GB以上的文件上传到S3?编辑:我不想重写一个完整的Rails上传解决方案,所以像这样的链接没有帮助:https://gist.github.com/908875. 最佳答案 我想出了如何做到这一点,并且现在可以正常工作了。在正确的config/environment文件中,添加以下内容以
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我在s3上有一堆文件。我使用.fog配置文件设置了雾,这样我就可以启动fog并获得提示。如果我知道文件的路径,现在如何访问和编辑s3上的文件? 最佳答案 最简单的方法可能是使用IRB或PRY获取文件的本地副本,或者编写一个简单的脚本来下载、编辑然后重新上传。假设您有一个名为data.txt的文件。您可以使用以下脚本初始化与S3的连接。require'fog'connection=Fog::Storage.new({:provider=>'AWS',:aws_secret_access_key=>YOUR_SECRET_ACCESS_
我正在尝试上传文件。一个简单的hello.txt。我正在关注文档,但无法将其上传到我的存储桶。#STARTAWSCLIENTs3=Aws::S3::Resource.newbucket=s3.bucket(BUCKET_NAME)begins3.buckets[BUCKET_NAME].objects[KEY].write(:file=>FILE_NAME)puts"Uploadingfile#{FILE_NAME}tobucket#{BUCKET_NAME}."bucket.objects.eachdo|obj|puts"#{obj.key}=>#{obj.etag}"endresc