假设我想使用XOM将大量搜索结果(如XML)输出到PrintWriter或OutputStream中.生成的XML看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<resultset>
<result>
[child elements and data]
</result>
...
...
[1000s of result elements more]
</resultset>
Run Code Online (Sandbox Code Playgroud)
因为生成的XML文档可能很大(可能是几百兆字节),我想以流式方式输出它(而不是在内存中创建整个Document然后编写它).
<result>一次输出一个的粒度很好,所以我想一个<result>接一个地生成,并将其写入流中.换句话说,我只想做一些像这样的伪代码(启用自动刷新,所以不用担心):
open stream/writer
write declaration
write start tag for <resultset>
while more results:
write next <result> element
write end tag for <resultset>
close stream/writer
Run Code Online (Sandbox Code Playgroud)
我一直在寻找Serializer,但必要的方法,writeStartTag(Element),writeEndTag(Element),write(DocType)受到保护,不公开!除了将Serializer子类化为能够使用这些方法,或者将开始和结束标记作为字符串直接手动写入流中,完全绕过XOM之外,没有其他方法吗?(后者在这个简单的例子中不会太糟糕,但在一般情况下会变得非常难看.)
我错过了什么或者XOM是不是为此而做的?
随着dom4j的我能做到这一点很容易使用XMLWriter-它有需要构造Writer或者OutputStream和方法writeOpen(Element),writeClose(Element),writeDocType(DocumentType)等比较,以XOM的Serializer,唯一的公共write方法是一个取整Document. …
这个,如果我第一次尝试使用流式传输WCF,我正在努力与可怕的"远程服务器返回一个意外的响应:(400)错误请求"响应.
跟踪查看器说这是一个System.ServiceModel.ProtocolException,并显示消息" 从网络收到的XML存在问题.有关更多详细信息,请参阅内部异常." 内部异常类型显示" 消息正文无法读取,因为它是空的. "
让其他一切都相等,如果我在客户端切换到缓冲模式,我可以调试到服务器代码!
出于某种原因,我必须以编程方式配置我的服务,如下所示:
public IUniverseFileService OpenProxy(string serviceUrl)
{
Debug.Assert(!string.IsNullOrEmpty(serviceUrl));
var binding = new BasicHttpBinding();
binding.Name = "basicHttpStream";
binding.MaxReceivedMessageSize = 1000000;
binding.TransferMode = TransferMode.Streamed;
var channelFactory =
new ChannelFactory<localhost.IUniverseFileService>(
binding,
new EndpointAddress(serviceUrl));
return channelFactory.CreateChannel();
}
Run Code Online (Sandbox Code Playgroud)
服务器配置如下:
<system.serviceModel>
<!-- BEHAVIORS -->
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<!-- SERVICES -->
<services>
<service behaviorConfiguration="serviceBehavior" name="Org.Acme.UniverseFileService">
<endpoint address=""
binding="basicHttpBinding"
name="basicHttpStream"
bindingConfiguration="httpLargeMessageStream"
contract="Org.Acme.RemoteCommand.Service.IUniverseFileService" />
<endpoint address="mex"
binding="mexHttpBinding"
bindingConfiguration="" name="mexStream" …Run Code Online (Sandbox Code Playgroud) 是否可以直接使用HTML5收听任何类型的网络电台?我的意思是在HTML5投诉浏览器中播放实时mp3流是否可行?
有没有一种方法可以将视频通过asp.net流式传输到普通网页和移动设备?我尝试了以下但是它在索尼爱立信K810i中无效.当我在浏览器中尝试它时,我可以看到剪辑(不知道它是否正在流式传输).
HTML:
<object type="video/3gpp"
data="handlers/FileHandler.ashx"
id="player"
width="176"
height="148"
autoplay="true"></object>
Run Code Online (Sandbox Code Playgroud)
FileHandler.ashx(在ASP.NET中流式传输文件的最佳方式):
public void ProcessRequest (HttpContext context) {
string path = "~/files/do.3gp";
string localPath = context.Server.MapPath(path);
if (!File.Exists(localPath))
{
return;
}
// get info about contenttype etc
FileInfo fileInfo = new FileInfo(localPath);
int len = (int)fileInfo.Length;
context.Response.AppendHeader("content-length", len.ToString());
context.Response.ContentType = FileHelper.GetMimeType(fileInfo.Name); // returns video/3gpp
// stream file
byte[] buffer = new byte[1 << 16]; // 64kb
int bytesRead = 0;
using(var file = File.Open(localPath, FileMode.Open))
{
while((bytesRead = file.Read(buffer, 0, …Run Code Online (Sandbox Code Playgroud) 我最近一直在学习Lisp(Scheme,Racket和Clojure到不同程度),并阅读了着名的Playstation开发者Naughty Dog的相应文献.
这篇Gamasutra文章提到他们的流媒体引擎实际上除了游戏数据之外还包含游戏代码.现在,他们有一种叫做GOAL的Lisp方言,他们广泛使用.我知道Lisp的"Code as Data",尽管我还没有完全理解这个概念.所以,我想知道流代码的能力是否是他们的代码的属性是Lisp数据或编译的机器代码,而不是可以在许多语言中使用的通用设计模式?
有人能指点我这个主题的文学作品吗?
我一直在研究这个话题一段时间,我无法弄清楚我是如何实现这一目标的.假设我们有来自HTTP Stream的视频,我希望能够在我的应用中播放该视频,同时视频也会保留在磁盘上.我知道我可以使用AVFoundation或MediaPlayer框架播放视频,我可以通过加载文件/流 NSURLRequest.
然而,这是两个不同的过程,需要加载视频两次.我无法弄清楚是否以及如何将这两者结合起来.这可能/可行吗?
有没有办法检测流媒体视频时缓冲了多少数据MPMoviePlayerController?
我已经检查了loadState但是这并没有给我足够的缓冲信息.
Youtube的应用程序正是我想要的......
VLC Media Player如何通过TCP流实现RTSP?
我知道,VLC Media Player可用作流服务器和流客户端。
我的要求是使用TCP(通过RTSP)数据从服务器流式传输到客户端,我对C / C ++代码不满意。我对C#感到满意。有人可以指出C#中TCP流的示例实现吗?
PS-是否有其他播放器支持通过TCP / UDP使用RTSP进行实时流传输?
我使用AVPlayer流跟踪.我正在尝试处理所有错误,如网络不可用或流不可用但我发现这种错误的任何处理程序.
我已经为avplayer的状态添加了一个KVO.
[self.player addObserver:self forKeyPath:@"status" options:0 context:nil];
Run Code Online (Sandbox Code Playgroud)
但即使流不存在(例如:错误的url),状态也会切换到AVPlayerStatusReadyToPlay.
编辑
解决方案是使用AVPLayerItems并使用AVQueuPlayer.另一个问题是我在每个轨道上重新分配了这个播放器.
error-handling streaming key-value-observing audio-streaming avplayer