问题标签 [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 - 使用 iPod 库中的音乐录制视频
我正在尝试使用 AVFoundation (AVCaptureOutput + AVAssetWriter) 录制视频,同时从 iPod 库而不是麦克风播放音频。我采用了 RosyWriter 示例代码并删除了 AudioInput,而是设置 AVAssetReader 以读取未压缩格式的歌曲,
然后定期轮询音频样本。但它不能正常工作。关于 VideoStar 或 Blux Movie 等应用程序如何实现它的任何建议?
ios - AVAssetWriter 可以合并两个视频文件
不要告诉我使用 AVAssetExportSession,谢谢。
我试过这个,但失败了。
macos - 为什么 CMSampleBufferGetImageBuffer 返回 NULL
我已经构建了一些代码来逐帧处理 OSX 上的视频文件。以下是代码的摘录,它构建好、打开文件、找到视频轨道(仅轨道)并开始毫无问题地读取 CMSampleBuffers。但是,当我尝试提取像素缓冲区帧时,我获得的每个 CMSampleBufferRef 都返回 NULL。iOS 文档中没有说明为什么我可以期望 NULL 返回值或我可以期望如何解决该问题。无论捕获源或编解码器如何,我测试过的所有视频都会发生这种情况。
非常感谢任何帮助。
需要明确的是,我已经删除了所有错误检查代码,但该代码中没有指出任何问题。即 AVAssetReader 正在读取,CMSampleBufferRef 看起来不错等。
ios - 如何使用 AVAssetReader 和 AVAssetWriter 控制视频帧率?
我们正在尝试了解如何控制/指定我们使用AVAssetReader
和编码的视频的帧速率AVAssetWriter
。具体来说,我们正在使用AVAssetReader
和AVAssetWriter
转码/编码/压缩我们从照片/视频库访问的视频。我们能够控制比特率、纵横比变化等,但无法弄清楚如何控制帧率。具体来说,我们希望能够将 5 分钟长的 30 FPS 视频作为输入,并以 15 FPS 的速度发出 5 分钟的视频。
我们当前处理样本缓冲区的循环是:
我们如何增加或改变这一点,以便我们可以控制所创建视频的帧速率?我们似乎无法在 SO 或其他任何地方找到明确解释如何执行此操作的示例。我认为我们应该使用CMTime
除上面代码示例中的方法之外的其他方法,但细节尚不清楚。
ios - 使用 AVAssetReader iOS 解码 h.264 帧数据
我对 AVAssetReader 有一些疑问。
目前我正在使用他们提供的 API 读取从 IP 摄像机发送的视图数据。从 API,
以下将从 API 返回的每一帧
1.Buffer包含帧原始数据
2.框架类型I或B框架
3.编解码器信息:H.264
4.来自 FrameInfo 对象的一些其他帧信息
以上信息是否足以使用 AVAssetReader 进行解码?
到目前为止,我看到的大多数示例都是从 URL 或文件中获取视频源,任何人都可以向我提供示例代码来解码帧缓冲区中的原始数据
非常感谢您的帮助
ios - 为什么我在 iOS 上使用 AVAssetReader 时每秒只接收几个音频样本?
我正在编写以下代码:
- 使用内置摄像头和麦克风(AVCaptureSession)录制视频+音频,
- 实时使用视频和音频采样缓冲区做一些事情,
- 使用 AVAssetWritter 将结果保存到本地 .mp4 文件中,
- 然后(稍后)使用 AVAssetReader 读取文件(视频+音频),
- 用 samplebuffer 做一些其他的事情(现在我什么都不做),
- 并使用 AVAssetWriter 将结果写入最终视频文件。
一切正常,但我对音频格式有疑问:
当我从捕获会话中捕获音频样本时,我可以记录大约 44 个样本/秒,这很正常。当我阅读 .mp4 文件时,我每秒只记录大约 3-5 个音频样本!但是这 2 个文件的外观和声音完全相同(在 QuickTime 中)。
- 我没有为 Capture Session 设置任何音频设置(因为 Apple 不允许这样做)。
我将 2 个音频 AVAssetWriterInput 的 outputSettings 配置如下:
/li>我将 nil 传递给音频 AVAssetReaderTrackOutput 的 outputSettings 以接收存储在轨道中的样本(根据文档)。
因此,从 CaptureSession 到最终文件的采样率应该是 44100Hz。为什么我只阅读几个音频样本?为什么它仍然有效?我有直觉,当我必须使用样本时它不会很好地工作(例如,我需要更新它们的时间戳)。
我尝试了其他几种设置(例如 kAudioFormatMPEG4AAC),但 AVAssetReader 无法读取压缩音频格式。
谢谢你的帮助 :)
ios - AVAssetReaderOutput copyNextSampleBuffer 在设备上编码带音频的视频时挂起
在这个问题中实现了对视频(带音频)进行编码的解决方案之后,Video Encoding using AVAssetWriter - CRASHES,我发现代码在 iPhone 模拟器中可以正常工作。不幸的是,某些视频在实际的 iPhone 5(和其他设备)上运行时无法对其音频进行编码。
例如,从 WWDC 2011 示例代码 RosyWriter ( https://developer.apple.com/library/IOS/samplecode/RosyWriter/Introduction/Intro.html ) 生成的视频不会完全编码,因为该函数-[AVAssetReaderOutput copyNextSampleBuffer]
永远不会返回。
视频缓冲区正确进入,但一旦它尝试复制第一个音频 CMSampleBufferRef,调用就会挂起。当我对来自其他来源的视频(例如在本机 iOS 相机应用程序中录制的视频)尝试此操作时,音频会正确导入。
该线程https://groups.google.com/forum/#!topic/coreaudio-api/F4cqCu99nUI记录了copyNextSampleBuffer
与 AudioQueues 一起使用时挂起的函数,并建议将操作保留在单个线程上。我试过把所有东西都放在一个单独的线程上,在主线程上,但没有运气。
有没有其他人遇到过这种情况并有可能的解决方案?
编辑:从 RosyWriter 生成的视频的轨道似乎与来自本机相机应用程序的视频相反,即音频流作为流 0,视频流作为流 1。
不确定这是否会对 AVAssetReader 产生影响。
ios - 使用 AVAssetReaderVideoCompositionOutput 导出中途,然后以 AVFoundationErrorDomain Code=-11800 退出
我已经从 AVAssets 构建了 AVMutableComposition 和 VideoComposition 并且能够播放它。我也可以使用 AVAssetExportSession 导出它,但是 AVAssetExportSession 不能提供太多的设置控制,所以我使用 AVAssetReader/AVAssetWriter 导出它,但不幸的是我遇到了一个我不明白的错误,并且只是部分写入输出文件。
这是我到目前为止的代码。我已经省略了作者和尽可能多的其他内容(包括一些错误检查),我认为这些内容与使代码更易于阅读无关,因为它很多。请注意,我还没有处理音轨——我正在尝试一步一步来,但这也许是我的问题?
变量asset
是 AVMutableComposition。
问题是循环在短时间内退出,我得到这个输出:
ios - 使用 AudioUnits 播放和 eq 音乐库中的歌曲
我正在构建一个应用程序,该应用程序涉及播放用户音乐库中的歌曲,同时应用均衡 (EQ) 效果。我以前只用来AudioUnits
产生声音,所以我有点麻烦。
我目前的计划是用来AVAssetReader
获取样本,虽然我对此有点模糊,但我的问题是关于AudioUnit
Apple 文档中使用的正确设计模式: https ://developer.apple.com/library /ios/documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/ConstructingAudioUnitApps/ConstructingAudioUnitApps.html#//apple_ref/doc/uid/TP40009492-CH16-SW1。
我的猜测是需要一个渲染回调来执行我的 EQ 效果(我在想kAudioUnitSubType_ParametricEQ
),所以要么留下“带有渲染回调函数的 I/O”模式,要么留下“带有渲染回调函数的仅输出”。如果我正在从音乐库中读取数据(可能通过AVAssetReader
),这两种模式中的哪一种最适合?
cocoa - AVAssetReader 音频捕获,缺少样本
我有一个奇怪的问题。我正在捕获 .mov/.wav/.aiff 文件的一些音频样本来播放它们。我正在使用以下代码捕获未更改的 PCM 样本(如果可用),否则将它们转换为 32 位浮点数。
现在奇怪的是,无论我打开什么文件,它总是会错过文件中的一些样本。以下循环http://www.vvertex.com/loop.wav的持续时间从 Audacity 和音轨持续时间 mainAudioTrack.timeRange 报告为 3.75,而我的代码转储打印样本长度和播放偏移量是:3.657120
这是转储:
2014-03-06 10:48:15.721 FrameDecoder[665:303] 收到 PCM 缓冲区 [TIMESTAMP:0.0ms] 2014-03-06 10:48:15.721 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014 -03-06 10:48:15.721 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.721 FrameDecoder[665:303] 接收到的带有 [TIMESTAMP:185.8] 的 PCM 缓冲区ms] 2014-03-06 10:48:15.721 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.721 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 值音频 2014-03-06 10:48:15.722 FrameDecoder[665:303] 接收到 PCM 缓冲区 [TIMESTAMP:371.5ms] 2014-03-06 10:48:15.722 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192 ] 2014-03-06 10:48:15.722 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.722 FrameDecoder[665:303] 接收到的 PCM 缓冲区带有 [TIMESTAMP:557.3ms] 2014-03-06 10:48:15.722 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.722 FrameDecoder[665:303 ] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.723 FrameDecoder[665:303] 接收到的 PCM 缓冲区与 [TIMESTAMP:743.0ms] 2014-03-06 10:48:15.723 FrameDecoder[ 665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.723 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.723 FrameDecoder[ 665:303] 使用 [TIMESTAMP:928.8ms] 接收 PCM 缓冲区 2014-03-06 10:48:15.726 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.726 FrameDecoder[665 :303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.727 FrameDecoder[665:303] 接收到的 PCM 缓冲区与 [TIMESTAMP:1114.6ms] 2014-03-06 10:48:15.727 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.727 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48: 15.727 FrameDecoder[665:303] 使用 [TIMESTAMP:1300.3ms] 接收 PCM 缓冲区 2014-03-06 10:48:15.727 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.727 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.727 FrameDecoder[665:303] 接收到的带有 [TIMESTAMP:1486.1ms] 的 PCM 缓冲区 2014-03-06 10: 48:15.728 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.728 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10: 48:15.728 FrameDecoder[665:303] 接收到的 PCM 缓冲区 [TIMESTAMP:1671.8ms] 2014-03-06 10:48:15.728 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.728 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.728 FrameDecoder[665:303] 接收到的带有 [ TIMESTAMP:1857.6ms] 2014-03-06 10:48:15.729 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.729 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8 ms] 价值音频 2014-03-06 10:48:15.729 FrameDecoder[665:303] 接收到的 PCM 缓冲区与 [TIMESTAMP:2043.4ms] 2014-03-06 10:48:15.729 FrameDecoder[665:303] 缓冲区包含 [ SAMPLES:8192] 2014-03-06 10:48:15.729 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.729 FrameDecoder[665:303] 接收的 PCM 缓冲区与 [TIMESTAMP:2229.1ms] 2014-03-06 10:48:15.730 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.730 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.730 FrameDecoder[665:303] 接收到的 PCM 缓冲区与 [TIMESTAMP:2414.9ms] 2014-03-06 10:48:15.730 FrameDecoder [665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.730 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.731 FrameDecoder [665:303] 使用 [TIMESTAMP:2600.6ms] 接收 PCM 缓冲区 2014-03-06 10:48:15.731 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.731 FrameDecoder[ 665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.731 FrameDecoder[665:303] 接收到的 PCM 缓冲区与 [TIMESTAMP:2786.4ms] 2014-03-06 10:48: 15.731 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.731 FrameDecoder[665:303] 缓冲区包含 [DURATION:185。8ms] 音频价值 2014-03-06 10:48:15.732 FrameDecoder[665:303] 接收到的 PCM 缓冲区 [TIMESTAMP:2972.2ms] 2014-03-06 10:48:15.732 FrameDecoder[665:303] 缓冲区包含 [ SAMPLES:8192] 2014-03-06 10:48:15.732 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.732 FrameDecoder[665:303] 接收到的 PCM 缓冲区与 [TIMESTAMP:3157.9ms] 2014-03-06 10:48:15.732 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.733 FrameDecoder[665:303] 缓冲区包含 [DURATION :185.8ms] 音频价值 2014-03-06 10:48:15.733 FrameDecoder[665:303] 接收 PCM 缓冲区 [TIMESTAMP:3343.7ms] 2014-03-06 10:48:15.733 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:8192] 2014-03-06 10:48:15.733 FrameDecoder[665:303] 缓冲区包含 [DURATION:185.8ms] 价值的音频 2014-03-06 10:48:15.733 FrameDecoder[665:303] 接收到的 PCM 缓冲区带有 [TIMESTAMP:3529.4ms] 2014-03-06 10:48:15.734 FrameDecoder[665:303] 缓冲区包含 [SAMPLES:5631] 2014-03-06 10:48:15.734 FrameDecoder[665:303 ] 缓冲区包含 [DURATION:127.7ms] 价值的音频 2014-03-06 10:48:15.734 FrameDecoder[665:303] 总样本持续时间:3.657120 2014-03-06 10:48:15.734 FrameDecoder[665:303] 总计跟踪报告持续时间:3.750000
有人遇到过这样的奇怪问题吗?我已经尝试了几个音频文件以及具有不同压缩的 .mov 文件。一样的东西!我完全坚持这一点!
此外,当我通过 AudioUnits 播放样本时,实际上缺少的是从样本开头开始的那部分......
谢谢 !