我已经在网上搜索了一段时间,为C#/ .NET提供了一个可靠的 FFmpeg包装器.但我还没有想出一些有用的东西.我发现了以下三个项目,但是所有这些项目都在早期的alpha阶段就已经死了.
FFmpeg.NET
ffmpeg-sharp
FFLIB.NET
所以我的问题是,是否有人知道更成熟的包装项目?
我不是在寻找带有工作队列等的完整转码引擎.只是一个简单的包装器,所以我不必进行命令行调用,然后解析控制台输出,但可以进行方法调用并使用eventlisteners进行操作.
请随意提及任何活跃的项目,即使它们在早期阶段仍然存在.
如何从字符串创建动态对象?
这是我当前的代码,结果不正确:
var s1:String = '{x:200, y:400}';
var o1:Object = Object(s1);
trace(o1); // result = {x:200, y:400}
trace(o1.x) // result = ReferenceError: Error #1069: Property x not found on String and there is no default value.
trace(o1.y) // result = ReferenceError: Error #1069: Property x not found on String and there is no default value.
Run Code Online (Sandbox Code Playgroud)
我想以前的代码输出以下内容:
trace(o1); // result = [object Object]
trace(o1.x); // result = 200
trace(o1.y); // result = 400
Run Code Online (Sandbox Code Playgroud)
提前致谢!
基本上我需要使用变量定义节点名称及其CDATA内容.
var nodeName:String = "tag";
var nodeValue:String = "<non-escaped-content>";
Run Code Online (Sandbox Code Playgroud)
天真我以为这会起作用:
var xml:XML = <doc><{nodeName}><![CDATA[{nodeValue}]]></{nodeName}>
Run Code Online (Sandbox Code Playgroud)
产出:
<doc><tag><![CDATA[{nodeValue}]]></tag></doc>
Run Code Online (Sandbox Code Playgroud)
在为FP9设计的以前版本的脚本中,我使用以下方法绕过了问题:
new XMLNode( XMLNodeType.XMLNodeType.CDATA_NODE, nodeValue ); // ...
Run Code Online (Sandbox Code Playgroud)
但这似乎在FP10中不起作用,我觉得这种方法无论如何都会以某种方式折旧.
谁有优雅的解决方案呢?
我目前正在制作一个非常大的Flash平台游戏(数百个课程),并处理一个问题,如果你让它停留足够长的话,游戏会慢慢停止.我没有写游戏,所以我只是模糊地熟悉它的内部.一些神秘的症状包括,
查看源代码并使用Flex Profiler,我的主要嫌疑人是,
WeakMethodClosure占用大量的记忆.我知道在没有看到源的情况下几乎无法告诉我这个问题,所以我只是在寻找可以帮助我缩小范围的花絮.有没有人在他们自己的项目中经历过这种规避性能下降?你的案子是什么原因?
我在flash AS3中循环声音时遇到了一些问题,因为当我告诉声音循环时,我会在音频结束/开始时稍微延迟.
音频被正确剪辑,并且将在车库乐队中无间隙地播放.
我知道闪存中存在声音问题,编码错误以及SOUND_COMPLETE事件的不准确性(Adobe应该对这些问题的处理感到尴尬)
我试图在Sound类的play方法中使用内置循环参数,并对SOUND_COMPLETE事件做出反应,但两者都会导致延迟.
但有没有人想出一种技术来循环声音而没有任何明显的差距?
我必须在我的闪光灯中检测用户是否关闭了浏览器或转到另一页并且闪存不再可访问.我如何实现这一目标?
我有一个AS3对象:{p1:"..",p2:".."}我想创建另一个对象,该对象包含一个属性的第一个对象,该属性的名称由变量定义:
var propertyName:String = "myName";
var myObj = new Object();
myObj.something_that_creates_a_property_named_as_propertyName({p1:"..", p2:".."})
Run Code Online (Sandbox Code Playgroud)
它有意义吗?
如果类型为object的传递参数为空,我想检查我的函数.有时它是空的但仍然不是null因此我不能依赖于null条件.是否有一些属性,如'长度'/'大小'的flex对象,我可以在这里使用.请帮忙.提前致谢.
注意:我编辑了这个问题,以便其他有相同问题的人更容易在这里获得帮助.要查看更符合某些答案的原始问题,请查看编辑历史记录.
在一个项目中,我有一个ExecutionManager类,可以包含多个ExecutionSlot的实例.ExecutionSlot类有几个公共事件字段,如下所示:
public event EventHandlers.ObjectEventHandler<IPlugin> ExecuteCompleted;
Run Code Online (Sandbox Code Playgroud)
对于每个事件,ExecutionManager上都有一个匹配事件.期望的行为是每次执行时都会引发一个事件,匹配事件也会在包含的ExecutionManager上引发.
实施的解决方案是每当ExecutionSlot被添加到ExecutionManager时,ExectionManager会将自己的事件添加到ExecutionSlot中,如下所示:
executionSlot.ExecuteCompleted += ExecuteCompleted;
Run Code Online (Sandbox Code Playgroud)
不需要删除ExecutionSlot,因此也不会删除事件.
问题是ExecutionManager上的事件没有被引发.确认ExecutionSlot确认事件后,我发现将上述行更改为以下内容修复了问题:
executionSlot.ExecuteCompleted += (sender, eventArgs) => ExecuteCompleted(sender, eventArgs);
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么,所以我的问题是,差异是什么.
造成这种差异的原因是,第一个将ExecutionManager事件的当前侦听器添加到ExecutionSlot的事件中.因此,在引发事件时不会调用稍后添加的任何侦听器.相比之下,后一种解决方案使用lambda来提升ExecutionManager的事件,这意味着将调用事件发生时的侦听器.
第一个解决方案失败的根本原因是委托是不可变的.因此,当您向事件添加新委托时,实际上是在创建一个包含现有委托和添加的新委托.因此,之前对代理人的任何引用都不包含新添加的委托.
是否可以将图像存储在Flash中的SharedObject中?如果能起作用会很好.我需要在本地"存储"图像,但似乎Flash不支持...所以我想将这些图像放在可以保存的SharedObject中......但它是否适用于图像?
我尝试使用Bitmap,但如果我想阅读并将其添加到舞台上,则表示Object无法转换为Bitmap ...
var image:Bitmap = //some awesome image;
sharedObject = SharedObject.getLocal("img");
sharedObject.data.img = image;
sharedObject.flush();
Run Code Online (Sandbox Code Playgroud)
错误在这里 - >
sharedObject = SharedObject.getLocal("img");
addChild(Bitmap(sharedObject.data.img));
Run Code Online (Sandbox Code Playgroud) flash ×4
.net ×2
actionscript ×2
apache-flex ×2
c# ×2
.net-3.5 ×1
audio ×1
browser ×1
cdata ×1
collections ×1
delegates ×1
e4x ×1
events ×1
ffmpeg ×1
flex3 ×1
memory-leaks ×1
performance ×1
video ×1