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

做网站优化的协议书to a wordpress

做网站优化的协议书,to a wordpress,自治区住房和城乡建设部网站,wordpress新浪图床前言 最近学了不少有关音频相关的#xff0c;最近搞一下ALSA驱动 安装 参考Linux应用开发【第八章】ALSA应用开发 中提到的ALSA库及工具章节#xff0c;本文中有比较详细的有关ALSA驱动引用程序怎么安装的#xff0c;这里不再赘述。 关于ALSA#xff0c;就当成一个音频…前言 最近学了不少有关音频相关的最近搞一下ALSA驱动 安装 参考Linux应用开发【第八章】ALSA应用开发 中提到的ALSA库及工具章节本文中有比较详细的有关ALSA驱动引用程序怎么安装的这里不再赘述。 关于ALSA就当成一个音频有关的建立在Linux操作系统上类似WinApi的东西就可以了实际应用起来也比较简单之后会举例。 第一个项目 为了进行第一个ALSA项目的开发那么我们先来建立一个CMake工程。在安装部分我们已经安装了ALSA驱动其实这个时候就已经将ALSA的头文件加入到我们的项目中来了可以直接试着在main文件里面加上这个头文件试试会不会报错 #include alsa/asoundlib.h如果这个时候CMake生成没有报错那么引入就是正常的。 1. 引入alsa依赖 在Linux上开发是需要引入alsa的依赖以及符号文件的这里我们需要以下语句这里我提供一个最精简的CMakeLists.txt范本 cmake_minimum_required(VERSION 3.0) project(alsa_example)# 获得ALSA的Package find_package(ALSA REQUIRED)add_executable(alsa_example main.cpp)# 链接 target_link_libraries(alsa_example PRIVATE ${ALSA_LIBRARY})# 头文件引入 target_include_directories(alsa_example PRIVATE ${ALSA_INCLUDE_DIRS}) 这样我们就能先将ALSA的依赖引用了。 2.写个简单的程序来将当前所有的音频设备全部列举了 在正式操作一个音频设备之前我们当然了需要知道我们需要的音频设备到底是哪一个那我们现在将所有的音频设备信息全部打印出来如下 #include alsa/asoundlib.h #include iostreamint main() {snd_ctl_t *handle;snd_ctl_card_info_t *info;int card -1;snd_ctl_card_info_alloca(info);// Iterate over sound cardswhile (snd_card_next(card) 0 card 0) {char name[32];sprintf(name, hw:%d, card);if (snd_ctl_open(handle, name, 0) 0) {std::cerr Cannot open control for card card std::endl;continue;}if (snd_ctl_card_info(handle, info) 0) {std::cerr Cannot get card info for card card std::endl;snd_ctl_close(handle);continue;}std::cout Card card : snd_ctl_card_info_get_name(info) std::endl;snd_ctl_close(handle);}return 0; } 返回值如下 Card 0: rockchip,dp0 Card 1: rockchip-hdmi0 Card 2: rockchip-hdmi1 Card 3: rockchip,es8388 Card 4: rockchip,hdmiin我这里是做了点处理的实际上返回值里面并没有告诉你什么Card 0这种而是告诉你hw:0也就是hardware的意思总之你只用知道每个音频设备的唯一标识应该是类似hw:0的形式。 这里我们可以看音频设备的名称其中dp0 hdmi hdmi1 hdmiin都是显示器接口音频设备我们这里显然是用不上的那么我们就找到前面板的显示音频卡设备es8388不同的设备输出声卡应该不同这个需要根据具体声卡而定。 我们这里知道我们需要选中的前面板声卡设备是hw:3这个之后我们会用到 3. 向音频设备里面写数据 我们知道Linux下一切皆文件嘛播放音频实际上就是往某个设备句柄中写入音频信号这里我们尝试一下向音频设备写入信号。 流程如下 使用二进制流的方式打开mp3文件打开声卡pcm句柄设置pcm句柄的属性循环将二进制流以buffer的形式写入到pcm句柄内 实际代码如下 #include alsa/asoundlib.h #include iostream #include fstream #include vector#define PCM_DEVICE hw:3 // Replace with your desired device, e.g., hw:3 #define MP3_FILE_PATH /home/orangepi/workhsop/testProject/123.mp3 // Replace with your MP3 file pathint main() {const char *mp3File MP3_FILE_PATH;// Open the MP3 filestd::ifstream file(mp3File, std::ios::binary);if (!file) {std::cerr Error opening file: mp3File std::endl;return 1;}// Initialize ALSAsnd_pcm_t *handle;if (snd_pcm_open(handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0) 0) {std::cerr Error opening PCM device PCM_DEVICE std::endl;return 1;}// Set parameters: 44100 Hz, stereo, 16-bit little-endiansnd_pcm_set_params(handle,SND_PCM_FORMAT_S16_LE,SND_PCM_ACCESS_RW_INTERLEAVED,2, // Channels (stereo)44100, // Sample rate0, // Soft resampling disabled500000); // Latency in microseconds// Buffer for audio datastd::vectorchar buffer(4096);// Read and play audio datawhile (file.read(buffer.data(), buffer.size())) {int num_samples buffer.size() / 2; // Assuming 16-bit samples (2 bytes per sample)int err snd_pcm_writei(handle, buffer.data(), num_samples);if (err 0) {std::cerr Playback error: snd_strerror(err) std::endl;break;}}// Close PCM handlesnd_pcm_close(handle);return 0; } 这样我们就完成了向设备中写音频这件事但是这个音频爆炸吵的同时也全是乱码显然这并不是我们需要的结果。这是因为我们播放的是mp3音频是经过了一系列压缩算法的文件并不是可以直接用于播放的有实际意义的音频信息。在我们正式播放音频之前需要使用mpg123库对音频进行解码得到pcm音频流然后再一点点将这个流写入到音频设备内。 4. 使用mpg123解码 如果需要使用mpg123解码mp3文件首先用sudo apt-get install mpg123 将mpg123安装到本地之后需要在CMakeLists.txt下引入这个mpg123库为了方便理解我这里还是将最小限度的mpg123的引入方式 cmake_minimum_required(VERSION 3.0) project(MyAudioPlayer)# 设置C标准 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON)# 查找ALSA库 find_package(ALSA REQUIRED) include_directories(${ALSA_INCLUDE_DIRS})# 查找mpg123库 find_package(PkgConfig REQUIRED) pkg_search_module(MPG123 REQUIRED mpg123) include_directories(${MPG123_INCLUDE_DIRS})# 添加可执行文件 add_executable(audio_player main.cpp)# 链接ALSA和mpg123库 target_link_libraries(audio_player ${ALSA_LIBRARIES} ${MPG123_LIBRARIES}) 写出一段带解码和播放的代码如下 #include iostream #include vector #include alsa/asoundlib.h #include mpg123.h#define PCM_DEVICE hw:3 // 目标音频设备 #define MP3_FILE_PATH /home/orangepi/workhsop/testProject/123.mp3 // 目标音频int main() {const char *mp3File MP3_FILE_PATH;// 初始化mpg123库mpg123_handle *mh;mpg123_init();mh mpg123_new(NULL, NULL);// 打开mp3文件if (mpg123_open(mh, mp3File) ! MPG123_OK) {std::cerr Error opening file: mp3File std::endl;return 1;}// 获取格式信息int channels, encoding;long rate;mpg123_getformat(mh, rate, channels, encoding);// 初始化ALSAsnd_pcm_t *handle;if (snd_pcm_open(handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0) 0) {std::cerr Error opening PCM device PCM_DEVICE std::endl;return 1;}// 设置声卡信息snd_pcm_set_params(handle,SND_PCM_FORMAT_S16_LE,SND_PCM_ACCESS_RW_INTERLEAVED,channels,rate,0,500000);// 缓冲区std::vectorshort buffer(4096);// 读取并播放音频size_t bytesRead;//使用mpg123进行音频信息解码获得pcm音频信号while (mpg123_read(mh, reinterpret_castunsigned char*(buffer.data()), buffer.size() * sizeof(short), bytesRead) MPG123_OK) {int num_samples bytesRead / sizeof(short);int err snd_pcm_writei(handle, buffer.data(), num_samples);if (err 0) {std::cerr Playback error: snd_strerror(err) std::endl;break;}}// Close mpg123 handlempg123_close(mh);mpg123_delete(mh);mpg123_exit();// Close PCM handlesnd_pcm_close(handle);return 0; }
http://www.hkea.cn/news/14562440/

相关文章:

  • 电子商务网站怎么做卫生间装修效果图
  • 网站建设公司专业网站开发需求怎么在后台设计网站
  • 怎么做企业网站建设学做网站php
  • 网站的建设原始代码公司网址制作
  • 建国外网站需要多少钱全国网站建设公司有多少家
  • 高端品牌网站建设策划方案未备案网站通知
  • 福州网站建设工作室如何做自己的影视网站
  • 淄博网站建设服务商重庆seo海洋qq
  • 一诺互联网站建设公司郑州网站优化平台
  • 网站要怎样建设手机无法安装wordpress
  • 外包+网站开发公司网站建设分解结构
  • 网站如何防止别人抄袭在哪可以接企业网站建设的活
  • 收录文案网站手机社交网站模板
  • 网站开发双语北京云建站模板
  • 网站备案账户名如何查询房地产销售政策
  • 做神马网站优化排名西安软件开发外包公司
  • 网站地图seo柳州微网站开发
  • 杭州网站建设费用多少钱成都小程序商城开发
  • 建立网站卖没有版权的电子书辽阳百姓网免费发布信息网
  • 做a爱片网站各行各业网站建设口碑好
  • 乐清网站只做中企动力官网网站
  • 玉林网站优化企业网站建设用标语
  • 专门为网站建设服务的公司网站颜色搭配
  • 网站托管哪家好做网站都是用ps吗
  • 营销型网站的运营配套不包括可以自己制作头像的网站
  • 网站解析后显示在建设中iis网站模板
  • 国内新闻最新消息淄博网站制作服务优化
  • 购买网站建设平台中小企业建网站哪个好
  • seo综合查询爱站谷歌搜索引擎363
  • 医疗网站跳出率平均是多少亚马逊品牌官网建设