Terminal

在終端觀看 YouTube 影片

  • October 9, 2021

我正在尋找一種在終端中觀看 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

然後,您可以使用vlcmplayer在本地觀看這些:

$ 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 -. 這裡有一個效果的展示

          SS#1

通過安裝額外的庫,可以進一步增強 ASCII 影片。

               SS#2

好的,但我想在我的實際終端中播放影片?

我發現這個技巧可以xterm在 O’Reilly 的文章中播放影片,標題為:Watch Videos in ASCII Art

$ xterm -fn 5x7 -geometry 250x80 -e "mplayer -vo aa:driver=curses j.mp4

以上結果xterm會打開一個播放影片的視窗。

   SS#3

所以我想,為什麼不把花生醬和巧克力像這樣放在一起:

$ 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

   SS#4

終端

似乎終端的選擇對於是否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

    ss蒙太奇

    ***注意:*那是(從左到右)xterm、、、和。terminator``gnome-terminal``terminology

引用自:https://unix.stackexchange.com/questions/160212