在終端觀看 YouTube 影片
我正在尋找一種在終端中觀看 YouTube 影片的方法(不是在瀏覽器或其他視窗中,而是在任何 bash 會話中)。
有沒有一種簡單的方法可以做到這一點?
我想像這樣的事情:
$ youtube <video-url>
我已經知道如何使用以下方法播放影片
mplayer
:$ mplayer -vo caca local-file.avi
但是,這會打開一個新視窗。在終端播放它會很酷。
此外,它應該與
tmux
會話兼容。我問了另一個關於如何防止打開新視窗的問題。
對於那些想知道我在哪裡需要這樣的功能的人,我開始了一個名為TmuxOS的實驗項目——其概念是一切都應該在
tmux
會話中執行。所以,確實我需要一個用於本地和遠端影片的影片播放器。:-)
您可以下載影片和/或僅音頻,然後使用
youtube-dl
. 該腳本是用 Python 編寫的,並使用了ffmpeg
我相信。$ youtube-dl --help Usage: youtube-dl [options] url [url...] Options: General Options: -h, --help print this help text and exit --version print program version and exit -U, --update update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed) ... ...
要下載影片,您只需提供您想要播放影片的頁面的 URL,然後腳本會完成剩下的工作:
$ youtube-dl https://www.youtube.com/watch?v=OwvZemXJhF4 [youtube] Setting language [youtube] OwvZemXJhF4: Downloading webpage [youtube] OwvZemXJhF4: Downloading video info webpage [youtube] OwvZemXJhF4: Extracting video information [youtube] OwvZemXJhF4: Encrypted signatures detected. [youtube] OwvZemXJhF4: Downloading js player 7N [youtube] OwvZemXJhF4: Downloading js player 7N [download] Destination: Joe Nichols - Yeah (Audio)-OwvZemXJhF4.mp4 [download] 100% of 21.74MiB in 00:16
然後,您可以使用
vlc
或mplayer
在本地觀看這些:$ vlc "Joe Nichols - Yeah (Audio)-OwvZemXJhF4.mp4" VLC media player 2.1.5 Rincewind (revision 2.1.4-49-gdab6cb5) [0x1cd1118] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface. Fontconfig warning: FcPattern object size does not accept value "0" Fontconfig warning: FcPattern object size does not accept value "0" Fontconfig warning: FcPattern object size does not accept value "0" Fontconfig warning: FcPattern object size does not accept value "0"
好的,但我想觀看這些影片,因為它們是流式傳輸的和 ASCII 格式的
我發現這篇部落格文章標題為:On ascii, youtube and let go (Wayback Machine)展示了我在聊天室中討論的方法,主要
youtube-dl
用作“後端”,可以下載 YouTube 流,然後將其重定向到其他一些應用程序。本文顯示它正在完成
mplayer
:$ youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \ mplayer -vo aa -monitorpixelaspect 0.5 -
正在下載的影片
youtube-dl
通過上面的 STDOUT 重定向,-o -
. 這裡有一個效果的展示。
通過安裝額外的庫,可以進一步增強 ASCII 影片。
好的,但我想在我的實際終端中播放影片?
我發現這個技巧可以
xterm
在 O’Reilly 的文章中播放影片,標題為:Watch Videos in ASCII Art。$ xterm -fn 5x7 -geometry 250x80 -e "mplayer -vo aa:driver=curses j.mp4
以上結果
xterm
會打開一個播放影片的視窗。
所以我想,為什麼不把花生醬和巧克力像這樣放在一起:
$ xterm -fn 5x7 -geometry 250x80 -e \ "youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \ mplayer -vo aa:driver=curses -"
這幾乎可以工作!我不確定為什麼影片不能在視窗中播放,但看起來應該可以。視窗出現並開始播放,但隨後關閉。我看了幾秒鐘的影片,然後什麼也沒看到。
也許以上內容會讓您更接近最終解決方案,或者可能只需要對選項進行一些調整。
附加庫
如果您已
libcaca
安裝(的彩色版本aalib
)並且將字型大小減小gnome-terminal
到非常小的值,例如 3,則以下命令將直接在終端中顯示更好看的 ASCII 影片:$ CACA_DRIVER=ncurses mplayer -vo caca video.mp4
終端
似乎終端的選擇對於是否
mplayer
可以直接在終端內播放或是否打開單獨的視窗有很大影響。記憶體也對mplayer
能夠直接在終端中播放產生了巨大的影響。使用這個命令,我可以播放
terminator
,至少在影片的前 1/4 處,在它被剪掉之前:$ youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \ mplayer -cache 32767 -vo aa:driver=curses -
彩色版本使用了這個命令:
$ youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \ CACA_DRIVER=ncurses mplayer -cache 64000 -vo caca -
這些相同的命令也可以在
gnome-terminal
&中播放xterm
。
***注意:*那是(從左到右)
xterm
、、、和。terminator``gnome-terminal``terminology