Node-Webkit: How to play AVI videos? - html

I am trying to make a simple node-webkit app that lets you play .avi videos (which should work both on windows and mac). Is there a way to do this with node-webkit?

It is unlikely you will be able to just do this with Node-Webkit. Especially since the official webkit does not support AVI. Your best bet is to use an external application like libav (avplay) or use node to serve a webpage that has a player capable of playing the content and just let the users browser do the work. (Flash is likely still the best way to go, video.js is a good choice)
The alternative is to convert the video to one of the supported formats. I would recommend mp4. (Once again libav (avconv) comes in handy here.) This still assumes that Node-Webkit has implemented full HTML5 support. (I am not sure what they have completed but I am guessing it supports the video element)

Is AVI supported in Chrome (not Chromium) ?
If it is you have to change the libffmpegsumo.so in nw for the one in Chrome (try to use the same version).
libffmpegsumo.so is called ffmpegsumo.dll in Windows
The file file is in the same folder of the nw executable
to get the file download google chrome and go to %USER%/Google Chrome/ (or something like that) and you'll find the file in the same folder of the google-chrome executable

You can wcjs-player to play any format video which supported by VLC. It plays any video without any lags as in-built player.
To support my above claim, I have following points:
Building NW (by compiling source code) with various FFMPEG codec flags given at nw github site, doesn't help, in getting ffmpegsumo.dll which can play avi file format.
wcjs-player uses VLC libraries, which support all video played by VLC does.
Its better than using any nw plugin, as internally wcjs-player using VLC does similar job as HTML native video support .
Even if you suceed playing avi files, sometimes supported videos file format may not get played like most ironically mp4 file itself.
Apart from this, Teewe Theatre, Popcorn Time , Butter are among NW based media player using wcjs-player. It hardly increased 30 MB size of overall app size.

Related

How to stream mkv file using html/javascript?

Is there any way to stream mkv files on webpage using javascript/html or any other technologies? I found many questions about this, but I really want to know the answer - is this possible in any way? Maybe ajax, javascript, php, html? Maybe some external libraries? Anything?
I was wondering how youtube works. Is there possible to upload mkv file? Is so, how that videos are streaming to end user?
I know that browser doesn't support mkv natively, but maybe is some way to forcing html to do that?
Any help will be appreciated.
YouTube most probably works using the DASH protocol format. On the server side, the source audio and source video are separately divided into segments of different bitrate/quality. A manifest keeps an index of all possible segments values and their location. This allows to switch quality during playback in the player.
On the client side, the DASH (should be the same with the other main technology: HLS) manifest is used by the player to locate the segments to load in order to feed the content in two separate SourceBuffer, one for audio and one for video and both are being played synchronously together in the MediaSource. For an example player that handles this, see the Shaka Player developed by Google.
Conclusion, there is no need to use a container like mkv but each channel (video, audio) needs to point to a browser supported codec encoded segments.
You don't need anything special for streaming pre-recorded media files. A normal HTTP/1.1 or HTTP/2 server will work just fine. The browser is generally capable of seeking into the file using range requests.
Matroska (MKV) is a container format, and it actually is widely supported because it's basically the same as WebM. WebM is a subset of Matroska... the key differences being that there are suggested codecs for use. (Matroska itself supports almost anything.)
Your audio and video tracks in the file can use a variety of codecs... the key is to use codecs compatible with browsers. Opus for audio and VP8 for video will take you far.
From there, simply reference your video file in a <video> tag.

MP4 / H.264 Content Played On Browser That Doesn't Have Native HTML5 or Flash Support For It

I am working on an addon for a sandbox game, Garry's Mod, that plays YouTube videos and other media content in-game. The addon has been around for quite some time, known as PlayX, but things are just now majorly switching over to HTML5, which have helped to improve, but also break the player addon. The major limitation here is that the HTML framework in-game is Awesomium, or Chrome 18. Thus, only Webm and a few other formats are supported by the native HTML5 player. I am using JWPlayer as the host player, playing in HTML5. All standard YouTube videos play perfectly fine using Webm, and other file formats work as well. However, when trying to view MP4 / H.264 content or YouTube live streams, of which most seem to be encoded in MP4, it will simply not play due to it not being supported natively by Chrome 18. The workaround for this is to have players download NPAPI flash and install it, so the player will fall back to Flashplayer. (The in-game browser requires NPAPI flash to be installed by the user for Flash to work, since it does not have it baked in). This however is very convoluted and causes major frustration for players. My main question here is, is there any way to natively play MP4 / h.264 streams in a browser that does not support it without having to have clients download Flash? (I know, really dumb question on the surface). Is there any way to force it to play in a different codec (YouTube live streams), or is it locked to that because that is what it is streaming as? Or is there some sort of other player that can accept the MP4 stream and play it in another format real-time? Basically, I want to avoid users having to install NPAPI flash on their computers just to be able to watch MP4 / H.264 content, because as easy as it sounds, it is highly inconvenient for Garry's Mod players.
Just for context, a lot of us in the Garry's Mod Community have begged the Garry's Mod developers to update Awesomium / Chrome 18 to a newer version or replace it because it is so ridiculously outdated, but they don't seem to have any plans to do that for a long time, thus, we are stuck.
Any help / suggestions on this would be very much appreciated, I have done hours / days of research with little findings.
Thank you so much,
Adam

Using phonegap and html5 video tag: caveats?

I am planning to build a JavaScript/HTML5 app, and wrap it with phonegap to be installed on an android tablet.
In it, I want to show a video file.
Is it just a matter of creating an index.html file, and putting a mymov.ogv file in the same directory, and then using:
<video src="mymov.ogv"...>
and it will work on Android?
I have read about some problems with this, but my quest got me confused.
What are the caveats, if any?
PS: the video should be packaged within phonegap, such that the video is shown when the app is not connected to wifi. So it's a local file.
PPS: Since it's for internal use, I am able to choose a particular modern android version (if that makes any difference). There is no need to support old android versions whatsoever.
According to this resource: http://caniuse.com/ogv There is not support for ogv format in Android. Remember that Phonegap applications are just display in a rapped browser window-- So if the browser doesn't support it, you can't use it. Whether the video is on-board the device or streamed, doesn't matter.
You can certainly embed with the tag, but you might want to use the associated Javascript API to provide some control over the video.

Embed windows media player in HTML web page with playlist feature

I want to embed an audio player into my web page with a playlist feature. How can I do this?
A simple, clean way of doing it via Jquery (one of many options out there): http://www.happyworm.com/jquery/jplayer/
The (somewhat clunky) Microsoft way of doing it: http://www.mediacollege.com/video/format/windows-media/streaming/embed.html
Using an audio player that's not proprietary is good UI practice. For instance, Flash isn't available on all user's computers. WMV (which the windows example uses) is a very windows-centric format, and may not be supported to some linux or mac users. Many people don't run quick time, so the AAC format might not be a great format to embed.
You should probably use Windows Media Metafiles.

How to embed a wave file in html (cross platform)

I want to embed a wave file (or mp3) in html. There is no problem for windows platforms. User can install a windows media player plugin. But WMP does not support linux. Is there any way to do that besides using Flash?
You can take a look to a Javascript implemtation (origanilly from Digital Medias).
Here is a demo
But depending on what you want to do, it's generally not a good idea to provide music on website...
What do you mean by "embed a wave file in html"? You want to play an external file of hold that file inline in the html?
I do belive that you want to play an external file, as holding that file inline would be an overkill.
So, to play an external file, why not use a flash player (http://developer.longtailvideo.com/trac) or the new HTML5 element (http://ajaxian.com/archives/its-friday-play-some-drums-html5-style) ? I do belive flash is more lightweight than WMP and is cross-platform.
WMP might not exist on linux, but there are packages available for Firefox on linux that installs avi and mp3 handlers (at least mplayer does this, don't know about other players)
Really nice and easy example published by Google :
http://code.google.com/intl/fr/apis/wave/embed/guide.html
w3schools will usually tell you all you need to know about html authoring