问题标签 [core-media]
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.
cocoa - 垃圾收集器打开时 Webview 崩溃
我有一个非常具体的网页,导致 webview 在 Garnage Collector ON 时崩溃(关闭时不会崩溃)。
易于复制:创建一个基于文档的应用程序,删除一个 webview,并具有以下行(也许是按钮)。
我想这种情况仅在 Apple 为他们的新 iPad 做广告时才有效。页面底部有两个视频供您观看。单击右侧的那个。播放时,单击左上角的关闭按钮(链接)-发送#SwapViewPreviousSelection-就是这样,它崩溃了。
我只是在学习垃圾收集器,但我怀疑收集了不应该收集的东西。
除了关闭垃圾收集器之外,知道什么可以防止崩溃吗?
谢谢你。
这是我得到的:
ios - 如何将 CGImage 转换为 CMSampleBufferRef?
我想使用该方法将 a 转换CGImage
为CMSampleBufferRef
并将其附加到 a 。我已经设法使用以下代码获得了,但是当我提供结果时简单地返回. 我究竟做错了什么?AVAssetWriterInput
appendSampleBuffer:
CMSampleBufferRef
appendSampleBuffer:
NO
CMSampleBufferRef
PS 我知道这段代码中存在内存泄漏,为了简单起见,我省略了一些代码。
iphone - CMTimeMake - 获得比秒更小/更多的溶解值
我正在使用以下代码成功制作CMTime :
我的 MPMoviePlayerController 中电影的当前位置(最初是一个浮点值)以秒为单位返回为 CMTime,这还不错。
但是我怎样才能在例如毫秒内获得这个位置呢?我玩了“时间刻度”并将其设置为 10 和 100,但它对结果没有影响。
先感谢您!
iphone - 使用不四舍五入的 CMTime?
我正在编写一个使用 AVFoundation 和 CMTime 的应用程序。我已经记录了CMTime
使用创建的实例的值CMTimeMake()
。这个值似乎被四舍五入到最接近的整数。我需要一个CMTime
具有精确值的实例,而不是四舍五入。
我在CMTime
参考文献中看到了舍入常量:
没有任何示例说明我如何控制将这些策略中的哪些应用于CMTime
实例?或者,如果这不是正确的方法,我如何从CMTime
实例中提取精确值?
编辑:
我已经找到并测试了CMTIME_HAS_BEEN_ROUNDED()
. 我将我的CMTime
实例传递给该函数并返回No
(表明该值尚未四舍五入)。那么为什么我会失去精度呢?
objective-c - 如何使用 AVAssetReader 添加到 AudioBufferList?
我一直在使用 AVAssetReader 读取音频资产,以便以后可以使用带有 AudioUnit 回调的 AUGraph 播放音频。我有 AUGraph 和 AudioUnit 回调工作,但它从磁盘读取文件,如果文件太大,它会占用太多内存并使应用程序崩溃。所以我转而直接阅读资产,并且只有有限的大小。然后,我会将其作为双缓冲区进行管理,并在需要时获取 AUGraph 所需的内容。
(注意:我很想知道我是否可以使用音频队列服务并且仍然使用带有 AudioUnit 回调的 AUGraph,以便 iOS 框架为我管理内存。)
我的问题是我对 C 中的数组、结构和指针没有很好的理解。我需要帮助的部分是将保存在单个 AudioBuffer 上的单个 AudioBufferList 并将该数据添加到另一个保存所有 AudioBufferList 的 AudioBufferList以后使用的数据。我相信我需要使用 memcpy,但不清楚如何使用它,甚至为我的目的初始化一个 AudioBufferList。我正在使用MixerHost作为参考,它是来自 Apple 的示例项目,它从磁盘读取文件。
如果您想在 Xcode 中加载它,我已经上传了我正在进行的工作。我已经弄清楚了完成这项工作所需的大部分内容,一旦我将数据全部收集在一个地方,我就可以开始了。
示例项目:MyAssetReader.zip
在标题中,您可以看到我将 bufferList 声明为指向结构的指针。
然后我以这种方式分配bufferList,主要是从MixerHost借来的......
最后我循环阅读。
我不确定我处理 mDataByteSize 和 mData 的内容,尤其是使用 memcpy。由于 mData 是一个空指针,这是一个额外的棘手区域。
在这一行中,我认为它应该将值从 localBufferList 中的数据复制到 bufferList 中的位置加上帧数以将指针定位在它应该写入数据的位置。我有几个想法,我需要改变什么才能让它工作。
- 由于 void 指针只是 1 而不是 AudioUnitSampleType 指针的大小,我可能还需要将它乘以 sizeof(AudioUnitSampleType) 以使 memcpy 进入正确的位置
- 我可能没有正确使用 malloc 来准备 mData 但由于我不确定会有多少帧我不知道该怎么做才能初始化它
目前,当我运行这个应用程序时,它会以一个无效的 bufferList 指针结束这个函数。
感谢您帮助我更好地了解如何管理 AudioBufferList。
iphone - 首先 memcpy 进入缓冲区比直接访问 CVPixelBufferGetBaseAddress 的像素更快
我注意到CVPixelBufferGetBaseAddress
直接访问由返回的像素(我使用两个嵌套的 for 循环)比首先使用 malloc 分配缓冲区、将像素 memcpy 到该缓冲区然后访问该缓冲区中的像素慢大约 100 倍。这是为什么?
ios - AVFoundation:从文件中读取视频——处理帧+音频并重新输出
我一直在努力解决这个问题,但无法弄清楚我做错了什么。我想读取一个视频文件——处理帧......然后重新输出它:
我面临的问题是,由于某种原因,对 [self.audioOutput copyNextSampleBuffer]; 的调用会阻塞并且永远不会完成!
cocoa - 使用 AVFoundation / CoreMedia / 其他框架来检测 Beats / Onsets
(前言:这是我在 Stack Overflow 上的第一个与音频相关的问题,所以我会尽我所能说出这个问题。欢迎编辑。)
我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型允许这些“循环标记”(实现为 UISlider)每秒捕捉,指定循环的开始和结束。显然,在循环音乐时,秒是一种非常粗略的处理方式,所以我想用节拍代替。
除了标记节拍让 UISlider 捕捉到之外,我不想做任何事情:
- 为我们的
loadMusic
方法提供一个音频文件。 - 通过库运行它以检测节拍或它们之间的间隔(也许)。
- 将该值输入到滑块的
setNumberOfTickMarks:
方法中。 - 利润!
不幸的是,我通过 Google 和 SO 遇到的大多数结果都产生了更高级的节拍检测库,例如混音器将使用的那些。就我而言,矫枉过正。
这是 CoreMedia、AVFoundation 或 AudioToolbox 可以处理的吗?如果没有,是否有其他库可以处理这个问题?我对 Apple 文档的研究只产生了相关的结果……对于 MIDI 文件。但苹果自己的软件也有类似的功能,比如iMovie 的 snap-to-beats 功能。
在这一点上,任何指导、代码或摘要都会非常有帮助。
编辑:在做了更多的挖掘之后,我正在寻找的正确术语似乎是onset detection。
objective-c - Mac OS X 上的 AVFoundation + GC
任何人在使用 GC ON 的 AVFoundation 时遇到问题???
我遇到的是,在访问资产的轨道属性时,文件由 Core Media 保持打开状态。为什么这是一个问题,因为经过很长一段时间并打开了许多其他媒体文件,最终 AVFoundation 会报告太多打开的文件。
我已经尝试了一切,使用 Instruments 进行调试,弱引用,@autoreleasepool 你命名它。最后,这是带有 GC 的 Core Media 中的一个错误。
所以我想最终的问题是:
一个开启 GC 的应用程序,有没有办法在没有 GC 的情况下异步运行某些代码段?
请有人帮忙。
ios - 在 iOS 上使用 CoreMedia.framework 解码视频
我需要解码 mp4 文件并在 ios 应用程序中使用 OpenGL 绘制它。我需要从 mp4 文件中提取和解码 h264 帧,我听说使用 CoreMedia 可以做什么。有人知道怎么做吗?CoreMedia 使用的任何示例?