WP8.1 HttpClient Stream 仅获取 65536 字节数据

2024-02-04

我正在尝试在 Windows 运行时为 win8.1 和 wp8.1 的 MediaElement 编写一个实时 flv 流解复用器。

我已经完成了解复用代码,flv 文件可以正确解复用为 h264 和 aac 标签数据。

当我尝试播放网络文件和流时,我遇到了一个非常奇怪的网络问题:

相同的代码,

  1. 在win8.1下运行,一切都很好,无论文件或网络流(证明demux代码没问题);
  2. 在wp8.1(真机或模拟器)下运行,文件很好,网络流很糟糕 - 无论我如何从HttpClient Stream读取字节,目标服务器只给我65536字节数据,然后连接被阻塞,没有任何响应和错误,甚至没有超时,它只是阻塞线程。

打开流的代码:

var uri = new Uri("http://hdl.xxx.com/live/yyyy")
//uri is dymatic
var client = new HttpClient();
var stream = await client.GetStreamAsync(uri);
openStream(stream)

读取数据的代码:

public static byte[] ReadBlocks(this Stream stream, int count)
{
    byte[] buffer = new byte[count];
    int offset = 0;
    int length;

    while (offset < count)
    {
        //a loop statement to guarantee I can get *count* bytes
        Debug.WriteLine("read " + (count - offset));
        //a debug message show how many bytes do I need
        length = stream.Read(buffer, offset, count - offset);
        if (length == 0)
        {
            throw new EndOfStreamException();
        }
        Debug.WriteLine("got " + length);
        //a debug message show how many bytes I got
        offset += length;
    }
    return buffer;
}

例如,当我需要从 flv 流中读取 1024 字节时,我在 wp8.1 下运行stream.ReadBlocks(1024),调试告诉我如下:

read 1024
got 768
read 256

然后就什么都没有发生了。我写了一个额外的计数器,计数器显示一旦服务器总共发送了65536字节,流的下一个Read方法将始终被阻塞。

我确定 uri 可用。我可以使用pc网络浏览器将一些流数据下载为flv文件,并且下载的flv文件也可以在wp8.1下播放。

貌似这个问题只出现在wp8.1下,android和ios不受影响。

那么这是我的代码问题还是实际上服务器设置不正确?

从过去三周开始,我尝试了所有可以打开流的 http 方法,但仍然被 65536 字节阻塞。

有人可以帮我吗?


我刚刚解决了同样的问题 - 不要使用 System.Net.HttpClient,而是使用 Windows.Web.Http.HttpClient

System.Net 中默认使用标头 Connection: Close,这会导致流关闭,仅读取 65 kB。它还包含一个错误,阻止您覆盖标头以保持活动状态(它会抛出一些无意义的异常)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WP8.1 HttpClient Stream 仅获取 65536 字节数据 的相关文章

  • Android Http 获取会话 Cookie

    我本来不想在这里发帖 因为网上有太多信息 但我已经深入搜寻但无法弄清楚 好吧 所以我无法让它在两种情况下工作 希望这两种情况的答案是相同的 我的问题是我设置了请求标头 但它似乎没有发送它 我有一个会话 id s e32ff223fwefd3
  • 如何去掉ListView添加item的动画?

    我有一个ListView我编辑了它ItemContainerStyle修改某些样式 但我不知道如何在添加项目时删除那个烦人的动画 With an ItemsControl 当您添加新项目时 它会立即出现 没有任何动画 With ListVi
  • 将 InputStream 转换为固定长度字符串的 Stream

    Like in 将 InputStream 转换为给定字符集的 Stream https stackoverflow com questions 30336257 convert inputstream into streamstring
  • 如何在webRTC android中将视频流数据录制为mp4?

    请帮我 我在中使用了这个例子https github com pcab AndroidRTC https github com pchab AndroidRTC将视频和音频从 Android 设备流式传输到其他 Android 设备 在这个
  • 如何在执行 apache HttpPost 时将 UrlEncodedFormEntity 中的空格编码为 %20?

    我正在访问的网络服务需要 URLEncodedFormEntity 形式的参数 我无法根据 Web 服务的要求将空间更改为 20 而是将空间转换为 我的代码是 HttpClient client new DefaultHttpClient
  • 如何显示图片目录中的图像?

    我想显示图片库中的图片 我获取图片并绑定数据 StorageFolder picturesFolder KnownFolders PicturesLibrary IReadOnlyList
  • 绑定到父 ListViewItem 的 IsSelected 属性

    我正在尝试绑定一个的 Visibility 属性TextBlockListView 的 ItemTemplate 中保存的 TextBlock 父 ListViewItem 的 IsSelected 属性 使用此标记 TextBlock 始
  • WinRT 中是否有 String.Normalize() 替代方案?

    WinRT 中是否有 string Normalize 的替代方案 我想简单地使用从输入字符串中删除重音符号这种方法 https stackoverflow com questions 4046937 removing diacritics
  • Node.js 流“结束”事件未触发

    以下数据流不会触发 结束 事件 数据 事件被触发 我可以看到记录到控制台的每个数据行 var AWS require aws sdk var ogr2ogr require ogr2ogr var JSONStream require JS
  • 无法从 Windows Phone 8.1 访问 .NET 4.5 PCL 中的本地化资源

    我在访问针对 NET 4 5 的可移植类库中的本地化字符串资源时遇到问题 我允许用户在第一页上选择语言 并在其他页面上获得本地化体验 我试图通过代码获取资源来实现这一点 MyTextBloxk Text PasswordResetMetho
  • Windows Phone 8.1 中的 RadialGradientBrush?

    请告诉我如何在 Windows Phone 8 1 应用程序中创建 RadialGradientBrush 我试图在这里找到它 但没有这样的刷子 Windows UI Xaml Media 有任何想法吗 谢谢你 如果您不介意从 NuGet
  • 通过覆盖或样式设置使 ScrollViewer 的 ScrollBar 始终可见

    我试图使 ScrollViewer 的 ScrollBar 始终可见 这样它不仅在我尝试滚动文本视图时才出现 这样用户就知道还有更多内容可以查看 起初 出于某种原因 我认为我只需要更改需要画笔覆盖的颜色 但实际上 ScrollBar 正在淡
  • 如何在 iOS 中使用 AVPlayer 缓冲音频?

    我想播放来自互联网的流音频 我编写了播放流的代码 但它没有任何缓冲区 因此如果信号较弱 应用程序将停止播放音频 这是我的代码 import UIKit import AVFoundation import MediaPlayer impor
  • 如何从框架的历史记录中删除页面?

    如何在 WinRT XAML 应用程序中操作框架的历史记录 用户将从我的中心页面开始 他们可以在其中选择现有项目以转到其编辑屏幕 也可以选择 新项目 新建项目 将引导他们通过一个简短的向导 然后将他们带到 编辑项目 屏幕 向导页面只是我在框
  • 在 UWP(W10) 中使用 HttpClient 发出 POST 请求

    我正在使用通用 Windows 平台制作应用程序 我想问如何使用 httpclient 将 id 1 这样的数据发布到服务器 我知道网上有一些教程 但其中很多都是针对 Windows 8 1 的 在 10 中不起作用 如果你想在UWP中处理
  • 如何将整个流读入 std::string ?

    我正在尝试将整个流 多行 读入字符串中 我正在使用这段代码 它有效 但它冒犯了我的风格感 当然有更简单的方法吗 也许使用字符串流 void Obj loadFromStream std istream stream std string s
  • 弹出窗口或弹出窗口显示附加信息

    我想在我的应用程序顶部显示带有附加信息的弹出窗口 我的信息是Listview大约 500 个项目我都尝试过 有问题flyout gt 它里面可能有scrollViewer 所以我的列表视图不能正确虚拟化 其他一切都可以 有我的代码 Flyo
  • nginx server_name 在流块内可能吗?

    目前设置如下 stream server listen 9987 udp server name subdomain EXAMPLE com this line is resulting in an error proxy pass loc
  • 如何从 JW Player 5.1 中提取 .flv 流?

    问题是我的互联网连接速度很慢 并且视频不像 YouTube 那样缓冲 因此我想知道是否可以提取 JW Player 中正在流式传输的 flv 文件的 url 并直接下载它 做了一些初步研究 我发现了以下信息 主要视频网址 http ijf1
  • Dart 流 .asBroadcastStream 内存泄漏

    在我们的 Flutter 应用程序中 我们存在内存泄漏和流未关闭的情况 我们追踪源代码如下 Rx combineLatest asBroadcastStream RxDart的结果 combineLatest 是单订阅流 添加 asBroa

随机推荐

  • Visual Studio Code-无法打开源文件“iostream”

    我只想尝试使用 Visual Studio 代码进行 C 编码 我已经在我的笔记本电脑 Win10 64 上安装了 vscode 1 18 1 我通过输入以下代码出现错误 include
  • 从相机拍摄照片后如何跳过“重拍并使用”选项

    从相机捕获照片后如何跳过 重拍和使用 选项 或者如何更改这些按钮的字体和颜色 我们使用了以下代码 self gimgPicker GKImagePicker alloc init self gimgPicker cropSize CGSiz
  • 在 AWS Elastic Beanstalk 上部署 Tornado 应用程序

    我有一个服务器写在Python 2 7 龙卷风我正在尝试将其部署在 AWS 上 我碰到AWS 弹性豆茎这看起来是部署代码的一种非常方便的方法 我经历过这个tutorial http docs aws amazon com elasticbe
  • 让 Visual Studio 在每次构建时运行 T4 模板

    如何让 T4 模板在每次构建时生成输出 就像现在一样 只有当我对模板进行更改时 它才会重新生成它 我还发现了其他类似的问题 Visual Studio 中的 T4 转换和构建顺序 https stackoverflow com questi
  • Outlook 中的网址中的双斜杠

    您的搜索页面的 URL 是这样构建的 http www example com results name John city Miami gender Male这将显示迈阿密所有名为约翰的男性 当其中一个过滤器留空时 网址将如下所示 htt
  • 获取视频文件的尺寸

    python 有没有办法获取视频文件或其他库的尺寸来实现这一点 相当于一个Media Info或者其他的东西 如果我理解正确的话 你指的是视频的分辨率 例如 768x432 这可以简单地使用 python 中的 opencv 来完成 imp
  • 在 XmlDocument 中加载 xml 文件时出错

    您好 我有下面的 xml 文件 我正在尝试使用下面的代码将其加载到 xml 文档中 XmlDocument Doc new XmlDocument Doc LoadXml C MappingFiles InputFile xml 但它抛出错
  • 如何从我的应用程序打开网页?

    我想让我的 WPF 应用程序打开默认浏览器并转到某个网页 我怎么做 对于 NET 桌面版本 System Diagnostics Process Start http www webpage com 对于 NET Core 默认为Proce
  • C++ 中的自定义事件?

    是否可以在 C 中创建自定义事件 例如 假设我有变量 X 和变量 Y 每当 X 发生变化时 我想执行一个将 Y 设置为 3X 的函数 有没有办法创建这样的触发器 事件 触发器在某些数据库中很常见 这基本上是观察者模式的一个实例 正如其他人提
  • Pandas groupby 和多索引

    pandas 是否有机会通过 MultiIndex 对数据进行分组 我的意思是不仅传递给 groupby 函数键 还传递键和值来预定义数据帧列 a np array foo foo foo bar bar foo foo dtype obj
  • 未找到数据源名称且未指定默认驱动程序

    我被要求将使用 MVP 模式的 WinForms 应用程序移植到网页上 除其他外 该应用程序将 CSV 文件上传到数据表 然后执行一些工作 CSV文件上传到服务器OK然后用下面的代码读取 string connectionString Dr
  • 在函数作用域末尾执行代码的简单方法[重复]

    这个问题在这里已经有答案了 在测试代 码中 我偶尔想设置 模拟一些全局变量 在测试 范围结束时我想恢复这些变量 例如 BOOST AUTO TEST CASE HttpClientCsrf std string csrfSave Http
  • 反序列化 PHP 会话数据

    我正在使用 CodeIgniter 3 x 和数据库会话驱动程序 我想访问data列那BLOB类型 这是我的 blob 数据 ci last regenerate i 1435420891 identity s 13 email prote
  • 匿名共享内存?

    是否有一种 POSIX y 方法来分配不与特定文件名绑定的共享内存 IE 仅通过 UNIX 域套接字传递 SCM RIGHTS 消息才能在进程之间共享内存 None
  • Asp.net 单元测试中缺少对 System.Web.Mvc 的引用?

    我最近为我的 Asp NET MVC 应用程序做了一些单元测试 或者我尝试这样做 它一直告诉我 类型 System Web Mvc Controller 是在未引用的程序集中定义的 您必须添加引用程序集 System Web Mvc 版本
  • 在 AJAX 请求期间显示微调框?

    展示旋转器的最佳方式是什么 我准备了一个 div id spinner 它在加载过程中应该是可见的 你使用 jQuery 吗 如果是这样你可以使用 ajaxStart 和 ajaxStop http docs jquery com Ajax
  • 迭代 String.prototype

    我知道for in循环可以帮助迭代对象 原型和集合的属性 事实是 我需要迭代String prototype 虽然console log String prototype 当我这样做时显示完整的原型 for var prop in Stri
  • 如何在 ASP.Net 应用程序中使用 HTTPS

    我想在 ASP NET Web 应用程序中使用 HTTPS 但仅限于 Login aspx 页面 如何才能做到这一点 首先获取或创建证书 获取 SecureWebPageModule 模块http www codeproject com A
  • Fluent nhibernate:如何映射具有类型为接口的属性的实体?

    我有一个像这样的实体 public class Employee public int ID get set public IAccountManager AccountManager get set 我还为 DefaultAccountM
  • WP8.1 HttpClient Stream 仅获取 65536 字节数据

    我正在尝试在 Windows 运行时为 win8 1 和 wp8 1 的 MediaElement 编写一个实时 flv 流解复用器 我已经完成了解复用代码 flv 文件可以正确解复用为 h264 和 aac 标签数据 当我尝试播放网络文件