Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use HTML5 streaming for cameras and screens in iCat #15

Open
tfq opened this issue Jun 2, 2015 · 4 comments
Open

Use HTML5 streaming for cameras and screens in iCat #15

tfq opened this issue Jun 2, 2015 · 4 comments
Labels

Comments

@tfq
Copy link
Member

tfq commented Jun 2, 2015

Instead of the vlc:// links opening an external program from iCat we should use some HTML5 streaming protocol (HLS, HDS, ...) to be able to watch the camera and screen streams directly in the browser.

@sjoqvist sjoqvist added the iCAT label May 22, 2017
@sjoqvist sjoqvist changed the title Use HTML5 streaming for cameras amd screens in iCat Use HTML5 streaming for cameras and screens in iCat May 22, 2017
@sjoqvist
Copy link
Member

Here's what VLC tells me about one of the camera feeds:

  • Type: Video
  • Original ID: 68
  • Codec: H264 - MPEG-4 AVC (part 10) (h264)
  • Resolution: 1920x1090
  • Display resolution: 1920x1080
  • Frame rate: 30
  • Decoded format: Planar 4:2:0 YUV full scale
    The same holds true for the screen feed from the same team, except that the frame rate is 10. (I think it's also weird that the height is 1090 and not 1080, but that's a separate problem.)

The problem with HTML5 streaming is that Chrome dropped support for H.264 in January 2011. Might still work in Firefox. Will check…

@sjoqvist
Copy link
Member

Regardless of what I said in my previous comment, it does seem like Chrome has some kind of H.264 support. Still, I can't make the stream play in either Chrome or Firefox.

I downloaded parts of a video and examined it with ExifTool. Here's what it says:

ExifTool Version Number         : 10.50
File Name                       : unknown-video
Directory                       : /tmp
File Size                       : 50 MB
File Modification Date/Time     : 2017:05:23 17:11:17-06:00
File Access Date/Time           : 2017:05:23 17:11:59-06:00
File Inode Change Date/Time     : 2017:05:23 17:17:14-06:00
File Permissions                : rw-r--r--
File Type                       : M2T
File Type Extension             : m2t
MIME Type                       : video/mpeg
Duration                        : 0:02:15

Hence, there seems to be confusion between the tools about the format of the feed, but changing the type to video/mpeg or video/MP2T in the <source> tag didn't work either.

@fredrikheintz
Copy link
Member

fredrikheintz commented May 23, 2017 via email

@sjoqvist
Copy link
Member

@fredrikheintz The problem isn't getting the videos. We can do that with VLC. The problem is that it requires some work to correctly start VLC from the browser, and even then it tends to take some time and create new windows all over the place.

Talking to Patrick Sweitzer, this is what I found out: The video is encoded using H.264. The cameras do this internally. Using the CPU for transcoding isn't an option, as it turned out to significantly affect the performance. The CPU is used for transcoding the screen video, but at 10 fps it's a reasonable load. But this encoding is still okay and the issue regarding the browser is rather that the camera audio is encoded using MPEG-A and the container is MPEG-TS. These are old formats that aren't supported by the browsers, but happened to be used a lot when ICPC first started doing videos. Patrick would like to modernize this (possibly with different options for different browsers) so that we could view the streams in a browser, but then the CDS has to be involved as all the videos have to pass through it.

For the time being, the answer is that it simply isn't possible but that it might be next year.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants