我正在尝试为我的简单视频播放器实现Youtube的缩略图预览功能.这是Snap for it:
好消息是:一旦播放器从HTTP服务器获取所有缩略图预览,它就能顺利运行.
不好的是:获取所有缩略图预览需要花费大量时间(20-30秒).(对于14分钟(~110 MB)的视频(.mp4文件),大约有550个缩略图预览(160x120)
我正在做的是:当用户开始播放视频时,我将向服务器发出"total_thumbnails"HTTP请求以获取所有这些视频.
还 - 注意:
- 我将在异步任务中执行多个HTTP请求.
- 我不会这样做,提出请求,等到下载完成然后再提出请求.
- 我将盲目地发出"total_thumbnails"HTTP请求,因此所有请求都在流水线中排队,然后并行接收响应.
额外细节:HTTP(lighttpd)服务器将运行,用户从列表中选择要播放的video.mp4后,我的播放器将从该处获取所有缩略图.此外,播放器将使用相同的服务器来使用HTTP流式传输来获取video.mp4.
问题是:当我开始播放视频,然后我快速搜索时,我最终看到了这个(白色缩略图是默认的,当映射到该时间的缩略图尚未从服务器获取时):
问题是:我如何有效地获取所有(或一些)缩略图预览,以便用户(大多数时间)将获得正确及时映射缩略图的体验?
我已经在视频开始时看到youtube的视频(这很快),播放器能够显示所有及时的正确缩略图(无论你将拇指拖到最后一分钟还是悬停在酒吧的最后几分钟,几乎每次都你会看到正确映射的缩略图).
他们是同时下载所有缩略图还是下载压缩的缩略图预览系列或其他一些智能的东西正在那里发生?
有没有人对此有所了解?
performance http thumbnails processing-efficiency video-thumbnails
int main()
{
struct a
{
struct a *next;
struct a *prev;
};
struct a *A[2];
printf("Address of (&(A[0])->next) = %p",(&(A[0])->next));
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的printf语句中,我正在访问"struct a"结构的"next"指针,当我在dev编译器中运行程序时,它给了我有效的内存地址(尽管我还没有为它分配任何内存).对如何发生这种情况的解释将非常有帮助.
是否为"下一个"和"上一个"字段分配了内存?
如果我写的东西像1 << 8; 什么是默认类型.它是无符号的还是默认签名的,或者我必须输入它?基本上我的问题是:在C中涉及常数(正数)的表达式的类型是什么(例如2 << 13)?每次我们需要进行类型转换吗?
如果我想使用它(1 << 8)作为签名的类型转换是强制性的?喜欢short int x =(signed)(1 << 8);