- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个在服务器上运行的 icecast 设置。将连接到它的客户端是网页中的标签,通过 HTML5 或 Flash。我目前正在使用 audio.js 来实现这一点(特别是 flash 回退)。
问题是,音频与图像流同时播放但分开播放。 (这是一个 10-fps 的 jpeg 流。)我需要音频尽可能与图像匹配。不幸的是,有时音频在开始播放前会延迟多达 7 秒。
一些信息:
<burst-on-connect>
设置为 0 以最大限度地减少延迟。换句话说,当通过 vlc 查看图像和播放音频时,一切都充分对齐。不幸的是,使用 VLC 并不是最后的选择。
由于 VLC 没有延迟,这告诉我网络浏览器(Chrome、Firefox、IE)在播放音频之前正在缓冲音频。
问题:如何防止网络浏览器缓冲音频?我希望它在有任何可用的情况下立即播放。我目前使用的是 audio.js,但也可以接受其他类似技术。
附加信息:我已将 audio.js 设置为自动播放和 preload=none。
感谢您的帮助!
最佳答案
缓冲区总是是必需的。网络是分组交换的。数据以 block 的形式出现,而不是连续的。其实缓冲区有很多:
如您所见,每个缓冲区都会增加延迟。您真正可以控制的唯一缓冲区是服务器端缓冲区,它由 <burst-on-connect>
配置。环境。通过将此缓冲区的大小设置为更大的大小,您可以非常快速地填充所有下游缓冲区,从而实现极快的播放开始。您已将其设置为零,这意味着下游缓冲区的填充速度只能与从编码器传入的数据一样快。
客户端,你绝对无法控制缓冲,你也不应该。客户可以自由地以他们选择的任何方式实现编解码器。一些编解码器可以立即开始流式传输,而另一些则不能。有些设备必须对您的音频重新采样以适合其播放,而其他设备则不需要。
听起来您真正想要做的是同步视频流和音频流。为此,您应该首先流式传输视频流。制作视频是为了保持音频和视频同步。 Icecast 甚至支持几种格式的流媒体视频。
关于javascript - icecast audio.js 无缓冲播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26610372/
我正在使用 MediaPlayer 在我的应用程序中播放在线 mp3 文件中的一些声音。 但是,即使在播放完成后,我也会在控制台中收到一行又一行的回调和缓冲。 10-24 08:08:48.467
我有一个简单的多边形。 dfr p = st_polygon(list(as.matrix(dfr))) > pbuf = st_buffer(p, .4) > plot(pbuf) > plot(
这可能又是一些愚蠢的问题,也许这确实是我所缺少的东西,但我很难让 glMultiDrawArrays 在 OpenGL4 中工作。 我发现了很多这样的解释: for (int i = 0; i #i
这仅仅是根据网络速度调整预缓冲内容量的问题吗?你是否在一开始就为此调整一次,每秒......? 或者它更复杂 - 对您的网络速度记录历史进行采样并取平均值/中值并对其进行调整? 最佳答案 您的第二段总
嗨,我正在使用 FFmpeg Autogen C#。当我使用 mkv 输出作为文件并使用 h264 rtsp 流作为输入时,一切正常。编解码器是 libx264 ffmpeg.avio_open(
我需要多次遍历几个文本文件的行。目前这是通过多个 with open("file.txt") as f: for line in f: # do something 虽然性能还
昨天给同学们写了一个xinetd小练习:做一个反向回显程序。 为了学习新东西,我尝试实现一个 Haskell 解决方案。琐碎的main = forever $ interact reverse不起作用
我正在阅读《实时渲染第三版》中的遮挡剔除部分,但我无法理解它是如何工作的。一些问题: “Z 金字塔”有何贡献?为什么我们需要多种分辨率的 Z 缓冲区?在书中,它的显示如下(左侧): 八叉树结构与用于一
我通过串行端口与设备通信。 我已成功获取 InputStream 并读取设备发送的内容。 但问题是,我根本不知道何时停止阅读并继续执行另一项任务。 这是简化的代码: inputStream = ser
我有以下代码: func (q *Queue) GetStreams(qi *QueueInfo) { channel := make(chan error, len(qi.AudioChun
在我调用 -play 之前,有没有办法让 MPMusicPlayerController 缓冲内容?还是在您设置队列时默认执行此操作? AVAudioPlayer 有 -prepareToPlay 方
我正在编写一个数据库 备份函数,从System.Diagnostics.Process 对象 读取StandardOutput (StreamReader) 属性。我已成功写入普通文件。 //This
我有一个 wpf 应用程序,其中所有 viewModel 都继承自实现 INotifyPropertyChanged 的类 NotifyPropertyChangeClass(见下文)。 我想限制
我需要类似于 withLatestFrom 的东西,对应于下图: ---------A-----------------B-- -1-2-3------4------5-6-7-8---- -----
有没有办法缓冲 OutputStream,在返回之前修改它?这是我的代码片段: public ServletOutputStream getOutputStream() throws IOExcept
目前我们有实现服务器通信协议(protocol)缓冲的需求。如果有人对此有任何意见,他们可以向我提供任何意见吗。 最佳答案 请查看以下 Protocol Buffer 链接。 http://code.
所以我目前正在开发一个 Java 应用程序,该应用程序应该将特定事件记录到数据库中。我希望每分钟最多有 15 到 20 次插入,基本上我想知道我是否应该为每个插入语句建立一个新连接,或者只要应用程序正
请考虑以下代码,包括两个线程 buffering_thread(用一条消息填充缓冲区指针)和 sending_thread(清空缓冲区): #include "msg.cpp" msg * buffe
是否可以在线播放由两个或多个视频文件组成的视频? 由于我原来的帖子不够清楚,这里有扩展的解释和问题。 我的站点托管在 Linux/Apache/PHP 服务器上。我有 FLV/F4V 格式的视频文件。
这是我用于缓冲和转换传入事件的代码: public Publisher> logs(String eventId) { ConnectableObservable connectableObs
我是一名优秀的程序员,十分优秀!