问题标签 [buffering]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 C++ 中处理许多进程的中央数据缓冲区
我遇到了以下问题,无法决定如何进行:
我有一个类,Reader
每 1/T 秒获取一大块数据(实际上数据来自视频帧,每秒 30 帧)。这些块将被传递给几个对象,Detectors
这些对象处理这些块并输出一个决定。然而,每个检测器在做出决定之前需要读取的块的数量是不同的,例如,有些可能只需要一个块,有些可能需要 51 个。
我正在考虑有一个数据缓冲区来Reader
放置读取的数据块,实现发布/订阅者以注册每个数据块,Detector
并在数据缓冲区中有足够数量的帧供其处理时向其发送信号。这是一个好方法吗?此外,管理缓冲区并从中Detectors
读取数据而不制作自己的副本的最佳方法是什么?共享指针?
非常感谢!
C
python - 什么是适合 Python 的 struct 模块的缓冲区
在 Python 中,我通过将二进制文件读入字符串然后使用struct.unpack(...)
. 现在我想使用 写入该字符串struct.pack_into(...)
,但我收到错误"Cannot use string as modifiable buffer"。什么是适合与struct
模块一起使用的缓冲区?
winapi - 如何从流(tcp)套接字中读取确切的字节数?
在 winsock 中,只要流套接字中有可用数据,同步recv
和异步都会完成,而不管指定的大小(这只是上限)。WSARecv
这意味着为了从流中读取固定数量的字节,应该应用一些自定义缓冲。并且除非每次读取都单独缓冲,否则会导致双缓冲,即每个套接字实际上有两个缓冲区。
有没有办法让winsock代表它自己缓冲数据,并且只有在指定的字节数可用时才完成操作(除非发生错误)?
编辑:这个功能应该特别适用于异步套接字。
perl - 如何判断 Perl 中输入文件句柄的缓冲区中是否有数据?
我正在开发一个使用基于 epoll 的事件循环来处理多个同时套接字连接的程序。当应用程序检测到有数据要读取时,它会调用一个 process_request() 子程序,该子程序使用缓冲 IO。例如:
麻烦的是这里使用缓冲I/O,epoll不知道缓冲区中有未读数据在等待,所以它不会再次调用process_request()。
所以问题是,如何检测 Perl 的文件句柄中是否有未读数据,以便只要数据保留在缓冲区中,我就可以再次调用 process_request()?
flash - 如何检测视频何时缓冲?
我今天的问题涉及 Flash AS3 视频缓冲。(流式或渐进式)我希望能够检测到视频何时被缓冲,因此我可以显示某种动画让用户知道再等一会儿。
目前我的视频将启动,在第 1 帧上保持 3-4 秒然后播放。有点让人觉得视频已暂停或损坏:(
更新
感谢iandisme,我相信我现在正朝着正确的方向前进。来自 livedocs 的 NetStatusEvent。在我看来,要工作的关键状态是,"NetStream.Buffer.Empty"
所以我在其中添加了一些代码,看看这是否会触发我的动画或跟踪语句。还没有运气,但是当缓冲区已满时,它会触发我的代码:/也许我的视频总是介于两者之间Buffer.Empty
,Buffer.Full
这就是为什么当我测试用例时它不会触发任何代码Buffer.Empty
?
当前代码
c++ - 联网方式
嘿伙计们,我注意到当我发送一个完整的数据包(在缓冲区中收集数据并发送)时,它比逐字节发送数据包要慢得多。用这种方法做网游可以吗?
android - 使用 Android MediaPlayer 进行流式传输 - 捕获错误和缓冲
MediaPlayer
从 HTTP URL 流式传输时,我无法保持弹性。
如果我开始播放文件,但随后断开连接(例如飞行模式),则MediaPlayer#OnErrorListener
生成what=1, extra=-17
然后不久之后what=-38, extra=0
。
我在 API 中没有看到关于 this 表示什么的文档,除了额外的是“通常依赖于实现”。我正在使用 HTC Hero(嗯,它是 T-Mobile UK 的 G2 Touch)。
其他人是否获得相同的值,并且将这些值捕获为意味着连接消失是否安全?
当连接重新出现时,我怎样才能最好地恢复?(将当前搜索保存到首选项,并每 5 秒重试一次?)
我怎么知道设备何时决定开始播放它正在缓冲的内容 - 是否有回调(除了 polling isPlaying()
)?
此外,我不完全确定onBufferingUpdate
提供了什么。我正在使用 40 分钟的播客MP3 (64kbps bitrate)
- 缓冲 1%、2%、3%。当我寻求大约 30 分钟时,它显示 75%,然后当我回到开始时回到 5% - 除了显示大约缓存的内容之外,这个回调还有什么意义?
最后 - 有什么方法可以将流式传输到MP3
?
c - C:在 HTTP 上下文中使用 select 时解决部分标头的情况
这是参考我之前已经回答的问题:
我的协议实际上在发送任何其他数据之前发送了它最初发送的数据量。但是昨天,当我使用浏览器测试我的这段代码时,我有一个问题:
很多人建议我检查消息长度,但以浏览器为例。浏览器的 HTTP 请求在第一次发送到服务器时没有大小。现在,假设我使用了一个 256 字节的缓冲区,如果我在每个多路复用操作之间不断接收部分标头,我应该如何管理此客户端的数据结构?继续使用 realloc,因为我不断获取更多数据,然后当我遇到终止序列('\r\n')时,假设已收到所有数据?
我的意思是,有这样的东西:
然后继续对数据使用 realloc?有人告诉我分配最大协议头的缓冲区大小,但这是唯一的方法吗?
c - C:对于这个要求,有什么比 FIFO 队列实现更好的吗?
在我的一个程序中,有多个客户端,每个客户端都有自己的缓冲区。在一个无限循环中,我检查是否有任何客户端有任何数据要写入磁盘。如果是这样,那么我也这样做并继续。
现在,因为客户端写入的数据实际上不在我的控制范围内(一些计算的结果),所以我需要一个动态缓冲区。所以伪代码看起来像这样:
或者另一种方法是使用简单的消息队列。我会继续将任何消息(字符串)添加到现有队列中,然后将它们读出。还有其他更好的方法吗?
audio - gstreamer - 从网站播放音频.. 缓冲问题
我正在尝试使用以下方式播放声音文件:
gst-launch playbin uri="some URL"
其中,URL 是该文件的整个 url。
它播放此文件,但存在缓冲问题,我无法收听大部分音频。
是否有一个简单的命令行参数可以解决这个缓冲问题。
示例:使用appsrc 存储一个临时缓冲区,然后播放它......代码片段将不胜感激!
注意:我在 Windows 上,GStreamer 安装只有一些标准插件。但它确实有appsrc 和appsink 插件。
谢谢