Stream YouTube URL directly to MPlayer

yt () mplayer -fs -quiet $(youtube-dl -g "$1")
A function for streaming youtube to mplayer. The option "-g" for youtube-dl tells it to output the direct video URL, instead of downloading the video. "-fs" tells MPlayer to go FullScreen, and "-quit" makes it less verbose. Requires: youdube-dl ( http://bitbucket.org/rg3/youtube-dl/ ) (Tested in zsh)
Sample Output
20:33:16 Wed 29 [~] elfreak : pts/6 on machine
$ yt "http://www.youtube.com/watch?v=1ZvCqslpp6M"                                           
MPlayer SVN-r31774-4.5.0 (C) 2000-2010 MPlayer Team
158 audio & 340 video codecs

Playing http://www.youtube.com/get_video?video_id=1ZvCqslpp6M&t=vjVQa1PpcFOoqGwpVRIy9cfN57JrQuZ8rvLNfyXM5lQ=&eurl=&el=&ps=&asv=&fmt=22.
Resolving www.youtube.com for AF_INET6...

Couldn't resolve name for AF_INET6: www.youtube.com
Resolving www.youtube.com for AF_INET...
Connecting to server www.youtube.com[74.125.77.190]: 80...
Resolving v17.lscache8.c.youtube.com for AF_INET6...

Couldn't resolve name for AF_INET6: v17.lscache8.c.youtube.com
Resolving v17.lscache8.c.youtube.com for AF_INET...
Connecting to server v17.lscache8.c.youtube.com[74.125.8.82]: 80...
Resolving r17.ams04s02.c.youtube.com for AF_INET6...

Couldn't resolve name for AF_INET6: r17.ams04s02.c.youtube.com
Resolving r17.ams04s02.c.youtube.com for AF_INET...
Connecting to server r17.ams04s02.c.youtube.com[74.125.8.96]: 80...

Cache size set to 320 KBytes
Cache fill:  0.00% (0 bytes)   

libavformat file format detected.
[lavf] stream 0: audio (aac), -aid 0, -alang und
[lavf] stream 1: video (h264), -vid 0
VIDEO:  [H264]  1280x720  24bpp  29.917 fps  1105.0 kbps (134.9 kbyte/s)
Clip info:
 major_brand: mp42
 minor_version: 0
 compatible_brands: isomavc1mp42
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
AUDIO: 44100 Hz, 2 ch, s16le, 125.6 kbit/8.90% (ratio: 15697->176400)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
[AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [xv] 1280x720 => 1280x720 Planar YV12  [fs]
[ASPECT] Warning: No suitable new res found!
[ASPECT] Warning: No suitable new res found!

Exiting... (Quit)

16
By: elfreak
2010-09-29 18:48:19

What Others Think

now, if only I could define which monitor to output to...
zed · 428 weeks and 2 days ago
-xineramascreen 1 :)
zed · 428 weeks and 2 days ago
404 on your link
TheMightyBuzzard · 428 weeks and 2 days ago
@TheMightyBuzzard: Thank you, comandlinefu parsed the last parentheses as part of the URL. Now fixed.
elfreak · 428 weeks and 2 days ago
Unfortunately, this entry did not get listed as an alternative to the existing YouTube / MPlayer one-liners (my bad). Any way to do that now?
elfreak · 428 weeks and 2 days ago
should I firs make an alias from this comand? How should I invoke this? I will be appreciate for details.
noisy · 428 weeks and 2 days ago
yt is a function. You either add it (as it is) to your .bashrc / .zshrc, or just paste it in a terminal (it will be available for that session only). After that, as you can see from the sample output, you invoke it by typing yt and the YouTube URL: yt "http://www.youtube.com/watch?v=1ZvCqslpp6M" (The quotation signs are needed because zsh interprets the '?' as a special character)
elfreak · 428 weeks and 1 day ago
I don't get the usefulness of this command. I download videos for two reasons: 1. I one to keep them on my disc to watch them again later, and 2. When streaming on browser is slow. So I don't get the point of this. If you're going to stream it, then just see it on the browser.
conan · 428 weeks and 1 day ago
just what I was looking for. thanks :)
erikano · 428 weeks and 1 day ago
You use youtube-dl for those reasons, and if that's what you want, great ;) I made this function to avoid using YouTube's proprietary flash player. Here is a list, from the top of my head, of why: 1) I generally dislike flash, and I will do everything I can do to avoid it. 2) Fullscreen does not work well with my window manager (Xmonad). 3) I would like to be able to use my remote to control the video. 4) I want to be able to start a YouTube video on my mediapc (connected to the TV), from any of my computers. (I just SSH and give yt the link (probably going to make a script to automate that). 5) I want to be able to view YouTube videos without having X11. 6) I regularly do not want to store the videos, since I usually only watch them once. If it lags, then I will download it to /tmp. 7) I regularly do not want to wait while the video is downloading. The beauty with YouTube is that they have a massive collection of videos, instantly available to you. Bottom-line, if YouTube's proprietary flash player works for you, that's wonderful; otherwise, here's an alternative :)
elfreak · 428 weeks and 1 day ago
Wow! This is great! It works perfectly!
unixmonkey12633 · 428 weeks and 1 day ago
I have added "-vo null" option in mplayer so it does not stream video when I listen to music only! This way it does not fil in the cache quickly. (:
KoboYagee · 272 weeks and 5 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

Considering A New Car?

You should consider a Tesla. Get 6 Months Free Supercharging.

Free Supercharging

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: