1
fising 2014-10-07 15:25:16 +08:00 via iPad
腾讯迅雷都做过了
|
2
jerryjhou 2014-10-07 15:40:23 +08:00 via Android
内容识别和匹配
|
3
kslr 2014-10-07 16:14:25 +08:00
钱
|
4
binux 2014-10-07 16:22:59 +08:00
没有
|
5
DearMark 2014-10-07 16:34:34 +08:00 1
水表要先拆掉
|
6
karonl 2014-10-07 16:34:59 +08:00
能识别和匹配,不行的话边下边播也是可以的
|
7
blaboy 2014-10-07 17:11:16 +08:00
补充:转码。。压缩视频。
|
8
cevincheung OP |
9
cevincheung OP @blaboy
vlc已经可以直接播放emule下载的临时文件了。动态播放应该不是难事。 |
10
jerryjhou 2014-10-07 17:32:01 +08:00 via Android
@cevincheung 合并相同内容可不能光靠hash,否则你绝对缓存不过来
|
11
cevincheung OP @jerryjhou
好吧,没仔细了解过,我理解就是根据hash找到主要文件然后请求不同分节。 |
12
66450146 2014-10-07 17:52:42 +08:00
最难的是保证开头那部分的下载速度。。。
出于显而易见的原因,p2p 通常是分段下载的,但是播放视频需要从文件头开始的连续的一段。。。 |
13
jsq2627 2014-10-07 18:30:41 +08:00
楼上正解,在线播放最需要的是顺序下载。P2P很显然不合适的。
|
14
jsq2627 2014-10-07 18:43:03 +08:00
@jerryjhou 这个应该是是ED2K服务器做的吧,和播放器没关系吧。ED2K服务器和BT的Tracker差不多。客户端把Hash提交上去服务器返回Peers表。如果实现了Kad协议那么也可以不需要中心服务器。
|
15
jerryjhou 2014-10-07 18:47:55 +08:00 via Android
@jsq2627 你不会是想不缓存直接播放吧,那绝对不可能,需要转码的。
缓存就需要识别视频内容,否则一部电影7-8个版本难道都缓存一遍吗 |
16
cevincheung OP @jerryjhou 多版本指的什么意思?根据hash不可以定位到一个指定文件吗?vlc已经可以直接播放emule下载的分段文件了
|
17
jerryjhou 2014-10-07 19:46:33 +08:00 via Android
@cevincheung 同一部电影可能有很多不同清晰度,不同压缩者的资源
|
18
love 2014-10-07 19:59:38 +08:00
很多年前用过bitcomet较热门的源可以边下边播,不过刚开始时要缓存个几分钟。那个应该没有用服务器的,直接就是从peer端下载就播了。
|
19
ariza 2014-10-07 20:00:35 +08:00 via iPad
冷门资源多了去了
|
20
cevincheung OP |
21
jerryjhou 2014-10-07 20:52:26 +08:00 via Android
@cevincheung 你如何做到实时转码?流媒体格式就那么几种
|
22
yaoye0o 2014-10-07 20:53:51 +08:00 via Android
我一般都离线到百度云然后在线看
|
23
jerryjhou 2014-10-07 20:55:37 +08:00 via Android
@cevincheung 而且你这样无意义啊,这种东西就是要下载转码后缓存,相同资源的不同版本不必进行重复下载和转码(这就需要内容识别,对付非法资源也需要)
|
24
cevincheung OP @yaoye0o emule未下载完的文件可以直接用vlc播放,我尝试过各种格式了,avi/mkv/rm(vb)/wmv都可以的。
|
25
jsq2627 2014-10-07 21:26:25 +08:00
@jerryjhou 主流编码都可以实时解码的。不是说非得要整个文件才能解码,视频编码后都是按照时间顺序写入文件的,只要有文件的一部分,就能解码播放这部分内容。
流媒体: http://en.wikipedia.org/wiki/Streaming_media Protocols The audio stream is compressed using an audio codec such as MP3, Vorbis or AAC. The video stream is compressed using a video codec such as H.264 or VP8. Encoded audio and video streams are assembled in a container bitstream such as MP4, FLV, WebM, ASF or ISMA. The bitstream is delivered from a streaming server to a streaming client using a transport protocol, such as MMS or RTP. Newer technologies such as HLS, Microsoft's Smooth Streaming, Adobe's HDS and finally MPEG-DASH have emerged to enable adaptive bitrate streaming over HTTP as an alternative to using proprietary transport protocols. The streaming client may interact with the streaming server using a control protocol, such as MMS or RTSP. 我感觉你还没明白楼主在说什么问题。 给一个ED2K链接,如何能实现边下边播? ED2K链接里本身含有文件的Hash,所以先要连接ED2K服务器(比如 TV Underground 等等,用过emule的话应该会熟悉这个服务器列表更新地址 http://ed2k.2x4u.de/index.html ),把Hash提交给服务器后,服务器会返回这个文件的 Peers,然后再连接每个 Peer,接受文件数据块。但是这样接受到的文件块不是从头开始连续的,为了实现边下边播,需要等文件最开头的块下载好一部分之后,交给解码器来解码,这时候视频才能开始播放。但是下载速度如果不够快,顺序解码的时候遇到了还没下完的块时,视频就得卡了,得等待这些块下载好后才能继续解码播放。 你说的相同资源的不同版本,本身它们就是不同的文件,Hash都不一样的,下载一个文件的时候不可能下到另一个文件的数据的。 |
28
ryd994 2014-10-07 22:37:24 +08:00
|
29
binux 2014-10-07 22:41:58 +08:00
ed2k 为什么不能从开始的地方开始下,优先请求靠前的分片不就完了
有 ed2k的lib + libvlc 直接就开工做了 |
30
cevincheung OP |
31
jsq2627 2014-10-07 23:34:33 +08:00
@jerryjhou 原来说的是在线播放,我理解成像迅雷一样的边下边播功能了。
这么说像迅雷云播、百度云在线播放到底是每个视频都转码了?还是有什么方法解决这个问题了?很好奇。 |
32
binux 2014-10-07 23:34:55 +08:00
@cevincheung 有文件头就能算出来了(貌似),所以开始的部分非常重要。
请求哪个分片是客户端指定的,优先下哪个随意控制,快进就跳分片下载就可以了。 下完的分片,或者持续做种是个策略问题,和播放器没关系。 所以说没有难点 |
33
Biwood 2014-10-08 01:09:25 +08:00
视频转码要耗费大量的服务器资源,成本可能有点高
|
34
cevincheung OP @Biwood 服务器不参与。全靠peers
|
35
mengzhuo 2014-10-08 09:10:58 +08:00
迅雷会员
要钱而已~ |
36
mengskysama 2014-10-08 10:29:36 +08:00
有人在BT上实现了http://www.v6speed.org/v6Speed/ 但是貌似没有开源,他这个实现原理也很简单就是控制分块优先级,不过你这个假设根本不成立,现在ed2k很多资源都是稀缺资源。
|
37
jerryjhou 2014-10-08 10:45:10 +08:00 via Android 1
@jsq2627 会根据文件名和图像识别避免重复下载累死内容,但你说的对,都要转码,还需要排队
|
38
cevincheung OP @jerryjhou hash标识内容。视频不需要转码,这不是在网页上使用webplayer播放,是在本地播放,libvlc可以直接播放。
|
39
spark 2014-10-11 09:00:51 +08:00 via iPhone
Popcorn time
|