首页 文章 精选 留言 我的

精选列表

搜索[音频混合],共10000篇文章
优秀的个人博客,低调大师

android音频采集

1:创建一个AudioRecord类 AudioRecord *mpAudioRecord=new AudioRecord(); 2:设置采集参数 2.2版本: mpAudioRecord->set(AUDIO_SOURCE_DEFAULT, 0, 0, AudioSystem::CHANNEL_IN_MONO, 0, 0,AudioRecordCallback, this,0,0); 2.3版本:(多了一个参数) mpAudioRecord->set(AUDIO_SOURCE_DEFAULT, 0, 0, AudioSystem::CHANNEL_IN_MONO, 0, 0,AudioRecordCallback, this,0,0,0); 3:检查设置是否成功: if (mpAudioRecord->initCheck() != NO_ERROR) return -1;//error! 4:启动采集: mpAudioRecord->start(); 5:采集回调函数的定义: void Caudioplayer::AudioRecordCallback(int event, void* user, void *info) { if (event != AudioTrack::EVENT_MORE_DATA) return; Caudioplayer *audioplayer=static_cast<Caudioplayer*>(user); AudioTrack::Buffer *buffer = static_cast<AudioTrack::Buffer *>(info); short *lpOut = buffer->i16; Mutex::Autolock lock(audioplayer->mLock); copy_size=4096>buffer->size?buffer->size:4096; memcpy(tembuffer,lpOut,copy_size); } 本文转自 fanxiaojun 51CTO博客,原文链接:http://blog.51cto.com/2343338/998112,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS - AVAudioPlayer 音频播放

前言 NS_CLASS_AVAILABLE(10_7, 2_2) @interface AVAudioPlayer : NSObject @available(iOS 2.2, *) public class AVAudioPlayer : NSObject 本地音乐播放: 添加库文件:AVFoundation.framework 包含头文件:#import <AVFoundation/AVFoundation.h> 1、本地音乐播放 Objective-C // 添加库文件:AVFoundation.framework // 包含头文件:#import <AVFoundation/AVFoundation.h> // 声明音乐播放控件,必须声明为全局属性变量,否则可能不会播放,AVAudioPlayer 只能播放本地音乐 @property(nonatomic, retain)AVAudioPlayer *musicPlayer; // 获取音乐文件路径 NSURL *musicUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"蓝莲花" ofType:@"mp3"]]; // 实例化音乐播放控件 musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicUrl error:nil]; // 准备(缓冲)播放 [musicPlayer prepareToPlay]; // 开始播放音乐 [musicPlayer play]; Swift // 添加库文件:AVFoundation.framework // 包含头文件:import AVFoundation // 声明音乐播放控件,必须声明为全局属性变量,否则可能不会播放,AVAudioPlayer 只能播放本地音乐 var musicPlayer:AVAudioPlayer! // 获取音乐文件路径 let musicUrl = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("蓝莲花", ofType: "mp3")!) // 实例化音乐播放控件 musicPlayer = try? AVAudioPlayer(contentsOfURL: musicUrl) // 准备(缓冲)播放 musicPlayer.prepareToPlay() // 开始播放音乐 musicPlayer.play() 2、本地音乐播放设置 Objective-C // 设置代理,需遵守 <AVAudioPlayerDelegate> 协议 musicPlayer.delegate = self; // 判断播放状态 BOOL isPlaying = musicPlayer.isPlaying; // 获取音乐通道数 NSUInteger numberOfChannels = musicPlayer.numberOfChannels; // 获取音乐时长 /* 获取音乐的长度,单位秒 */ NSTimeInterval duration = musicPlayer.duration; // 获取与输出设备相关联的当前播放进度 NSTimeInterval deviceCurrentTime = musicPlayer.deviceCurrentTime; // 获取当前音乐文件的路径 /* 音乐文件播放控件由 url 创建,returns nil if object was not created with a URL */ NSURL *currentMusicUrl = musicPlayer.url; // 获取当前音乐文件的数据 /* 音乐文件播放控件由 data 创建,returns nil if object was not created with a data object */ NSData *currentMusicData = musicPlayer.data; // 设置声道 /* -1.0:左声道, 0.0:左右声道(默认), 1.0:右声道 */ musicPlayer.pan = 1.0; // 设置音量 /* 音量范围是 0.0 ~ 1.0,默认为 1.0 */ musicPlayer.volume = 0; // 设置是否允许控制播发速度 /* 设置播放速度时必须设置此项为 YES,必须在 [musicPlayer prepareToPlay] 之前设置,默认为 NO */ musicPlayer.enableRate = YES; // 设置播放速度 /* enableRate 必须设置为 YES,1.0 is normal, 0.5 is half speed, 2.0 is double speed */ musicPlayer.rate = 1; // 设置当前播放位置 /* 设置音乐从指定的时间处开始播放 */ musicPlayer.currentTime = 30; // 设置循环播放次数 /* = 0:只播放一次(默认),> 0:播放设置的次数,< 0:循环播放 */ musicPlayer.numberOfLoops = 1; // 缓冲音乐 [musicPlayer prepareToPlay]; // 开始播放 [musicPlayer play]; // 定时播放 /* 在指定的时间播放音乐 */ [musicPlayer playAtTime:[[NSDate dateWithTimeIntervalSinceNow:10] timeIntervalSince1970]]; // 暂停播放 [musicPlayer pause]; // 停止播放 [musicPlayer stop]; Swift // 设置代理 /* 需遵守 AVAudioPlayerDelegate 协议 */ musicPlayer.delegate = self // 判断播放状态 let isPlaying:Bool = musicPlayer.playing // 获取音乐通道数 let numberOfChannels:Int = musicPlayer.numberOfChannels // 获取音乐时长 /* 获取音乐的长度,单位秒 */ let duration:NSTimeInterval = musicPlayer.duration // 获取与输出设备相关联的当前播放进度 let deviceCurrentTime:NSTimeInterval = musicPlayer.deviceCurrentTime // 获取当前音乐文件的路径 /* 音乐文件播放控件由 url 创建,returns nil if object was not created with a URL */ let currentMusicUrl:NSURL = musicPlayer.url! // 获取当前音乐文件的数据 /* 音乐文件播放控件由 data 创建,returns nil if object was not created with a data object */ let currentMusicData = musicPlayer.data // 设置声道 /* -1.0:左声道, 0.0:左右声道(默认), 1.0:右声道 */ musicPlayer.pan = 1.0 // 设置音量 /* 音量范围是 0.0 ~ 1.0,默认为 1.0 */ musicPlayer.volume = 0 // 设置是否允许控制播发速度 /* 设置播放速度是必须设置此项为 YES,必须在 [musicPlayer prepareToPlay] 之前设置,默认为 NO */ musicPlayer.enableRate = true // 设置播放速度 /* enableRate 必须设置为 YES,1.0 is normal, 0.5 is half speed, 2.0 is double speed */ musicPlayer.rate = 1 // 设置当前播放位置 /* 设置音乐从指定的时间处开始播放 */ musicPlayer.currentTime = 30 // 设置循环播放次数 /* = 0:只播放一次(默认),> 0:播放设置的次数,< 0:循环播放 */ musicPlayer.numberOfLoops = 1 // 缓冲音乐 musicPlayer.prepareToPlay() // 开始播放 musicPlayer.play() // 定时播放 /* 在指定的时间播放音乐 */ musicPlayer.playAtTime(NSDate(timeIntervalSinceNow: 10).timeIntervalSince1970) // 暂停播放 musicPlayer.pause() // 停止播放 musicPlayer.stop() 3、本地音乐文件解析 Objective-C /* 注意观察 commonKey 和 value: commonKey = title 歌曲名称 commonKey = artist 歌手名称 commonKey = albumName 专辑名称 commonKey = artwork 专辑图片 */ NSString *titleString = nil; NSString *artistString = nil; NSString *albumNameString = nil; UIImage *artworkImage = nil; // 获取音乐文件路径 NSURL *musicUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"蓝莲花" ofType:@"mp3"]]; // 加载音乐文件 AVURLAsset *URLAsset = [AVURLAsset URLAssetWithURL:musicUrl options:nil]; // 解析音乐文件 /* 获取音乐文件中的信息,固定格式 org.id3 */ NSArray *musicInfoArray = [URLAsset metadataForFormat:@"org.id3"]; for (AVMetadataItem *item in musicInfoArray) { // 解析歌曲名称 if ([item.commonKey isEqualToString:@"title"]) { titleString = (NSString *)item.value; } // 解析歌手名称 if ([item.commonKey isEqualToString:@"artist"]) { artistString = (NSString *)item.value; } // 解析专辑名称 if ([item.commonKey isEqualToString:@"albumName"]) { albumNameString = (NSString *)item.value; } // 解析专辑图片 if ([item.commonKey isEqualToString:@"artwork"]) { // value 值为 NSData 时,直接取值 NSData *data = (NSData *)item.value; artworkImage = [UIImage imageWithData:data]; } } // 显示解析值 musicInfoLabel.text = [NSString stringWithFormat:@"歌曲名称: %@\n歌手名称: %@\n专辑名称: %@", titleString, artistString, albumNameString]; musicInfoImageView.image = artworkImage; Swift /* 注意观察 commonKey 和 value: commonKey = title 歌曲名称 commonKey = artist 歌手名称 commonKey = albumName 专辑名称 commonKey = artwork 专辑图片 */ var titleString:String! var artistString:String! var albumNameString:String! var artworkImage:UIImage! // 获取音乐文件路径 let musicUrl:NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("蓝莲花", ofType: "mp3")!) // 加载音乐文件 let URLAsset = AVURLAsset(URL: musicUrl, options: nil) // 解析音乐文件 /* 获取音乐文件中的信息,固定格式 org.id3 */ let musicInfoArray = URLAsset.metadataForFormat("org.id3") for item in musicInfoArray { let itemCommonKey:String? = (item as! AVMutableMetadataItem).commonKey // 解析歌曲名称 if itemCommonKey == "title" { titleString = (item as! AVMutableMetadataItem).value as! String } // 解析歌手名称 if itemCommonKey == "artist" { artistString = (item as! AVMutableMetadataItem).value as! String } // 解析专辑名称 if itemCommonKey == "albumName" { albumNameString = (item as! AVMutableMetadataItem).value as! String } // 解析专辑图片 if itemCommonKey == "artwork" { // value 值为 NSData 时,直接取值 let data = (item as! AVMutableMetadataItem).value as! NSData artworkImage = UIImage(data: data) } } // 显示解析值 musicInfoLabel.text = "歌曲名称: \(titleString)\n歌手名称: \(artistString)\n专辑名称: \(albumNameString)" musicInfoImageView.image = artworkImage 4、AVAudioPlayerDelegate 协议方法 Objective-C // 播放完成 - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { } // 播放失败 - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error { } Swift // 播放完成 func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) { } // 播放失败 func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer, error: NSError?) { }

优秀的个人博客,低调大师

图层混合

//mix.cpp:图像mix // #include"stdafx.h" #include<iostream> #include"opencv2/core/core.hpp" #include"opencv2/highgui/highgui.hpp" #include"opencv2/imgproc/imgproc.hpp" usingnamespacestd; usingnamespacecv; //Multiply正片叠底 voidMultiply(Mat&src1,Mat&src2,Mat&dst) { for(intindex_row=0;index_row<src1.rows;index_row++) { for(intindex_col=0;index_col<src1.cols;index_col++) { for(intindex_c=0;index_c<3;index_c++) dst.at<Vec3f>(index_row,index_col)[index_c]= src1.at<Vec3f>(index_row,index_col)[index_c]* src2.at<Vec3f>(index_row,index_col)[index_c]; } } } //Color_Burn颜色加深 voidColor_Burn(Mat&src1,Mat&src2,Mat&dst) { for(intindex_row=0;index_row<src1.rows;index_row++) { for(intindex_col=0;index_col<src1.cols;index_col++) { for(intindex_c=0;index_c<3;index_c++) dst.at<Vec3f>(index_row,index_col)[index_c]=1- (1-src1.at<Vec3f>(index_row,index_col)[index_c])/ src2.at<Vec3f>(index_row,index_col)[index_c]; } } } //线性增强 voidLinear_Burn(Mat&src1,Mat&src2,Mat&dst) { for(intindex_row=0;index_row<src1.rows;index_row++) { for(intindex_col=0;index_col<src1.cols;index_col++) { for(intindex_c=0;index_c<3;index_c++) dst.at<Vec3f>(index_row,index_col)[index_c]=max( src1.at<Vec3f>(index_row,index_col)[index_c]+ src2.at<Vec3f>(index_row,index_col)[index_c]-1,(float)0.0); } } } int_tmain(intargc,_TCHAR*argv[]) { //首先做灰度的mix Matsrc=imread("1.jpg"); Matmask=imread("mask2.jpg"); MatmaskF(src.size(),CV_32FC3); MatsrcF(src.size(),CV_32FC3); MatdstF(src.size(),CV_32FC3); src.convertTo(srcF,CV_32FC3); mask.convertTo(maskF,CV_32FC3); srcF=srcF/255; maskF=maskF/255; Matdst(srcF); //正片叠底 Multiply(srcF,maskF,dstF); dstF=dstF*255; dstF.convertTo(dst,CV_8UC3); imwrite("正片叠底.jpg",dst); //Color_Burn颜色加深 Color_Burn(srcF,maskF,dstF); dstF=dstF*255; dstF.convertTo(dst,CV_8UC3); imwrite("颜色加深.jpg",dst); //线性增强 Linear_Burn(srcF,maskF,dstF); dstF=dstF*255; dstF.convertTo(dst,CV_8UC3); imwrite("线性增强.jpg",dst); waitKey(); return0; } 来自为知笔记(Wiz) 目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册