首页 文章 精选 留言 我的

精选列表

搜索[音频审核],共8048篇文章
优秀的个人博客,低调大师

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?) { }

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

Bytebase 2.4 发布,支持 Snowflake SQL 审核

Bytebase 是一个基于网络、零配置、无依赖的数据库 Schema 变更和版本控制管理工具,适用于开发人员和 DBA。 Bytebase 2.4.0 现已发布,更新内容如下: 新功能 支持全局控制数据查询及导出的权限,并支持自定义审批流。 支持 Redshift datashare 的查询,数据访问控制和隐私数据控制。 支持 Snowflake 的 Task 和 Stream 对象及数据访问权限控制。 支持数据导出成 INSERT 格式的 DML 脚本文件。 工单评论支持 Markdown。 改进 增加 SQL 脚本的显示大小到 1M。 SQL 编辑器管理员模式支持保持连接会话。 SQL 编辑器中的查询结果禁止复制。 归档实例和项目时增加「强制」选项。 工单下的事件活动排序更加精确。 定价 支持细粒度的实例和付费功能绑定。用户可以将所有实例导入 Bytebase 进行管理,同时可以只购买较少的实例许可证,并将其分配给需要高级功能的实例子集。 免费版用户上限调整为 20 个。 更新说明:https://github.com/bytebase/bytebase/releases/tag/2.4.0

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

IPv6设置支持IOS审核

https://www.tunnelbroker.net/ 点击创建以后出现如下界面 检查服务器是否开启IPv6(表示没有开启)http://www.jianshu.com/p/2f6620e5a4f0 vim /etc/sysctl.conf #添加如下三行 sysctl -p net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 vim /etc/modprobe.d/disable_ipv6.conf #options ipv6 disable=1改为options ipv6 disable=0 alias net-pf-10 off options ipv6 disable=0 vim /etc/sysconfig/network 添加 NETWORKING_IPV6=yes 重启网络systemctl restart network 可以看出已经支持IPv6 服务器执行如下命令上面获取的: modprobe ipv6 ip tunnel add he-ipv6 mode sit remote 216.218.221.6 local 39.107.13.70 ttl 255 ip link set he-ipv6 up ip addr add 2001:470:18:107b::2/64 dev he-ipv6 ip route add ::/0 dev he-ipv6 ip -f inet6 addr DNS控制台解析 测试可以看出已经解析 然后在这台服务器上面大家nginx支持IPv6代理即可 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$http_host" "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for ' '"$upstream_addr" "$upstream_status" "$upstream_response_time" "$request_time"'; access_log /etc/nginx/logs/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/.conf; } stream { upstream tcp_proxy { hash $remote_addr consistent; #远程地址做个hash server slbIP:80; } upstream tcp_proxy_443 { hash $remote_addr consistent; #远程地址做个hash server slbIP:443; } server { listen [::]:80; listen 80; proxy_connect_timeout 1s; proxy_timeout 10s; #后端连接超时时间 proxy_pass tcp_proxy; } server { listen [::]:443; listen 443; proxy_connect_timeout 1s; proxy_timeout 10s; #后端连接超时时间 proxy_pass tcp_proxy_443; } } 本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/2044131,如需转载请自行联系原作者

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

苹果ATS(强制HTTPS)审核新政解码

0. News [Updated in 2016.12.22],苹果ATS大限时间推迟,参照Apple News and Updates - Supporting App Transport Security,具体实行时间可继续关注News and Updates。 [Updated in 2016.12.09],苹果官网文档2016年11月14日更新,修改NSAllowsArbitraryLoadsInMedia为NSAllowsArbitraryLoadsForMedia,参考Document Revision History,下面文档已修改。 1. ATS App Transport Security(ATS) 是Apple为增强iOS App网络通信安全提出的安全功能,适用于iOS App和App Extension;在启用ATS

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册