小编Dfo*_*owj的帖子

AVAssetWriter如何写下采样/压缩的m4a/mp3文件

我正在尝试使用本地m4a或mp3文件并压缩/下采样此文件(用于制作较小的文件).

最初,我使用AVAssetExportSession将AVAsset导出到临时目录,但我没有对压缩/下采样的任何控制(你只能使用预设,其中只有.wav文件格式支持质量下降) .

然后,按照SO上的几个例子,我尝试使用AVAssetReader/AVAssetWriter来预先形成这个'export'.

我这样创建我的读者/作者:

NSString *exportPath = [NSHomeDirectory() stringByAppendingPathComponent:@"out.m4a"];

NSURL *exportURL = [NSURL fileURLWithPath:outPath];

// reader
NSError *readerError = nil;
AVAssetReader *reader = [[AVAssetReader alloc] initWithAsset:asset
                                                       error:&readerError];

AVAssetTrack *track = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];    
AVAssetReaderTrackOutput *readerOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:track
                                                                          outputSettings:nil];
[reader addOutput:readerOutput];

// writer
NSError *writerError = nil;
AVAssetWriter *writer = [[AVAssetWriter alloc] initWithURL:exportURL
                                                  fileType:AVFileTypeAppleM4A
                                                     error:&writerError];

AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;

// use different values to affect the downsampling/compression
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithInt: …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios avassetwriter avassetreader

9
推荐指数
1
解决办法
7000
查看次数

Dojo:页面/窗口失去焦点时会触发什么事件?

在javascript框架中,Dojo是否会在整个页面失去焦点时触发事件?

如果没有事件被触发,是否有另一种方法来跟踪失去焦点的窗口?我希望能够告诉别人何时点击页面,以便我可以记录操作(它是一个教育项目,我们正在监控学生对模式的行为等).

javascript dojo focus

4
推荐指数
1
解决办法
4827
查看次数

核心图形 - 我的三角形/弧形太尖了

我正在使用a UIBezierPath[path addArcWithCenter:radius:startAngle:endAngle:clockwise:]方法在Core Graphics的自定义饼图中绘制'切片' .我的问题是,切片的尖端实际上突然超过中心点,侵入其他切片空间.

有没有办法'围绕'这个边缘?


这是用于绘制路径的代码

[path moveToPoint:center];
[path addArcWithCenter:center radius:radius startAngle:interiorAngle endAngle:totalAngle clockwise:YES];
[path addLineToPoint:center];
[path closePath];
Run Code Online (Sandbox Code Playgroud)

这是问题的图像:

左下角的蓝色部分

左下方蓝色部分的白色尖端稍微侵入右上方的大蓝色部分.

core-graphics ios pie-chart

4
推荐指数
1
解决办法
946
查看次数

Dojo:BorderContainer和ContentPanes不在自定义小部件模板中工作

嘿伙计们,我试图用模板中的dijit.layout对象(BorderContainer,ContentPane)创建一些自定义的模板化小部件,我只是无法让它工作.也许SO可以引导我走向正确的方向......到目前为止,这是我的代码:

的test.html

<html>
<head>
<title>Test Page</title>
    <style type="text/css">
        @import "http://ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/resources/dojo.css";
        @import "http://ajax.googleapis.com/ajax/libs/dojo/1.4.1/dijit/themes/tundra/tundra.css";
        html, body, #page {
            width: 100%; height: 100%; overflow: hidden;
        }
    </style>
    <script type="text/javascript">
        var djConfig = {
            isDebug: false,
            parseOnLoad: true,
            baseUrl: './',
            modulePaths: {'test' : '.'}
        };
    </script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/dojo.xd.js"></script>
<script type="text/javascript" src="test.js"></script>
<script>
    dojo.require('dijit.layout.BorderContainer');
    dojo.require('dijit.layout.ContentPane');
    dojo.require('test.testWidget');
    dojo.ready(function() {
        var widget = new test.testWidget({}, 'widgetGoesHere');
    });
</script>
</head>
<body class="tundra">
    <div id='widgetGoesHere'></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

testWidget.js

dojo.provide('test.testWidget');
dojo.require('dijit._Widget');
dojo.require('dijit._Templated');
dojo.require('dijit.layout.BorderContainer');
dojo.require('dijit.layout.ContentPane');
dojo.declare('test.testWidget', [ dijit._Widget, dijit._Templated],  { …
Run Code Online (Sandbox Code Playgroud)

javascript dojo dijit.layout

3
推荐指数
1
解决办法
3567
查看次数

CATransaction没有观察到CALayer子类的属性

我有一个CALayer自定义属性的子类,声明如下:

@interface MyLayer : CALayer
    @property (nonatomic,retain) NSNumber *customValue;
@end
@implementation MyLayer
    @synthesize customValue = _customValue;
@end
Run Code Online (Sandbox Code Playgroud)

我想在显式内部对此属性进行动画处理CATranasction,因此我使用actionForLayer:forKey:实现的方法设置一个委托,该方法返回一个动画,但是对someMyLayerInstance.customValue内部的任何更改[CATransaction begin] ... [CATransaction end]都不会导致actionForLayer:forKey使用相应的"key"值进行调用.

然而,通过调用MyLayer来修改属性并进行更改导致调用.myLayerInstancesetValue:forKey: actionForLayer:forKey:

看起来这是因为CALayer对于未定义属性的键/值编码有一些mojo.我如何重新创建这个mojo以便我可以声明属性MyLayer,但仍然可以让动画委托观察它们?

iphone core-animation key-value-coding ios

3
推荐指数
1
解决办法
903
查看次数

我如何强制Android垃圾收集旧套接字信息?

我有一个项目,我正在使用通过JNI访问的许多现有C++代码开发Android应用程序,这些代码可以打开和关闭套接字.

即使这个C++正确地处理它打开的套接字的关闭,似乎Android操作系统或JVM仍然保留对下一次GC调用之前使用的那些套接字/端口的引用.

如果我们在下一次GC调用之前停止应用程序并再次启动它会发生什么,该应用程序无法在同一个套接字/端口上创建连接.如果我们等待操作系统调用GC 然后重新启动应用程序,它会成功创建连接.

有没有办法从Android的/ JVM的角度手动释放套接字?也许是套接字类实用程序?手动调用GC?

sockets android garbage-collection android-ndk

2
推荐指数
1
解决办法
1694
查看次数

C++将指针增加到未知内存区域

我有一个关于C/C++处理盲目递增指针的行为的查询.

所以,我有一个指向int作为函数参数的指针

func(int* thePointer) {...

我在这个函数里面有一个循环

while(*thePointer) {
    ++thePointer;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,只要存在int超出此指针的内存中,循环将继续,但如果内存属于另一种内存类型的部分怎么办?假设你增加到a的前4个字节double.在这种情况下,int仍然会有一个值/循环吗?

免责声明:我知道这很可能是不好的做法.这是一个纯粹的学术问题.

c++ memory pointers

2
推荐指数
1
解决办法
1207
查看次数