标签: buffering

使用Android MediaPlayer进行流媒体播放 - 捕获错误和缓冲

MediaPlayer从HTTP URL流式传输时,我无法恢复弹性.

如果我开始播放文件,但随后丢弃连接(例如飞行模式),则MediaPlayer#OnErrorListener生成what=1, extra=-17然后不久what=-38, extra=0.

我没有在API中看到这个表示的文档,除了extra是"通常依赖于实现".我正在使用HTC Hero(好吧,它是T-Mobile UK的G2 Touch).

其他人是否获得相同的值,并且可以安全地捕获这些值,因为连接已经消失了吗?

连接重新出现时,如何才能最好地恢复?(保存当前的搜索偏好,并每5秒重试一次?)

我怎么知道设备何时决定开始播放它正在缓冲的内容 - 是否有回调(除了轮询isPlaying())?

此外,我不完全确定onBufferingUpdate提供什么.我正在使用40分钟的播客MP3 (64kbps bitrate)- 缓冲分为1%,2%,3%.当我寻求大约30分钟,它显示75%,然后当我寻求回到开始回到5% - 这个回调的重点是什么,除了显示大约什么是缓存?

最后 - 有什么方法可以管道流式传输到MP3什么?

streaming android buffering media-player

7
推荐指数
2
解决办法
1万
查看次数

如何使用PHP流媒体文件?

我正在尝试构建一个应用程序,我必须将媒体文件(音频和视频)流式传输到浏览器.我正在通过php读取文件并将数据发送到浏览器.我使用以下代码.

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Type: {$file->getMimetype()}");
header("Content-Disposition: inline; filename=".$filename.";");
header("Content-Length: ".strlen($file_content));

echo $file_content;
Run Code Online (Sandbox Code Playgroud)

除了我尝试转发视频或音频时(我的意思是假设当前播放位置为0:15并且它直接转到1:25),媒体停止并且当我再次按下播放按钮时,每件事情都工作得很好从头开始.

我认为问题在于缓冲,但无法弄清楚.我在标题中做错了什么或需要别的东西.

谢谢.

php file-io buffering

7
推荐指数
1
解决办法
3万
查看次数

是否可以进行Youtube缓冲区完成事件

是否有可能通过javascript检测到youtube缓冲的完成?这里http://code.google.com/intl/de-DE/apis/youtube/js_api_reference.html有很多方法,但没有人有"完成缓冲"的事件.

javascript youtube buffering

7
推荐指数
1
解决办法
1108
查看次数

为什么使用线程的脚本偶尔会打印额外的行?

如果print s被替换,print >>sys.stderr, s则效果消失.

import random, sys, time
import threading

lock = threading.Lock()

def echo(s):
    time.sleep(1e-3*random.random()) # instead of threading.Timer()
    with lock:
        print s

for c in 'abc':
    threading.Thread(target=echo, args=(c,)).start()
Run Code Online (Sandbox Code Playgroud)

# Run until empty line is found:
$ while ! python example.py 2>&1|tee out|grep '^$';do echo -n .;done;cat out
Run Code Online (Sandbox Code Playgroud)

产量

....................
b

c
a
Run Code Online (Sandbox Code Playgroud)

输出不应包含空行,但确实如此.我知道这print不是线程安全的,但我认为锁应该有所帮助.

问题是为什么会发生这种情况?

我的机器:

$ python -mplatform
Linux-2.6.38-11-generic-x86_64-with-Ubuntu-11.04-natty
Run Code Online (Sandbox Code Playgroud)

额外的线条印在py26,py27,pypy上.

py24,py25,py31,py32表现得如预期的那样(没有空行).

变化

python io multithreading buffering

7
推荐指数
1
解决办法
2385
查看次数

PHP:<<< vs ob_start

在PHP中有时候我会看到:

$html = <<<HTML
<p>Hello world</p>
HTML;
Run Code Online (Sandbox Code Playgroud)

通常我会使用ob_start():

ob_start();
?>
<p>Hello world</p>
<?php
$html = ob_get_contents();
ob_clean();
Run Code Online (Sandbox Code Playgroud)

你能告诉我这两种写入缓冲区的方式和它们的优点有什么区别吗?

php buffering

7
推荐指数
2
解决办法
2839
查看次数

重用对象实例与每次更新创建新对象

每次交换缓冲区时,重用对象实例与创建新实例之间有什么区别和缺陷?

背景:

这是我的游戏引擎项目.

我正在写一个TripleBuffer,我有三个版本的每个对象:旧版本,当前版本未来版本.将通过从当前版本读取状态并将更改应用于将来的版本来对这些对象进行更改.在对所有对象进行更改后(如果适用),将交换缓冲区:将来的对象成为当前对象,当前对象成为旧对象,还是旧对象?

  • 要么被丢弃,要通过迭代现在的对象来分配新对象
  • 或者成为现在的未来对象,并通过迭代现在的对象来更新它们的值(重新覆盖).

说明:

  • "重用":用新值覆盖旧实例的值,有效地改变实例的状态
  • "new ones/cloning":使用旧实例的数据创建新实例,并对其应用更改

使用案例:

假设大约1000个对象以30Hz交换,这意味着它们需要每秒重建30次,方法是克隆现有的对象,或者重用现在过时的旧对象(覆盖其所有状态).

它们的复杂程度可以从大约5个属性到数百个属性,并且总是具有至少2个级别深度.

(深度至少为2级 =缓冲对象本身只包含其他唯一对象的地图,这些对象组成了它们)

重新创建和重用都需要迭代当前对象及其组件(短于:反过来构成它们的对象).

进一步考虑:

在引擎的其他部分,将有事件触发和其他魔法,它们将使用对象的及时快照.因此,重新创建或重用的决定将导致:

  • 重新创建意味着我可以安全地传递对象的引用,因为对象在成为当前对象时将变为不可变
  • 重用意味着我将不得不创建当前对象的副本或我需要的任何部分的副本,因为我不能保证在对象被重用之前将处理事件(或其他)

java buffering

7
推荐指数
1
解决办法
4550
查看次数

减少视频缓冲

我正在使用媒体播放器通过RTSP在Android上播放视频.在开始播放之前,播放器需要大约12秒才能缓冲.任何人都知道如何说服玩家减少缓冲?我可以完全控制RTSP服务器和它返回的SDP.

android buffering rtsp video-streaming media-player

6
推荐指数
1
解决办法
7766
查看次数

DataInputStream\DataOutputStream的性能

我目前正在使用缓冲流来读取写入一些文件.在我之间我做一些数学处理,其中符号是一个字节.

阅读 :

InputStream input = new FileInputStream(outputname)
input.read(byte[] b,int off,int len)
Run Code Online (Sandbox Code Playgroud)

来写 :

OutputStream output = new BufferedOutputStream(
                           new FileOutputStream(outputname),
                           OUTPUTBUFFERSIZE
                       )
output.write((byte)byteinsideaint);
Run Code Online (Sandbox Code Playgroud)

现在我需要添加一些标题数据,并支持短符号.我想使用 DataInputStreamDataOutputStream避免自己将其他类型转换为字节,我想知道它们的性能是什么.

我需要使用吗?

OutputStream output = new DataOutputStream(
                             new BufferedOutputStream(
                                  new FileOutputStream(outputname),
                                  OUTPUTBUFFERSIZE
                             ) 
                       );
Run Code Online (Sandbox Code Playgroud)

保持数据缓冲的优势,或者它足以使用

OutputStream output = new DataOutputStream(
                           new FileOutputStream(outputname)
                       )
Run Code Online (Sandbox Code Playgroud)

java io performance buffering

6
推荐指数
1
解决办法
4605
查看次数

fork()打印前的语句两次

我正在试验fork()并重新指导检查父母的重新指示是否也适用于孩子.我写了以下简单的程序

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main ()
{
    freopen( "error.txt", "w+t", stdout ); // From now on, stdout = error.txt
    printf (" ERROR!  WHY DONT U UNDERSTAND?\n");
    if ( fork() == 0 ) 
    {   
        printf(" I AM CHILD\n");
        exit(0);
    }   
    else-
    {   
        printf (" EITHER I AM A PARENT OR SOMETHING GOT SCREWED\n");
    }   


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

error.txt我得到的输出()是

ERROR!  WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR!  WHY DONT U UNDERSTAND? …
Run Code Online (Sandbox Code Playgroud)

c fork stdout buffering io-redirection

6
推荐指数
1
解决办法
2749
查看次数

如何避免在Python文件输入库中进行缓冲

我在这里看到了这个问题,但是给出的答案在我的案例中没有用,并且被标记为重复.

我挖了源代码(/usr/lib/python3.2/fileinput.py)并看到它readlines(bufsize)在内部用于加载缓冲区.没有贝壳或其他管道的恶作剧.

python file-io readline buffering readlines

6
推荐指数
1
解决办法
1223
查看次数