Saya mencari cara untuk menonton video YouTube di terminal (bukan di browser atau jendela lain, tapi di sana, dalam sesi bash apa pun).
Apakah ada cara sederhana untuk melakukan hal ini?
Saya membayangkan sesuatu seperti ini:
$ youtube <video-url>
Saya sudah tahu cara memutar video menggunakan mplayer
:
$ mplayer -vo caca local-file.avi
Namun, ini membuka jendela baru. Akan lebih asyik memainkannya di terminal.
Juga, itu harus kompatibel dengan tmux
sesi.
Saya bertanya pertanyaan lain bagaimana mencegah membuka jendela baru .
Bagi mereka yang bertanya-tanya di mana saya membutuhkan fungsi seperti itu, saya memulai proyek eksperimental bernama TmuxOS - dengan konsep bahwa semuanya harus berjalan di dalam tmux
sesi .
Jadi, memang saya membutuhkan pemutar video untuk video lokal dan jarak jauh. :-)
terminal
video
adobe-flash
Ionică Bizău
sumber
sumber
mpv <youtube url>
. Ini juga berfungsi untuk banyak situs video lainnya. Tapi ini membuka jendela baru.Jawaban:
Anda dapat mengunduh video dan / atau hanya audio lalu menonton / mendengarkannya menggunakan
youtube-dl
. Script ditulis dalam Python dan memanfaatkanffmpeg
saya percaya.Untuk mengunduh video, Anda cukup memberikan URL dari halaman yang Anda inginkan video dan skrip melakukan sisanya:
Anda kemudian dapat menggunakan
vlc
ataumplayer
menonton ini secara lokal:OK tapi saya ingin menonton video ini saat mereka streaming & di ASCII
Saya menemukan artikel blog ini berjudul: Pada ascii, youtube dan melepaskan yang menunjukkan metode yang saya diskusikan di ruang obrolan, terutama menggunakan
youtube-dl
sebagai "backend" yang dapat melakukan pengunduhan aliran YouTube dan kemudian mengarahkannya ke beberapa aplikasi lain.Artikel ini menunjukkan sedang dilakukan dengan
mplayer
:Video yang diunduh oleh
youtube-dl
dialihkan melalui STDOUT di atas-o -
,. Ada demo efeknya di sini .Dengan pemasangan perpustakaan tambahan, video ASCII dapat ditingkatkan lebih lanjut.
OK tapi saya ingin video di terminal saya yang sebenarnya?
Saya menemukan trik ini yang memungkinkan video untuk diputar di
xterm
dalam O'Reilly diartikulasikan berjudul: Tonton Video dalam ASCII Art .Hasil di atas dalam
xterm
jendela yang dibuka di mana video diputar.Jadi saya pikir, mengapa tidak menyatukan selai kacang dan cokelat seperti ini:
Ini hampir berhasil! Saya tidak yakin mengapa video tidak dapat diputar di jendela, tetapi sepertinya harus bisa. Jendela muncul dan mulai bermain tetapi kemudian ditutup. Saya melihat video selama beberapa detik dan kemudian tidak ada.
Mungkin hal di atas akan membuat Anda lebih dekat dengan solusi utama Anda, atau mungkin hanya perlu sedikit penyesuaian pada opsi.
Perpustakaan tambahan
Jika Anda telah
libcaca
menginstal (versi berwarnaaalib
) dan Anda mengurangi ukuran fontgnome-terminal
menjadi sesuatu yang sangat kecil, seperti say 3, perintah berikut akan menampilkan video ASCII yang jauh lebih baik secara langsung di dalam terminal:Terminal
Tampaknya pilihan terminal dapat membuat masalah besar apakah
mplayer
dapat bermain langsung di dalam terminal atau apakah itu membuka jendela terpisah. Caching jugamplayer
membuat perbedaan dramatis karena bisa bermain langsung di terminal tersebut.Dengan menggunakan perintah ini saya bisa bermain
terminator
, setidaknya untuk 1/4 video pertama sebelum terpotong:Versi berwarna menggunakan perintah ini:
Perintah yang sama ini juga bisa dimainkan di
gnome-terminal
&xterm
.CATATAN: Itu (dari Kiri ke Kanan)
xterm
,terminator
,gnome-terminal
, danterminology
.sumber
terminology
- dan bukan hanya dengan caca libs. Anda dapat menggunakan pelarian terminal untuk menentukan bagian yang dipetakan dari jendela terninal dan memutarnya di sana dengan def tinggi. Anda bahkan dapat mengatur video ke latar belakang Anda dan mengerjakannya.terminology
memahami URI juga - dapatkan tautan webm ke video youtube Anda dan hanyaprintf
ke layar seperti terminal prompt.tybg my.avi
bukan.printf
metodenya. Lakukantybg somefile | sed -n l
untuk melihat cara kerjanya - itu hanya menggunakan lolos terminal diperpanjang. Mereka didokumentasikan diman
halaman. Anda dapat melakukan hal yang sama dengannyaty{ls,cat}
. Tetapi aplikasi-aplikasi kecil itu hanyalah pembungkus demo lama dari yang asli dan mungkin tidak mampu. Lagi pula, jika versi Anda telah dibangun dalam beberapa bulan terakhir Anda mungkin ingin miniview sebanyak yang saya lakukan - lakukan ctrl + shift + h. Semua pencerahan hampir sama baiknya - itu sebabnya saya menyarankan Anda mencobanya baru-baru ini. Ini juga cepat gila.Jadi, dengan Terminology (mungkin hal terbaik yang pernah terjadi pada emulator terminal, by the way) pada saat penulisan ini , karya-karya berikut:
The
terminology
bit tertentu adalahthen
blokplay()
- yangprintf \033}...
line.terminology
menerima terminal tambahan lolos untuk mencetak media ke layar - agak seperti warna cepat tetapi juga video hi-def dan pada dasarnya apa pun yang Anda inginkan.Sisanya adalah sedikit
curl | sed
naskah yang:ytplay 'https://www.youtube.com/watch?v=${id}'
dan seterusnya...curl "$yturl" | grep url_encoded_fmt_stream_map
untuk melihat seluruh blok.grep
atas, Anda akan menemukan daftar di bidang batas"
-kutipan...stream_map: "
.%[[:hexdigit:]]\{2\}
pengodean ke dalam tautan yang berfungsi./tmp/vid.${mime-type}
tetapi jikaytplay
dipanggil dengan argumen kedua itu akan menafsirkannya sebagai nama file unduhan yang ditargetkan - sementara masih menambahkan ekstensi sesuai dengan tipe mime.terminology
's tempat media dalam latar belakang sekarang terminal melarikan diri, yang lain itu hanya menyerah dan meninggalkan Anda dengan pesan kesalahan semua dalam topi.\033}bt[LINK/FILE]\0
untuk bermain jendela penuh.pn
akan muncul ke jendela baru. Ada yang lain untuk membatasi area bermain secara geometris - misalnya hanya untuk sebagian jendela, misalnya.Ini hanya mengalami sedikit lebih dari pengujian yang sangat minimal , tetapi sejauh ini berhasil untuk setiap tautan tanpa gagal kecuali satu - dan karena saya tidak benar-benar tertarik menonton yang tidak bermain saya tidak mencoba mencari tahu Mengapa.
Walaupun ini bekerja untuk mereka semua, itu tidak serta-merta memainkan masing-masing - dan ini karena pada awalnya saya secara membuta menambahkan
.mp4
ekstensi ke file target tanpa memeriksa apakah itu benar. Mungkin saja yang saya tidak lihat sebelumnya hanya ini juga. Bagaimanapun, saya mengubahnya untuk mengatasinya.Seperti yang saya sebutkan sebelumnya, satu-satunya
terminology
bit spesifik ada di fungsi yang paling terakhir -play()
- dan jadi Anda dapat dengan mudah mengubahnya untuk melakukan apa pun yang Anda inginkan dengan file video unduhan / unduh - seperti menggunakannya denganmplayer
lib CACA di terminal lain, atau pop keluar kevlc
jendela atau apa pun. Tetapi jika Anda menyukai diri sendiri, Anda akan menontonnya di hi-defterminology
.Oh, dan terakhir, ini biasanya sangat cepat - kecepatan saya telah memaksimalkan bandwidth saya untuk durasi sejauh ini pada setiap upaya, tetapi
terminology
tidak perlu seluruh file untuk mulai memutarnya.Ini dia bekerja:
sumber
/tmp/vid.mp4
mungkin Anda harus menggunakanmktemp --suffix=.mp4
, bukan?terminology
'sgstreamer
backend sengaja dapat menjalankan kode dieksekusi dalam file video ... Mungkin. Saya meragukannya, tetapi saya tidak cukup mengatakannya dengan pasti. Lagi pula, saya lebih suka selalu menulis di atas file yang sama kecuali saya katakan sebaliknya, tetapi jika saya berusaha membuatnya lebih baik - seperti memilih ukuran dan semacamnya - saya pasti akan memperbaikinya juga.terminology
sama sekali - mereka akantmux
'spty
karenatmux
memiliki sisi master mereka intervensipty
danterminology
memiliki sisi mastertmux
' spty
. Untuk mengatasinya Anda bisa melakukan seperti ...PTTY=$(tty) tmux ...
maka ditmux
sesi seperti ...tybg >"$PTTY"
. Sebenarnya saya baru saja menjawab masalah yang sama yang Anda alami di sini kemarin. Script di atas seharusnya hanya berfungsi sepertiytplay ... >"$PTTY"
dalam multiplexer dengan cara itu.Ada tutorial untuk ini di youtube:
https://www.youtube.com/watch?v=QCuq0_nY3Xk
Menurut video itu yang berikut ini harus berfungsi:
Anda dapat membuat fungsi sederhana untuk tujuan ini:
sumber
mplayer <(youtube-dl -o - "https://www.youtube.com/watch?v=QCuq0_nY3Xk")
mplayer
secara otomatis memilih driver output terbaik, dan jika Anda menjalankan Xorg, itu mungkin akan memilihxv
driver. Coba tambahkan opsi berikut untukmplayer
memilih driver art konsol ASCII:-vo caca
.Dari https://github.com/mps-youtube/mps-youtube
sumber