Marked as Duplicate
Marked as Duplicate

Reputation: 1249

Embedded YouTube video doesn't work on local server

I saw many questions like this asked on StackOverflow, but none of them had a working answer. My problem is that I can't embed a YouTube video, because a "This video is not available." comes up:

Running on local server

Here's what I know and have tried so far:

Upvotes: 24

Views: 65803

Answers (5)

Matthew Strasiotto
Matthew Strasiotto

Reputation: 369

Interestingly, I had a similar issue, but the opposite -

My youtube embed was working on my local dev server (http://localhost:8000), but when I opened the same page on production (eg https://example.com), I'd get "video unavailable" with no useful logs.

I believe I found the answer on a YouTube Community Support Thread:

James Peters 4580:

Actually found the issue here. The videos that were displaying this on embed had "Copyrighted" music playing in the background. YouTube apparently does not play videos like this while embedded. We had our user remove the audio and re-uploaded the video and everything is working fine now.

Hope this helps somebody.

The video I was embedding had music in the background, so I tried a random video from some youtuber's channel, and that video worked.

If anyone is having this problem (works on localhost, fails on an actual domain / behind https), it's possible that youtube is quietly blocking your embed for DRM reasons.

Upvotes: 2

Brett K.
Brett K.

Reputation: 569

Sergiy Shcherbina's answer helped me solve this issue. I was running my web server from a vm and accessing it through my local IP address.

It seems that you need to access your page that contains the embedded youtube player through a host name and NOT an IP address.

How I solved This for my dev environment

Before the change, I was accessing my web-page like this: http://192.168.x.x:3000/video and i would get 'video unavailable' errors for many videos that were verifiably 'embeddable'.

A Hacky word-around: I set a hostname for my VM in my hosts file and aliased my IP address to dev-vm. How to edit your host file

Now i access the page which has my embedded player like this: http://dev-vm:3000/video and now videos that previously gave me a 'video unavailable' error are now playing.

What a bizarre issue. I hope this helps some people who are having a similar issue.

Upvotes: 40

Sergiy Shcherbina
Sergiy Shcherbina

Reputation: 301

It works on sites with domain and does not work on sites reached by IP adress. Works when using on "localhost" and causes "The video is unavailable" when using "127.0.0.1". This is really strange...

Upvotes: 20

ReyAnthonyRenacia
ReyAnthonyRenacia

Reputation: 17613

This is not Youtube APIs fault. Tried running this on my localhost using "python -m SimpleHTTPServer 8080" and got it running easily. So, I'm concluding that you don't have a proper local web server. Also, "file:///C:/path/to/file.html" will never work because to use any of Google APIs, you need to have access to the internet.

enter image description here

Upvotes: 4

TKD21
TKD21

Reputation: 283

For some god-forsaken reason, known only to YouTube's engineers, some videos require an HTTP server to play.

If you're familiar with npm and Node.js, you can follow the instructions here so you can set up an HTTP server and try it out for yourself.

But please, if you do have the time and willingness, send a bug report about this issue by following the instructions here. This sort of issue should definitely not be happening.

Best of luck!

Upvotes: 5

Related Questions