Youtube actually uses the HLS "Http Live Streaming" method that Apple invented and is trying to standardize.
I replicated that method using a elaborate command line for VLC and a HTTP web server and it worked on the Wii U.
Here's the command line:
"c:\program files (x86)\videolan\vlc\vlc" -I rc dshow:// vdev="XSplitBroadcaster" adev="XSplitBroadcaster" size="1280x720" --sout=#transcode{width=1280,height=720,fps=25,vcodec=h264,vb=256,venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1},acodec=mp3,ab=96,channels=2}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=C:\inetpub\wwwroot\stream\stream.m3u8,index-url=http://dennis/stream/stream-########.ts},mux=ts{use-key-frames},dst=C:\inetpub\wwwroot\stream\stream-########.ts}
Here, for a quick set up, is html code that accesses this stream:
<!doctype html>
<html>
<head></head>
<body>
<video width="320" height="240" controls="controls">
<source src="/stream/stream.m3u8" type="application/x-mpegURL" />
</video>
</body>
</html>
Whoever uses this, you will have to change all the variables in there. It uses "chunk files" which it puts onto the web server's wwwroot which can then be streamed by an iDevice or a Wii U.
I personally think that this would have it's best place on a ramdisk because the data rapidly changes and there isn't a lot of data around at one time.
As a general comment, sometimes such problems are caused by missing codecs,
fixed by installing a codecs pack such K-Lite.
But as your videos do play when downloaded, this isn't your problem.
The video example that fails for you uses Flash, but you prefer the YouTube HTML5 player.
More information is found in the article Force YouTube to Use the HTML5 Player:
YouTube's HTML5 player is great, but it's not enabled for all the
videos. Even if you go to youtube.com/html5 and join the HTML5 trial,
you'll find a lot of videos that use the Flash player. "Some videos
with ads are not yet supported (they will play in the Flash player),"
mentions the site.
There's a simple Greasemonkey script that forces YouTube to use the
HTML5 player for almost all the videos you watch at youtube.com. You
need to install Greasemonkey if you use Firefox or Tampermonkey if you
use Chrome, then click the "Install" button here.
For Chrome, use the old version from Sept 23.
The script works better in Firefox. If you install the script in Chrome, it will disable
the new Ajax interface, but everything else seems to work well.
Here's a video you can use to test the script. Please note that the script doesn't work for embedded videos.
EDIT : As userscripts.org has disappeared, I have modified the links to point to userscripts-mirror.org. In addition, I reproduce the script below :
// ==UserScript==
// @name ythtml5kiss
// @namespace mentormayhesset
// @description YouTube the HTML5 player [Firefox+Greasemonkey>=1.0]
// @include https://www.youtube.com/*
// @include http://www.youtube.com/*
// @exclude https://www.youtube.com/embed/*
// @exclude http://www.youtube.com/embed/*
// @version 3.1
// @run-at document-end
// @grant none
// ==/UserScript==
try{
window.ytspf = window.ytspf || {};
Object.defineProperty(window.ytspf,'enabled',{value:false});
ytplayer.config.html5=true;
delete ytplayer.config.args.ad3_module;
}catch(e){}
Best Answer
Ok, a friend was also experiencing the same issue and this apparently helped:
Go to https://www.youtube.com/html5
Ensure MSE i.e. Media Source Extensions (required for MPEG-DASH i.e. adaptive streaming) and H.264/WebM are supported by your browser († see below for more). Also if you right click any video and select Stats for nerds you can see whether DASH is supported or not:
Click the Request the HTML5 player button:
Now you should see this and can try viewing videos at resolutions above 360p:
† To enable MSE in Firefox go to about:config and ensure all of the following are set to True:
media.mediasource.enabled
media.mediasource.youtubeonly
media.mediasource.mp4.enabled
media.mediasource.webm.enabled
media.fragmented-mp4.exposed
media.fragmented-mp4.ffmpeg.enabled
(Actually even if either MP4 or WEBM is enabled that should suffice, but if one doesn't work try enabling the other.)