当前位置: 首页 > news >正文

网站结构构图建设网站技术公司

网站结构构图,建设网站技术公司,企业网站备案多少钱,求网站建设详细过程我在使用libasound将随机字节写入ALSA播放设备时遇到了很多麻烦。 最终#xff0c;我的目标是能够通过网络路由回放流并让它在远程设备上播放。此问题中提供的代码将WAV文件读入内存并通过snd_pcm_writei将其写入驱动程序并且可以正常工作。 但是#xff0c;这段代码与我正在…我在使用libasound将随机字节写入ALSA播放设备时遇到了很多麻烦。 最终我的目标是能够通过网络路由回放流并让它在远程设备上播放。此问题中提供的代码将WAV文件读入内存并通过snd_pcm_writei将其写入驱动程序并且可以正常工作。 但是这段代码与我正在尝试做的事情之间的关键区别在于我没有立即获得所有数据。 我希望在数据可用时对其进行流式处理。调整上面的示例代码以满足我的需求我最终得到了这样的结论#include #include #include static snd_pcm_t *PlaybackHandle;int init_playback(const char *device, int samplerate, int channels) {int err;printf(Init parameters: %s %d %d\n, device, samplerate, channels);if((err snd_pcm_open(PlaybackHandle, device, SND_PCM_STREAM_PLAYBACK, 0)) 0) {printf(Cant open audio %s: %s\n, device, snd_strerror(err));return -1;}if ((err snd_pcm_set_params(PlaybackHandle, SND_PCM_FORMAT_S16, SND_PCM_ACCESS_RW_INTERLEAVED, channels, samplerate, 1, 500000)) 0) {printf(Cant set sound parameters: %s\n, snd_strerror(err));return -1;}return 0;}int play_bytes(const void *bytes, int len) {snd_pcm_uframes_t frames, count;snd_pcm_uframes_t bufsize, period_size;frames 0;count 0;snd_pcm_prepare(PlaybackHandle);snd_pcm_get_params(PlaybackHandle, bufsize, period_size);printf(bufsize%d\n, (int) bufsize);do {int remaining len - count;int buflen remaining bufsize ? remaining : bufsize;frames snd_pcm_writei(PlaybackHandle, bytes count, buflen);// If an error, try to recover from itif (frames -EPIPE) {printf(EPIPE\n);snd_pcm_prepare(PlaybackHandle);}if (frames 0) {printf(Recovering\n);frames snd_pcm_recover(PlaybackHandle, frames, 0);}if (frames 0){printf(Error playing wave: %s\n, snd_strerror(frames));break;}// Update our pointercount frames;//printf(count%d len%d\n, (int)count, len);} while (count len);// Wait for playback to completely finishif (count len)snd_pcm_drain(PlaybackHandle);return 0;}int close_playback() {snd_pcm_close(PlaybackHandle);return 0;}int main(int argc, char **argv) {if(argc 1) {printf(Usage: %s \n, argv[0]);return -1;}int fd;unsigned long long len;fd open(argv[1], O_RDONLY);// Find the lengthlen lseek(fd, 0, SEEK_END);// Skip the first 44 bytes (header)lseek(fd, 44, SEEK_SET);len - 44;char *data malloc(len);read(fd, data, len);init_playback(default, 44100, 2);play_bytes(data, len);close_playback();return 0;}这段代码可以用gcc playback.c -o playback -lasound 。 我正在使用的WAV文件可以在这里找到。当我运行此代码片段时我根据bufsize对输入数据进行分块根据块大小在播放中会重复播放音频片段。 较大的块大小产生的重复次数少于小块大小。 将此与音频的声音结合起来我相信在每个块的末尾都会重复一个小片段。我使用的参数是样本44100频道2为什么一次性发送整个WAV文件工作而发送它的块不起作用 如何将音频数据块发送给驱动程序并使其正常播放
http://www.zqtcl.cn/news/548163/

相关文章:

  • 深圳专业做网站建设西安网站建设有限公司
  • wordpress 一键建站wordpress子主题style
  • 昆明设计网站怎么做网络广告
  • 2018什么做网站深圳企业网站设
  • 北京旅游外贸网站建设博客集成wordpress
  • 中国最好的建设网站哪些网站教你做系统
  • 自己做网站别人怎么看见网站建设办公
  • 凡科做网站视频网站哪家好
  • 查询网站是否正规营销策略国内外文献综述
  • 做网页用的网站wordpress用户角色权限管理
  • 怎么查网站备案的公司wordpress 无刷新评论
  • 学前心理学课程建设网站百度极速版下载
  • 佛山做营销型网站建设深圳宝安区租房
  • 做汽车团购的网站建设营销方案有哪些
  • 做设计的网站网络公关什么意思
  • 一般课程网站要怎么做做钓鱼网站软件下载
  • 济南网站建设92jzh收不到wordpress的邮件
  • 一键优化在哪里打开新手怎么入行seo
  • 网站建设的费用明细创建公司网站需要注意什么
  • 微网站怎么做的好宣传片拍摄服务
  • 抚州网站开发机构wordpress开源
  • 企业营销网站建设不属于网页制作工具
  • 呼和浩特网站建设信息建服装类网站需要考虑的因素
  • 百度站长平台工具南京开发app的公司
  • 济南如何挑选网站建设公司设计 网站 现状
  • 网站开发建设流程图wordpress 插件 简码
  • 信宜网站开发公司阿里指数app下载
  • AAP网站开发需要多少钱网站核验通知书
  • 网站续费模板wordpress安装到ESC
  • 网站网址大全做商品条形码的网站