问题标签 [avassetreader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 用 AVAssetReader 擦洗
我已经实现了此处讨论的搜索(AVAssetReader Seeking),但是当 AVAssetReader 被拆除并构建一个新的时,当然会有明显的延迟(因为一旦开始读取数据就无法更改 timeRange 属性)。
我可以想象,只需读取数据并跳过它,就可以相当干净地完成时间向前搜索,但是及时向后搜索总是会受到这个问题的限制......
有什么想法可以优化它,以便用户喜欢浏览音轨吗?
objective-c - AVAssetReader 到 AudioQueueBuffer
目前,我正在做一个小测试项目,看看是否可以从 AVAssetReader 获取样本以在 iOS 上使用 AudioQueue 进行播放。
我读过这个:(使用 AudioQueue 播放未压缩的原始声音,没有声音)和这个:(如何使用 AVAssetReader 在 iOS 上正确读取解码的 PCM 样本——目前解码不正确),
这两者实际上确实有帮助。在阅读之前,我完全没有声音。现在,我得到了声音,但音频播放速度非常快。这是我第一次涉足音频编程,因此非常感谢任何帮助。
我因此初始化读者:
我就这样抓取了数据:
最终将我们带到音频队列,以这种方式设置:
我们就这样排队
我试图尽可能地包含代码,以便让每个人都能轻松指出我在哪里是个白痴。话虽如此,我感觉我的问题出现在轨道阅读器的输出设置声明中或 AudioQueue 的实际声明中(我向队列描述我将要发送什么样的音频)。事实是,我真的不知道如何在数学上实际生成这些数字(每个数据包的字节数,每个数据包的帧数,你有什么)。对此的解释将不胜感激,并提前感谢您的帮助。
ios - AVAssetWriter 如何写下采样/压缩的 m4a/mp3 文件
我正在尝试获取本地 m4a 或 mp3 文件并压缩/向下采样该文件(为了制作更小的文件)。
最初,我使用 AVAssetExportSession 将 AVAsset 导出到临时目录,但我无法控制压缩/下采样(您只能使用预设,其中只有 .wav 文件格式支持质量下降) .
然后,按照 SO 上的几个示例,我尝试使用 AVAssetReader/AVAssetWriter 来执行此“导出”。
我这样创建我的读者/作者:
然后我开始写...
当我写完后,我应该写入 exportURL 的数据为空,并且作者报告成功完成。有什么想法可能会出错吗?
更新调用后的写入器状态appendSampleBuffer:
为 AVAssetWriterStatusFailed,虽然读取器状态是成功的,并且似乎读取了整个文件。
objective-c - CIImage:imageWithCVPixelBuffer: 不适用于 copyNextSampleBuffer 中的缓冲区?
长期潜伏者,第一次海报。
我正在尝试解码视频并将每一帧保存为图像。(该视频是我之前录制的,可以在 iPhone 上正常播放。)我的第一步是确保我得到正确的图像数据,所以这个小片段只是为了在 UIImageView 中显示它:
前两个步骤工作正常(我得到一个有效的缓冲区和像素缓冲区),但由于cIImage:imageWithCVPixelBuffer:
某种原因不能工作(get(null))。这是我的输出:
有人知道我做错了什么吗?我搜索了 Stack Overflow,发现了很多可以使用的示例(来自实时提要),但没有使用 AVAssetReader 然后将缓冲区从 copyNextSampleBuffer 转换为 CIImage。
ios - 如何选择用于 AVAssetReader 的像素格式类型 (kCVPixelBufferPixelFormatTypeKey)?
我们正在使用AVAssetReader
并AVAssetWriter
在某种程度上采用视频编码中所述的风格,使用 AVAssetWriter - CRASHES基本上是为了读取我们从照片库/资产库中获得的视频,然后以不同的比特率写入以减小其大小(用于最终的网络上传) .
让它为我们工作的诀窍是在on中指定一个kCVPixelBufferPixelFormatTypeKey
键和值,如下所示:outputSettings
AVAssetReaderTrackOutput
所以基本上我们使用kCVPixelFormatType_32BGRA
了键的值kCVPixelBufferPixelFormatTypeKey
。
但显然我们可以选择许多可能的像素格式类型。运行技术问答 QA1501:核心视频 - iOS 6.0.1 iPhone 设备上可用的像素格式中记录的代码,下面是它显示的支持像素格式类型的列表:
尽管kCVPixelFormatType_32BGRA
对我们有用(至少表面上),但我们很好奇是否有比上述列表更好的选择。我们应该如何选择适合我们的像素格式类型?
ios - 如何将 AVAsset 音频从一台 iOS 设备无线传输到另一台设备?
我正在做一些事情,比如从 iPod 库中流式传输音频,通过网络或蓝牙发送数据,以及使用音频队列播放。
感谢这个问题和代码。帮我很多。
我有两个问题。
我应该从一台设备发送什么到另一台设备?CMSampleBufferRef?音频缓冲区?数据?音频队列缓冲区?包?我不知道。
当应用程序完成播放时,它崩溃了,我得到了错误(-12733)。我只想知道如何处理错误而不是让它崩溃。(检查OSState?当错误发生时,停止它?)
错误:无法读取样本数据 (-12733)
ios - AVAssetReader Crash:轨道必须都具有媒体类型 AVMediaTypeAudio'
我正在阅读 AVURLAsset 并通过以下调用初始化阅读器
songAsset (AVURLAsset) 使用 MPMediaItems URLAsset 属性进行初始化。
我在某些资产上因此而崩溃。
如果 MPMediaItem 是音频资产并在 iTunes 中播放,为什么会这样?
objective-c - AVFoundation 重现视频循环
我需要在我的 OpenGL 应用程序中无限期地再现视频(在视频结束时重新启动视频)。为此,我正在尝试利用 AV 基础。我创建了一个 AVAssetReader 和一个 AVAssetReaderTrackOutput,并利用 copyNextSampleBuffer 方法获取 CMSampleBufferRef 并为每个帧创建一个 OpenGL 纹理。
在我的 GLKViewController 的 -update 方法中,我调用以下内容:
在 AVAssetReader 处于读取状态之前一切正常,但是当它完成读取并且我尝试使用新调用 [_assetReader startReading] 重新启动 AVAssetReading 时,应用程序崩溃而没有输出。我做错了什么?完成阅读后重新启动 AVAssetReading 是否正确?
ios - 转到后台并返回前台后无法继续从 AVAssetReaderOutput 读取
我正在使用 anAVAssetReaderOutput
从 中读取样本AVAsset
,对它们进行一些处理,然后使用 RemoteIO AU 播放结果。
问题是在调用AudioOutputUnitStop
暂停播放后,然后在进入后台并返回前台后,调用后音频不会再次开始AudioOutputUnitStart
。copyNextSampleBuffer
这是由于 的方法返回的错误,该方法AVAssetReaderOutput
被称为渲染管道的一部分。
调用后的status
属性为,其属性为Error Domain=AVFoundationErrorDomain Code=-11847 "Operation Interrupted" UserInfo=0x1d8b6100 {NSLocalizedRecoverySuggestion=停止其他操作并重试,NSLocalizedDescription=Operation Interrupted}AVAssetReader
copyNextSampleBuffer
AVAssetReaderStatusFailed
error
我正在寻找一种解决方案,它不会迫使我在回到前台后重新初始化整个管道 - 希望有这样一个解决方案,它AVAssetReader
可以在应用程序进入后台和返回后继续存在......
笔记
- 该应用程序有权在后台播放音频。
- 我正在处理音频中断 -
AVAudioSession
在AVAudioSessionDelegate
sendInterruptionWithFlags:
事件和应用程序激活时都将 my 设置为活动的。无论我是否这样做都没有区别,得到同样的错误。
一些代码:
音频播放器
音频阅读器设置
AudioReader 渲染方法,最终由 RenderCallback 函数调用