我有一个关于使用AVFoundation的AVPlayer的问题(可能适用于iOS和macOS).我正在尝试播放来自标准HTTP直播流以外的频道的音频(未压缩的wav)数据.
案例:
音频数据包在通道中压缩,同时应用程序需要处理其他数据.例如,视频和音频来自同一个频道,并由标题分隔.
过滤后,我获取音频数据并将其解压缩为WAV格式(此阶段不包含标题).
一旦数据包准备就绪(24k,每个2400字节,立体声16位音频),它们将被传递到AVPlayer的实例(根据Apple的AVAudioPlayer不适合流式传输音频).
鉴于AVPlayer(项目或资产)不从内存加载(没有initWithData:(NSData))并且需要HTTP实时流URL或文件URL,我在磁盘上创建文件(macOS或iOS),添加WAV标题并在那里附加未压缩的数据.
回到AVPlayer,我创建了以下内容:
AVURLAsset *audioAsset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:tempAudioFile] options:nil];
AVPlayerItem *audioItem = [[AVPlayerItem alloc] initWithAsset:audioAsset];
AVPlayer *audioPlayer = [[AVPlayer alloc] initWithPlayerItem:audioItem];
Run Code Online (Sandbox Code Playgroud)
添加KVO然后尝试开始播放:
[audioPlayer play];
Run Code Online (Sandbox Code Playgroud)
结果是音频播放1-2秒然后停止(AVPlayerItemDidPlayToEndTimeNotification准确),同时数据继续附加到文件.由于整个事物处于循环状态,[audioPlayer play]会多次启动和暂停(rate == 0).
整个概念以简化形式:
-(void)PlayAudioWithData:(NSData *data) //data in encoded format
{
NSData *decodedSound = [AudioDecoder DecodeData:data]; //decodes the data from the compressed format (Opus) to WAV
[Player CreateTemporaryFiles]; //This creates the temporary file by appending the header and waiting for input.
[Player SendDataToPlayer:decodedSound]; //this sends …Run Code Online (Sandbox Code Playgroud) 我遇到了问题,我无法找到解决方法.
我有一个UIWebView实现和一个视图UITextField.在两者上,当我点击时,我没有显示复制/粘贴菜单.
其中UIWebView有文字(仅文字),我可以选择一个单词或一个段落,或者让放大镜出现并手动选择我想要的文字.
另一方面,UITextField除了复制/粘贴功能外,可以按输入进行输入和工作.
什么都没有分类.我只需要iOS的默认实现来复制/粘贴功能.
此问题不在单个视图中.我在其他UIWebView地方有另一个问题,所以我认为这是一个全球性的问题.
我已经完成了所有显而易见的事情(导入UIKit和Foundation框架,分配属性,释放等),但我再次坚持这一点.
什么可能会与这样一个简单的功能相互作用/干扰,禁用它?而且,总是在最简单的实现下,还需要做什么呢?(我遗失的任何框架,任何财产等).
这么简单,我坚持下去.如果有人有任何想法,它非常感激.
====编辑====
问题不是由我在任何视图或类中的代码引起的.
我添加了一个新视图(应用程序基于tabbar),只有一个UITextField和一个带有默认"Lorem Ipsum"文本的UITextView.在textView上我也可以选择文本但没有菜单来复制/粘贴/选择/选择全部.这也发生在textField(空)中,其中没有粘贴菜单出现(我从另一个应用程序复制一些文本,例如Safari或Notes).
在所有视图中,问题似乎是普遍影响应用程序的其他地方.
我删除了Frameworks引用并将它们放回去但没有任何反应.我还在试图弄清楚它的来源.