
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 水表要先拆掉 |
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 @jsq2627 会根据文件名和图像识别避免重复下载累死内容,但你说的对,都要转码,还需要排队 |
38 cevincheung OP @jerryjhou hash标识内容。视频不需要转码,这不是在网页上使用webplayer播放,是在本地播放,libvlc可以直接播放。 |
39 spark 2014-10-11 09:00:51 +08:00 via iPhone Popcorn time |