- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要寻找音频文件并提取 block 。我正在尝试使用 AVAssetReader。我看到的错误是,如果我在一段时间内从不同的偏移量读取音频,我得到的平均值( block )是不同的。
例如,如果我从 0.1 秒到 0.5 秒读取音频,我会得到不同的结果,如果我从 0.2 秒到 0.5 秒读取音频,我收到的 block 会有所不同
以下是演示它的代码示例
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
+ (void) test
{
NSURL* path = [[NSBundle mainBundle] URLForResource:@"music" withExtension:@"mp3"];
[self test:path sample:1 showChunks:5];
[self test:path sample:2 showChunks:4];
[self test:path sample:3 showChunks:3];
}
+(void) test:(NSURL*) url sample:(NSInteger) sample showChunks:(NSInteger) chunkCount
{
#define CHUNK 800
#define SAMPLE_RATE 8000
AVURLAsset* asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSError *assetError = nil;
AVAssetReader* assetReader = [AVAssetReader assetReaderWithAsset:asset error:&assetError];
CMTime startTime = CMTimeMake(sample*CHUNK, SAMPLE_RATE);
CMTimeShow(startTime);
CMTimeRange timeRange = CMTimeRangeMake(startTime, kCMTimePositiveInfinity);
assetReader.timeRange = timeRange;
NSDictionary* dict = nil;
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:SAMPLE_RATE], AVSampleRateKey, [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey, nil];
AVAssetReaderAudioMixOutput* assetReaderOutput = [AVAssetReaderAudioMixOutput assetReaderAudioMixOutputWithAudioTracks:asset.tracks audioSettings: dict];
if (! [assetReader canAddOutput: assetReaderOutput]) {
NSLog (@"error: Cannot add output reader");
assetReader = nil;
return;
}
[assetReader addOutput: assetReaderOutput];
[assetReader startReading];
CMSampleBufferRef nextBuffer;
if (!(nextBuffer = [assetReaderOutput copyNextSampleBuffer]))
{
return;
}
CMSampleBufferGetTotalSampleSize (nextBuffer);
// Extract bytes from buffer
CMBlockBufferRef dataBuffer = CMSampleBufferGetDataBuffer(nextBuffer);
NSInteger len = CMBlockBufferGetDataLength(dataBuffer);
if (len < chunkCount*CHUNK)
{
printf("CHUNK is to big");
return;
}
UInt8* buf = malloc(len);
CMBlockBufferCopyDataBytes(dataBuffer, 0, len, buf);
for (int ii = 0; ii < chunkCount*CHUNK; ii+=CHUNK)
{
CGFloat av = 0;
for (int jj = 0; jj < CHUNK; jj++)
{
av += (CGFloat) buf[jj+ii];
}
printf("Time: %f av: %f\n", (CGFloat)(ii+CHUNK*sample)/(CGFloat)SAMPLE_RATE, av/(CGFloat)CHUNK);
}
printf("\n");
free(buf);
}
这是输出
{800/8000 = 0.100}
Time: 0.100000 av: 149.013748
Time: 0.200000 av: 100.323753
Time: 0.300000 av: 146.991257
Time: 0.400000 av: 106.763748
Time: 0.500000 av: 145.020004
{1600/8000 = 0.200}
Time: 0.200000 av: 145.011246
Time: 0.300000 av: 110.718750
Time: 0.400000 av: 154.543747
Time: 0.500000 av: 112.025002
{2400/8000 = 0.300}
Time: 0.300000 av: 149.278748
Time: 0.400000 av: 104.477501
Time: 0.500000 av: 158.162506
请帮忙
最佳答案
在我看来,您的问题在于假设以下代码准确地寻求 startTime:
CMTimeRange timeRange = CMTimeRangeMake(startTime, kCMTimePositiveInfinity);
assetReader.timeRange = timeRange;
您可以通过调用来测试这一点
CMSampleBufferGetOutputPresentationTimeStamp(nextBuffer);
从中您将能够看到缓冲区启动的确切时间(以秒为单位)。
关于iphone - AVAsset读者寻求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083162/
是否可以使用 av_seek_frame() 函数查找 I-Frame。 我面临的问题是,如果我在 AVC 文件中查找,如果我不刷新缓冲区,我会收到很多噪音。如果我刷新缓冲区,解码器不会返回一个帧,直
在我处理 SL3/SL4 应用程序并开始使用字体时,我发现缺乏有关字体策略的文档和最佳实践。例如: 是否有常见的后备字体 支持的字体集(Arial、Comic 无 MS 等)?是否有一组关于 Wind
是否有一个我可以运行而什么都不做(或很少做)而永远不会出错的命令? 我需要一些东西来测试海豚。 最佳答案 注释什么都不做(但如果根本没有命令,您的数据库驱动程序可能会提示): /* Hello, wo
我正在寻找与 Delphi (7) 一起使用的 FOSS SHA1 实现。 最好是一些小的东西,甚至可能是独立的 SHA1,而不是过去的一个巨大的库。易于安装和使用固然很好,但可靠性当然是第一位的。
团队, 我是 Azure 的初学者,对 Blob 存储日志有一些疑问 我指的是这个链接http://blogs.msdn.com/b/windowsazurestorage/archive/201
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我在周末发现了 Akavache,它看起来是一个强烈推荐的用于在 Win8 和 WP8 上缓存项目的解决方案。 但是,我找不到任何实际示例或如何使用它的文档! 有人可以分享任何示例项目或文档吗? 最佳
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
Delphi XE2 和 MySql。 我的 previous question导致建议我应该使用 MySql 的 native TIMESTAMP 数据类型来存储日期/时间。 不幸的是,我似乎找不到
DDX 技术是为将资源与类成员链接起来而创建的(例如)。在我的解决方案中,我需要在不存在于类成员 CCtreeCtrl 的资源中的 myCCtreeCtrl(CCtreeCtrl 实例)之间建立连接。
我遇到了这个问题: A shoemaker has N jobs (orders from customers) to execute. The shoemaker can work on only
typedef union { float flts[4]; struct { GLfloat r; GLfloat theta; GL
我有两个我想组合的以下形状的数组。 数组: arr1 = [["apple", "aardvark"], ["banana", "beach"]] arr2 = ['A', 'B'] 期望的结果: [
这个问题已经asked before , 但每次接受的答案只是辞职,使用 Application.MacroOptions ( VBA6 ) ( VBA7 ) 提供功能描述,但此信息实际上并未显示为工
如标题所述,-ss命令不适用于某些设备,例如华为 Mate 10。 这是我正在使用的命令以及如何获取值: Format formatter = new SimpleDateFormat("00:" +
我被指派负责修订当前的报告服务身份验证流程。目的是保持必要的安全级别,并简化授予对各个报告的访问权限的维护/配置。 我无权访问域 Controller 以修改或创建新的 AD 组。我必须与当前存在的组
我正在尝试使用 ashx 处理程序作为 HTML5 视频源。我可以做到这一点,但我无法在已经缓冲的视频上进一步前进。 我可以在使用标准 MP4 源的网络选项卡上看到向前搜索会创建另一个请求,但使用处理
#include #include class Test { char name[10]; int data; public: void getData()
您是否知道任何具有外键约束和/或提供事务支持的 SQLite 替代方案(基于可移植/平面文件/无服务器)? 最佳答案 从版本 3.6.19 开始,SQLite supports foreign key
我正在寻找一个简单的脚本,我可以在 bash 文件中使用它来检查是否有任何可用的系统更新。 我从 #!/bin/bash clear updates=$(apt list upgradeable) i
我是一名优秀的程序员,十分优秀!