天嵌 ARM开发社区

 找回密码
 注册
查看: 8308|回复: 22

[分享]TQ2440录音测试程序源码+程序

[复制链接]
effendi 发表于 2010-9-10 21:33:57 | 显示全部楼层 |阅读模式
本帖最后由 effendi 于 2010-9-10 21:39 编辑

之前发贴问过采样率问题,未果,后察觉问题出在tq2440的音频设备只能以O_WRONLY或者O_RDONLY方式打开,不能使用O_RDWR方式打开,所以上一贴中的代码不能打开设备。

代码很简单,稍微看一下就会明,需要注意的是生成的Audio.wav并非严格的.wav格式(无文件头)。
  1. #include <sys/ioctl.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include <sys/soundcard.h>


  7. #define BUF_SIZE 4096
  8. #define DEVICE_NAME "/dev/dsp"

  9. int audio_fd; //声卡
  10. FILE *file_fd; //文件
  11. int file_len; //文件长度
  12. unsigned char audio_buffer[BUF_SIZE];

  13. unsigned char *file_name_creat;

  14. void delay(long x)
  15. {
  16. unsigned long i;
  17. for(i=0; i<x; i++);
  18. }

  19. int main()
  20. {
  21. file_name_creat = "Audio.wav";

  22. /*打开音频设备,准备录音*/
  23. if ((audio_fd = open(DEVICE_NAME, O_RDONLY)) == -1)
  24. {
  25. printf("open error\n");
  26. return -1;
  27. }

  28. /*设置采样速率*/

  29. int speed = 48000;   //(常规的有8000,11025,16000,22050,32000,44100,48000)

  30. if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
  31. {
  32. /* Fatal error */
  33. printf("SNDCTL_DSP_SPEED error\n");
  34. return -1;
  35. }
  36. printf("the wav speed is %d\n",speed);

  37. /**/
  38. int i=0;
  39. unsigned long loops_record = 500; //500*4KB=2MB
  40. file_fd = fopen(file_name_creat, "w");

  41. printf("recording...\n");
  42. for(i=0;i<loops_record;i++)
  43. {
  44. read(audio_fd,audio_buffer,4096);
  45. fwrite(audio_buffer, 4096, 1, file_fd);
  46. }
  47. printf("recording...over\n");
  48. /*关闭设备和文件*/
  49. fclose(file_fd);
  50. close(audio_fd);
  51. delay(100000);



  52. return 0;
  53. }
复制代码
以上录音代码已在2.6.30.4的内核测试运行成功,只是有一个疑问:为何用音频线将phone直接引到mic去录音仍会有沙沙声。

以下是4.3.3编好的程序。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +9 收起 理由
一叶扁舟 + 9 很给力!

查看全部评分

 楼主| effendi 发表于 2010-9-10 21:35:53 | 显示全部楼层
本帖最后由 effendi 于 2010-9-10 21:37 编辑

有时间我会继续贴个播放的代码。
天嵌_support1 发表于 2010-9-11 11:23:15 | 显示全部楼层
2# effendi


顶一顶
 楼主| effendi 发表于 2010-9-14 11:50:27 | 显示全部楼层
回答1楼自己提出的问题:有沙沙声的原因是播放的过程中误将符号位忽略。
cexowginui 发表于 2010-11-16 22:24:13 | 显示全部楼层
thanks ~~~
我爱嵌入式 发表于 2010-11-16 22:58:13 | 显示全部楼层
haode  xuexue
guoyin 发表于 2010-11-30 21:04:31 | 显示全部楼层
收藏,备用,谢谢!
tom7232 发表于 2011-1-25 23:31:52 | 显示全部楼层
真好、下載來用用看
洪剑平 发表于 2011-4-16 16:38:08 | 显示全部楼层
这个是好东西,谢谢楼主!
embedsky_lhh 发表于 2011-4-16 16:48:23 | 显示全部楼层
好东西,顶~~
hexinggao 发表于 2011-9-20 14:43:57 | 显示全部楼层
好东西,得顶
lyol33 发表于 2011-9-22 16:44:34 | 显示全部楼层
怎么录出来的文件很大,但播放却很快就跳完了,没什么声音,可能不对吧,还有dsp这个设备的驱动在哪呢?等楼主哥哥回复
亚瑟王 发表于 2011-10-17 19:12:34 | 显示全部楼层
是wav格式的。
hdwmh2011 发表于 2011-11-4 08:35:31 | 显示全部楼层
dingyige........
lizhenjin88 发表于 2011-11-16 10:26:14 | 显示全部楼层
怎么下载不了呢?可以发给我吗?我的邮箱 lizhenjin88@foxmail.com 谢谢你了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-26 19:34 , Processed in 1.109375 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表