小编sbo*_*sse的帖子

如何使用FFMPEG分割视频,以便每个块以关键帧开始?

我们需要将大型实时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)

等等...

video split ffmpeg keyframe

33
推荐指数
5
解决办法
5万
查看次数

适用于.NET的最快PNG解码器

在将结果发送到Web客户端之前,我们的Web服务器需要将大量图像组合在一起.此过程对性能至关重要,因为服务器每小时可以接收数千个请求.

现在我们的解决方案从HD加载PNG文件(每个大约1MB)并将它们发送到视频卡,以便在GPU上完成合成.我们首先尝试使用XNA API公开的PNG解码器加载我们的图像.我们看到表现不太好.

要了解问题是从HD加载还是解码PNG,我们通过将文件加载到内存流中,然后将该内存流发送到.NET PNG解码器来修改它.使用XNA或使用System.Windows.Media.Imaging.PngBitmapDecoder类的性能差异并不重要.我们大致获得相同的性能水平.

我们的基准测试显示以下性能结果:

  • 从磁盘加载图像:37.76ms 1%
  • 解码PNG:2816.97ms 77%
  • 在视频硬件上加载图像:196.67ms 5%
  • 成分:87.80ms 2%
  • 从视频硬件获取作品结果:166.21ms 5%
  • 编码为PNG:318.13ms 9%
  • 存储到磁盘:3.96ms 0%
  • 清理:53.00ms 1%

总计:3680.50ms 100%

从这些结果中我们看到最慢的部分是在解码PNG时.

所以我们想知道是否会有我们可以使用的PNG解码器,这将允许我们减少PNG解码时间.我们还考虑将图像保持在硬盘上不压缩,但是每个图像的大小为10MB而不是1MB,并且由于硬盘上存储了数万个这样的图像,因此无法存储它们.压缩.

编辑:更有用的信息:

  • 基准测试模拟加载20个PNG图像并将它们合成在一起.这大致对应于我们将在生产环境中获得的请求类型.
  • 组合物中使用的每个图像的尺寸为1600×1600.
  • 该解决方案将涉及多达10个负载平衡服务器,就像我们在这里讨论的那样.因此额外的软件开发工作可能值得节省硬件成本.
  • 我们正在考虑缓存解码的源图像,但每种组合很可能使用完全不同的源图像完成,因此缓存未命中率高,性能提升低.
  • 基准测试是用一个糟糕的视频卡完成的,所以我们可以期待使用体面的视频卡将PNG解码更加成为性能瓶颈.

c# performance png decode decoding

27
推荐指数
2
解决办法
5584
查看次数

初始ng模型值未在select中设置

我有一个枚举(我使用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会正确更新,因此绑定对该部分的工作正常.基本上我的问题只是最初应该选择的选项未按预期选择.

我在这里错过了什么导致了这个问题?

selection option angularjs

21
推荐指数
2
解决办法
3万
查看次数

使用AngularJs中的ng-model获得getter和setter支持

我试图通过实现一个指令来获取和设置视图/模型的值,从而获得对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)

getter setter directive angularjs

11
推荐指数
1
解决办法
1万
查看次数

如果未在file_dialog_complete_handler中调用,SWFUpload startUpload()将失败

我正在尝试让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)

javascript swfupload

6
推荐指数
1
解决办法
4168
查看次数

使用Webpack捆绑Sqlite3会导致编译错误

我刚刚将 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)

sqlite node.js typescript webpack

5
推荐指数
1
解决办法
1659
查看次数

如何在javascript中正确初始化ErrorEvent?

我需要以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正确设置属性.

这甚至可行吗?

javascript javascript-events dispatchevent

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