我想知道大多数多媒体Java商店是如何处理视频流的。假设我想要建立一个网站,其中有一个页面可以使用HTML5视频播放器,如下所示:
<html>
<head>
...
</head>
<body>
... content up here
<video width="500" height="500" controls="controls" src="path/to/video.mp4" />
... more content down here
</html>假设这个页面的网址是http://myapp.example.org/video。当/video路径的HTTP请求到达myappp.example.org服务器时,我想我有几个选项:
video.mp4视频;或video.mp4从该媒体服务器直接流回客户端;或。
video.mp4我可能知道还有其他选项(在这种情况下,是什么?)。我的问题:
A/V流通常是如何从Java后端后面处理的?
发布于 2014-05-10 14:19:35
去任何像纽约时报这样的大媒体网站调试他们的播放器..。
例如“纽约时报”的头版在左下角有视频链接,一个包装的播放器.
撕开它,看着它播放与宿主页面的标记分离的媒体。
<div class="videoOverlayDiv" id="1399731372442_nytd_vid_player_1399731372442_nytd_vid_player-posterImageContainer" style="cursor: pointer; width: 100%; height: 100%;"><img src="http://graphics8.nytimes.com/images/2014/05/09/multimedia/0511billcunningham/0511billcunningham-videoSmall.jpg" width="100%" height="100%"></div>-编辑--大多数媒体网站在播放器UI中使用两个步骤的过程。
如果是的话,那就假设你的问题是req。#2是“我的java后端如何处理req #2中的流?”
这里的答案是,Java应该无关紧要,因为对于apache2/nginx这样的正常后端,您对媒体CID的第二个数据请求可以包含一个HTTP头,它将告诉S3的任何服务器对响应进行编码,这样媒体就适合流,所以JS客户端就可以播放它……详情如下:
0000: GET /09d82830-ec2d-40b4-bb14-944728550685/9e896164-95a0-4f62-ae6
0040: b-4b55b2aef006-20140508152306.flac HTTP/1.1
006d: User-Agent: curl/7.28.1-DEV
008a: Host: files.parse.com
00a1: Accept: */*
00ae: Accept-Encoding: chunke 0000: GET /09d82830-ec2d-40b4-bb14-944728550685/9e896164-95a0-4f62-ae6
0040: b-4b55b2aef006-20140508152306.flac HTTP/1.1
006d: User-Agent: curl/7.28.1-DEV
008a: Host: files.parse.com
00a1: Accept: */*
00ae: Accept-Encoding: chunked
00c8:
<= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
<= Recv header, 78 bytes (0x4e)
0000: x-amz-id-2: BuOgfHtRGjdrHeFaVhz9a4bhJ+LYnvUWxa0dYbxkxe7XL5UUm86F
0040: Z1qIosQXhXan
<= Recv header, 36 bytes (0x24)
0000: x-amz-request-id: B5FEA3C5231DC8A7
<= Recv header, 37 bytes (0x25)
0000: Date: Sun, 11 May 2014 17:03:12 GMT
<= Recv header, 46 bytes (0x2e)
0000: Last-Modified: Thu, 08 May 2014 22:23:14 GMT
<= Recv header, 52 bytes (0x34)
0000: x-amz-version-id: CvsKD0cAtBt9KrDqTdFwXxt.JMcBZ.pF
<= Recv header, 42 bytes (0x2a)
0000: ETag: "03e492b2d4c3518e6d09a3a37c61565e"
<= Recv header, 22 bytes (0x16)
0000: Accept-Ranges: bytes
<= Recv header, 23 bytes (0x17)
0000: Content-Type: image/*
<= Recv header, 23 bytes (0x17)
0000: Content-Length: 87357
<= Recv header, 18 bytes (0x12)
0000: Server: AmazonS3
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 1064 bytes (0x428)
0000: fLaC..."...........b ...&.G..-.....J...#.O...&....reference libF
0040: LAC 1.2 20070917..........L...............5....y..i.(...........
0080: ...........................................d.......8...b....`...
00c0: ....UUUUUP.q..@..(.....A.0(.....AaP.|....I........@..XT.1... .H<
0100: :......(.....@ .......A$..].....;)B...=......(q..m...()P.P`.(H..
0140: ....(...U..=..Fyc,8W..d..{.....0n..$.......-6...(.m+.>....?.e...
0180: b>...|I)Xh...Q....%!.?J@.B1\*r...<.n..Gh...O.3.../..iS'.fX..o.(.
01c0: .&Xq&...{V..!..q....bR$.iVN3.E.I...".._.ED"I.>$.....@X...p@...
0200: L.#..........Cb6.E6...Wku..V.)......:o..g...SQ....R...#D....c.D
0240: ...hr.0.3>...:.,`....A..5.D..T..$.......m.......|.E.,f/..C.i.#..
0280: q.};...>.R.....].!..=/....=b.....%(.ds.....p.....1+...c...rp.[..
02c0: BQ'. ..H8....D0.&GBr.a}!.e&..}..*.f.._..e..K..,....f......X..\.[
0300: eK$.J....t..V%C.l.$n8P..^...T..h.*......Q....#...@..[Zv..(....
0340: ....J.;/..T.....dc..G...T.v...Q......N....C&[......L.N.!{... .KJ
0380: 7Z.. .[..}5.v,Q)#..@w...d....U..).[r...r.......E>.!..JsH!;.,./..
03c0: .E.\.L........../..+..F.A....9C..d....5.bso.q.j.HL...........r..
0400: 9....|.....dFk.e..F......=.....M6V..b'..
<= Recv data, 1460 bytes (0x5b4)
0000: sx%..1....>.Cu, S05>..K.f.Mz.g]..t:i..Z.=.&\......X........KK...
0040: .d.j..|q'7.<..U\$o.2....K..b.ZVn';L.RO.C....!..A&..&n.?B.......
0080: ..\g.."....%.O....p..}.Uf....xvIr..=ba_..t..0.L-...+h.........i.
00c0: WwD.4...Q)....4c.7.zN....._9..c..."...F.*.Jq.....]...e*...).$.P.
0100: ...Us.....6.........'.t......(J....:.....92..B.Y5..y8.:....!\..D
0140: ...;$...>L..4...L.....s...E..4k.T...}.g..R.m.Q.a.4.7I.x....O....
0180: ..(....:T..r........./,.$i......|........0.....7..f."......y].Md
00c8:
<= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
<= Recv header, 78 bytes (0x4e)
0000: x-amz-id-2: BuOgfHtRGjdrHeFaVhz9a4bhJ+LYnvUWxa0dYbxkxe7XL5UUm86F
0040: Z1qIosQXhXan
<= Recv header, 36 bytes (0x24)
0000: x-amz-request-id: B5FEA3C5231DC8A7
<= Recv header, 37 bytes (0x25)
0000: Date: Sun, 11 May 2014 17:03:12 GMT
<= Recv header, 46 bytes (0x2e)
0000: Last-Modified: Thu, 08 May 2014 22:23:14 GMT
<= Recv header, 52 bytes (0x34)
0000: x-amz-version-id: CvsKD0cAtBt9KrDqTdFwXxt.JMcBZ.pF
<= Recv header, 42 bytes (0x2a)
0000: ETag: "03e492b2d4c3518e6d09a3a37c61565e"
<= Recv header, 22 bytes (0x16)
0000: Accept-Ranges: bytes
<= Recv header, 23 bytes (0x17)
0000: Content-Type: image/*
<= Recv header, 23 bytes (0x17)
0000: Content-Length: 87357
<= Recv header, 18 bytes (0x12)
0000: Server: AmazonS3
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 1064 bytes (0x428)
0000: fLaC..."...........b ...&.G..-.....J...#.O...&....reference libF
0040: LAC 1.2 20070917..........L...............5....y..i.(...........
0080: ...........................................d.......8...b....`...
00c0: ....UUUUUP.q..@..(.....A.0(.....AaP.|....I........@..XT.1... .H<
0100: :......(.....@ .......A$..].....;)B...=......(q..m...()P.P`.(H..
0140: ....(...U..=..Fyc,8W..d..{.....0n..$.......-6...(.m+.>....?.e...
0180: b>...|I)Xh...Q....%!.?J@.B1\*r...<.n..Gh...O.3.../..iS'.fX..o.(.
01c0: .&Xq&...{V..!..q....bR$.iVN3.E.I...".._.ED"I.>$.....@X...p@...
0200: L.#..........Cb6.E6...Wku..V.)......:o..g...SQ....R...#D....c.D
0240: ...hr.0.3>...:.,`....A..5.D..T..$.......m.......|.E.,f/..C.i.#..
0280: q.};...>.R.....].!..=/....=b.....%(.ds.....p.....1+...c...rp.[..
02c0: BQ'. ..H8....D0.&GBr.a}!.e&..}..*.f.._..e..K..,....f......X..\.[
0300: eK$.J....t..V%C.l.$n8P..^...T..h.*......Q....#...@..[Zv..(....
0340: ....J.;/..T.....dc..G...T.v...Q......N....C&[......L.N.!{... .KJ
0380: 7Z.. .[..}5.v,Q)#..@w...d....U..).[r...r.......E>.!..JsH!;.,./..
03c0: .E.\.L........../..+..F.A....9C..d....5.bso.q.j.HL...........r..
0400: 9....|.....dFk.e..F......=.....M6V..b'..
<= Recv data, 1460 bytes (0x5b4)
0000: sx%..1....>.Cu, S05>..K.f.Mz.g]..t:i..Z.=.&\......X........KK...
0040: .d.j..|q'7.<..U\$o.2....K..b.ZVn';L.RO.C....!..A&..&n.?B.......
0080: ..\g.."....%.O....p..}.Uf....xvIr..=ba_..t..0.L-...+h.........i.
00c0: WwD.4...Q)....4c.7.zN....._9..c..."...F.*.Jq.....]...e*...).$.P.
0100: ...Us.....6.........'.t......(J....:.....92..B.Y5..y8.:....!\..D
0140: ...;$...>L..4...L.....s...E..4k.T...}.g..R.m.Q.a.4.7I.x....O....
0180: ..(....:T..r........./,.$i......|........0.....7..f."......y].M请注意请求标题中的“接受-编码”。
另外,请注意,stdapache2/nginx响应将如您所见-一个没有内容长度头的流响应。这是一条小溪。如您所见,流中的前两个块的长度为1064,1460。
您只需让Http成为您的朋友,并在您的请求中得到一个只有一个标头的流响应。
https://stackoverflow.com/questions/23579040
复制相似问题