我们需要将大型实时WMV视频源分成大小相同的小块.我们创建了一个可以正常工作的脚本,除了一件事:视频块不是以关键帧开始的,所以当播放大多数视频块时,它们不显示任何图像,直到原始视频的关键帧最终到达.
有没有办法让ffmpeg让输出视频以关键帧开始?
以下是我们的命令行现在的样子:
ffmpeg.exe -i "C:\test.wmv" -ss 00:00:00 -t 00:00:05 -acodec copy -vcodec copy -async 1 -y "0000.wmv"
ffmpeg.exe -i "C:\test.wmv" -ss 00:00:05 -t 00:00:05 -acodec copy -vcodec copy -async 1 -y "0001.wmv"
Run Code Online (Sandbox Code Playgroud)
等等...
在将结果发送到Web客户端之前,我们的Web服务器需要将大量图像组合在一起.此过程对性能至关重要,因为服务器每小时可以接收数千个请求.
现在我们的解决方案从HD加载PNG文件(每个大约1MB)并将它们发送到视频卡,以便在GPU上完成合成.我们首先尝试使用XNA API公开的PNG解码器加载我们的图像.我们看到表现不太好.
要了解问题是从HD加载还是解码PNG,我们通过将文件加载到内存流中,然后将该内存流发送到.NET PNG解码器来修改它.使用XNA或使用System.Windows.Media.Imaging.PngBitmapDecoder类的性能差异并不重要.我们大致获得相同的性能水平.
我们的基准测试显示以下性能结果:
总计:3680.50ms 100%
从这些结果中我们看到最慢的部分是在解码PNG时.
所以我们想知道是否会有我们可以使用的PNG解码器,这将允许我们减少PNG解码时间.我们还考虑将图像保持在硬盘上不压缩,但是每个图像的大小为10MB而不是1MB,并且由于硬盘上存储了数万个这样的图像,因此无法存储它们.压缩.
编辑:更有用的信息:
我有一个枚举(我使用TypeScript编写代码):
export enum AddressType
{
NotSet = 0,
Home = 1,
Work = 2,
Headquarters = 3,
Custom = -1,
}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中有一个名为type的字段,我在其中设置了应该在select输入中选择的初始值(我将其设置为AddressType.Headquarters).
最后,在我的HTML中我提出以下内容:
<select ng-model="Ctrl.type" ng-options="addressType for addressType in Ctrl.getAddressTypes()"></select>
Run Code Online (Sandbox Code Playgroud)
除了一件事之外,一切似乎都运行正常:由于某种原因,Angular在所有绑定更新后最初都没有在选择中选择"3"(总部).Angular会创建一个额外的选项,而不是:
<option value="?" selected="selected"></option>
Run Code Online (Sandbox Code Playgroud)
因此,由于某种原因,Angular无法确定在组合中选择的初始选项.
如果用户选择组合框的另一个选项,则Ctrl.type会正确更新,因此绑定对该部分的工作正常.基本上我的问题只是最初应该选择的选项未按预期选择.
我在这里错过了什么导致了这个问题?
我试图通过实现一个指令来获取和设置视图/模型的值,从而获得对ng-model的getter/setter支持.我几乎在那里,但我最终在无限的$ digest循环中.
我们的想法是设置ng-model ="$ someFieldToStoreInTheScope",然后让getter/setter指令在该字段和getter/setter函数之间进行更新.
当ngModelController更新范围中的字段时,我使用$ watch使用setter表达式更新模型,当getter表达式更改时,我使用另一个watch来更新该字段.
看看:http://jsfiddle.net/BDyAs/10/
HTML:
<div ng-app="myApp">
<body>
<form name="form">
<input type="text" ng-model="$ngModelValue" ng-model-getter-setter="get=getValue();set=setValue($value)"/> {{myDerivedValue}}
</form>
</body>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var myApp = angular.module('myApp', []);
myApp.directive(
{
'ngModelGetterSetter': function () {
return {
require: "ngModel",
controller: ctrl,
link: function(scope, element, attrs, ngModelCtrl)
{
var getterSetterExpression = attrs.ngModelGetterSetter;
var tokens = getterSetterExpression.split(";");
var getExpression = tokens[0].split("=")[1];
var setExpression = tokens[1].split("=")[1];
function updateViewValue()
{
var updateExpression = attrs.ngModel + "=" + getExpression;
scope.$eval(updateExpression);
}
function updateModelValue() …
Run Code Online (Sandbox Code Playgroud) 我正在尝试让SWFUpload正确地将图像上传到我的服务器,以及必须随图像一起提供的其他帖子数据.有一个表单用于填充数据,因此在用户单击浏览按钮并选择其图像文件后,图像不会立即上传.它保留在队列中,直到用户单击发送按钮,然后我调用mySwfUploadInstance.startUpload()以便上载开始.
但它在函数'callFlash'中的swfupload.js第452行失败了:
Uncaught Call to ReturnUploadStart failed
抛出此错误之前捕获的异常如下:
Object #<HTMLObjectElement> has no method 'CallFunction'
在以下功能中:
SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
argumentArray = argumentArray || [];
var movieElement = this.getMovieElement();
var returnValue, returnString;
// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
try {
returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
returnValue = eval(returnString);
} catch (ex) {
throw "Call to " + functionName + " failed";
}
// Unescape file …
Run Code Online (Sandbox Code Playgroud) 我刚刚将 Sqlite3 添加为我的项目(在服务器端)的依赖项,当我尝试捆绑服务器代码以在生产中部署时,webpack 现在会生成一些错误。
WARNING in ./node_modules/node-pre-gyp/lib/util/compile.js 39:27-49
Module not found: Error: Can't resolve 'npm' in 'C:\git\server\node_modules\node-pre-gyp\lib\util'
@ ./node_modules/node-pre-gyp/lib/ sync ^\.\/.*$ ./util/compile.js ./util/compile
@ ./node_modules/node-pre-gyp/lib/node-pre-gyp.js 52:13-36 184:38-55
@ ./node_modules/sqlite3/lib/sqlite3-binding.js 1:13-36
@ ./node_modules/sqlite3/lib/sqlite3.js 2:14-45
@ ./src/persistence/SqlLiteDatabase.ts 8:18-36
@ ./src/messaging/ObjectService.ts 13:26-67
@ ./src/main.ts 41:24-60
ERROR in ./node_modules/node-gyp/lib/Find-VS2017.cs 7:6
Module parse failed: Unexpected token (7:6)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
| // Usage:
| // powershell …
Run Code Online (Sandbox Code Playgroud) 我需要以ErrorEvent
编程方式触发,但无法弄清楚如何初始化事件的属性.这些属性是只读的,initEvent()
只是初始化事件类型,是否有气泡,以及是否可以取消.
我试过了
var myErrorEvent = new ErrorEvent("error", new Error("This is my error"));
Run Code Online (Sandbox Code Playgroud)
和
myErrorEvent.initEvent("error", false, true, new Error("This is my error"));
Run Code Online (Sandbox Code Playgroud)
要么
// This function would be defined in IE only. Could not find it in Chrome.
myErrorEvent.initErrorEvent("error", false, true, "This is my error", "myfile.js", 1234);
Run Code Online (Sandbox Code Playgroud)
我尝试了很多其他的东西,但无法ErrorEvent
正确设置属性.
这甚至可行吗?