我正在通过从C#代码启动ffmpeg进程来提取单个视频帧。默认行为是将这些映像写入磁盘。但是为了加快处理速度,我想重定向ffmpeg标准输出以接收流并在程序中进一步处理它。
我正在使用与此类似的参数:
-i \"" + Filename + "\" -vf \"scale=640:-1\" -an -vframes 100 -r 1 -f image2 -
Run Code Online (Sandbox Code Playgroud)
这会将字节流重定向到标准输出,我可以使用将其重定向到程序process.StartInfo.RedirectStandardOutput = true。
对于电影流,这可能很好用,因为我只有一个单一的输出,但是上面的调用将产生10个单个图像(当写入硬盘时),我如何解析标准输出的字节流并将其拆分为单个文件?
在存储过程 (A) 中,我需要在特定数据库中调用存储过程 (X) 并捕获输出。X 返回单个值。
据我所知,我需要将 X 的数据库名称提供给 A 中的存储过程,并且我需要使用动态 SQL 来构建针对所需数据库的执行查询。
我无法弄清楚的是如何从 A 中的 X 捕获输出以处理结果。
我想创建一个IIS托管的Web服务,我将使用通用Windows存储aoo(windows phone/windows 8.1/windows RT)来使用它.
据我所知,通用应用程序不支持使用"添加服务引用"的代理类生成和SOAP调用,因此我需要创建一个RESTful Web服务并在通用应用程序中手动使用它.
我已经在整个网络中尝试过几十个教程和方法,但我从未设法将数据实际发布到网络服务.
我需要将在共享库中定义的自定义类的对象发送到Web服务.我知道我需要序列化Object并将其包含在POST请求中,但无论我尝试什么,我最终都会遇到不同的问题 - 例如HTTP 400错误请求:传入的消息具有意外的消息格式'Raw'.该操作的预期消息格式是'Xml'; 'Json的'.
我已经看到了几种手动设置内容类型标头的方法,但是我找到的方法在通用应用程序中不可用.
有人可以提供适合我的场景的信息或示例(通过通用应用程序发布)吗?
更新1:为了进一步澄清:我知道WCF是如何工作的,我已经能够完成像在描述一个基本的GET请求这个职位.但是我无法扩展它以使用POST请求.
我试过的一些代码:
public async static void SendStartup(CustomClass customObject)
{
var httpClient = new HttpClient();
var serialized = JsonConvert.SerializeObject(customObject);
var response = await httpClient.PostAsync("http://localhost:49452/Metrics.svc/LogStartup", new StringContent(serialized));
string content = await response.Content.ReadAsStringAsync();
}
Run Code Online (Sandbox Code Playgroud)
Web服务接口:
[OperationContract]
[WebInvoke(UriTemplate = "LogStartup", Method="POST", BodyStyle=WebMessageBodyStyle.Wrapped)]
string LogStartup(CustomClass obj);
Run Code Online (Sandbox Code Playgroud)
执行:
public void LogStartup(CustomClass obj)
{
// nothing
}
Run Code Online (Sandbox Code Playgroud)
例如,这会在运行时因上述错误而失效