Saya ingin mendapatkan URL menggunakan youtube-dl, dan opsi "simulasikan" -g
yang tidak mengunduh video.
Jadi saya memberi perintah berikut:
youtube-dl -g https://www.youtube.com/watch?v=k4JGSAmu4lg
Ini memberikan output berikut setelah 7 hingga 8 detik
https://r20---sn-cvh7zn7d.googlevideo.com/videoplayback?initcwndbps=1113000&mt=1408702970&requiressl=yes&ipbits=0&sver=3&fexp=901454%2C902408%2C919145%2C924626%2C927622%2C927904%2C931330%2C931983%2C934024%2C934030%2C934804%2C945118%2C945308%2C946023%2C951914&ratebypass=yes&signature=38F111D46D72FFC50B47D50B3C9A631099BF5F83.FA134C91F407989B95ACADC1F1F6946B8F18C158&upn=tU0u5t7A2Uw&sparams=id%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Cmm%2Cms%2Cmv%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&mm=31&expire=1408724634&id=o-AJNPuDp9TKMKiwzUwvSk76W7JdA0cx0bRSum9mPJJ7Vo&mv=u&source=youtube&ms=au&key=yt5&ip=115.113.1.50&itag=18
Tetapi masalahnya adalah butuh sekitar 7 hingga 8 detik untuk menanyakan URL.
Apakah ada cara agar bisa lebih cepat?
networking
performance
downloads
download-speed
youtube-dl
bharath kumar reddy bojja
sumber
sumber
Jawaban:
Waktu dihabiskan untuk melakukan pekerjaan
Perintah tidak menggantung atau menunggu sesuatu membuang-buang waktu,
itu sebenarnya bekerja yang membutuhkan waktu; Kemungkinan besar membutuhkan waktu dengan menambahkan beberapa penundaan jaringan kecil. Tapi bisa juga ada penundaan di sisi youtube, yang bertambah.
Itu hanya waktu yang diperlukan untuk mengunduh HTML yang diperlukan;
Perintah perlu membuat setidaknya dua permintaan HTTP, satu demi satu, dan mungkin lebih.
Jadi, jika ada yang lambat, sudah dikalikan dengan jumlah permintaan.
Bagi saya perlu 1,5 detik pada jalur yang sangat cepat - tidak jauh dari 8 detik.
Cara mengetahuinya
Saya akan menunjukkan perintah yang saya gunakan untuk mencari tahu:
Untuk membuat contoh lebih rapi, kami menggunakan variabel untuk URL:
Kami ingin mengukur durasi perintah; Menggunakan perintah
time
perlu berhati-hati untuk tidak mencampur perintah dan shell builtin. Kami menggunakan fungsi kecil untuk membuat garis lebih pendek:Perintah Anda menulis URL file video (terpotong ke 80 kolom):
Mari kita ukur waktu yang diperlukan untuk berjalan di komputer saya:
Oke, satu setengah detik. Lebih cepat dari pada pertanyaan, tapi tidak lebih cepat. Tapi bagaimana cara menghabiskan waktu? Mungkin itu mengunduh video dengan cara tersembunyi dan membuangnya? Video ini berukuran 11 menit dalam 360p. Mengunduhnya tanpa opsi membutuhkan waktu sekitar 13 - sepuluh kali lebih lama.
Perlu melihat lebih dekat, dengan opsi verbose
-v
:Oh, ada beberapa keterlambatan sebelum baris '[debug]' dicetak. Sepertinya
youtube-dl
menghabiskan waktu untuk pengaturan konfigurasi sendiri. Sekitar seperempat detik, bukan penundaan yang kita cari. Tetapi yang dapat kita pelajari darinya adalah bahwayoutube-dl
implementasinya sendiri mungkin lambat.Setelah pesan, tidak ada yang terjadi sampai URL hasil dicetak. Jadi kita masih belum melihat bagian yang menarik.
Pilihannya
-g
adalah untuk "mensimulasikan" unduhan video dalam arti bahwa ia melakukan bagian yang rumit untuk mengetahui URL semi-rahasia itu, mencetaknya, tetapi kemudian melewatkan unduhan yang sebenarnya pada akhirnya. Ada opsi serupa-s
yang tidak menampilkan URL, dan tampaknya serupa. Mari kita asumsikan itu cukup mirip jika membutuhkan waktu yang hampir bersamaan; Kita perlu memeriksanya.Ok,
-s
membutuhkan waktu yang sama-g
, jadi tidak apa-apa untuk menggantinya untuk pengujian.Lebih menarik adalah bahwa kita mendapat lebih banyak output sekarang. Dan itu dicetak dengan waktu yang menarik: Garis-garis dicetak dengan penundaan yang sama satu sama lain, jadi sepertinya mereka tentang tindakan yang sebenarnya mengambil waktu yang kita cari.
Dari pesan, setidaknya dua halaman web diunduh. Tetapi kita dapat mengasumsikan bahwa kata "halaman" tidak akan berarti satu permintaan HTTP dan satu dokumen HTML.
Apa yang kami pelajari?
Intinya adalah, pekerjaan program sebenarnya membutuhkan waktu, tidak menunggu sesuatu, atau menggantung.
Kami juga melihat beberapa langkah mengambil jumlah waktu yang sama. Tidak banyak yang bisa dihitung, jadi itu adalah perjalanan pulang-pergi dalam beberapa cara, bertambah.
Itu artinya, latensi koneksi kita hanya penting di sini. Throughput koneksi tidak relevan.
Jika Anda membuat koneksi internet Anda lebih cepat sehingga dapat mentransfer data dengan kecepatan ganda - itu tidak akan membantu sama sekali. Tetapi jika Anda bisa mendapatkan
ping
waktu yang lebih baik , itu akan membuatnya lebih cepat.Ini bukan tentang 'ping' kali ke penyedia layanan internet Anda; Waktu ping sampai ke YouTube itu yang penting - dan mungkin tidak mungkin diubah.
Menariknya, untuk langkah selanjutnya, mengunduh video, persyaratan untuk jalur cepat adalah kebalikannya: latensi tidak relevan sama sekali, dan throughput sangat penting.
Belum lelah?
Ingin lebih detail untuk memahami apa yang sebenarnya menghabiskan waktu?
Langkah selanjutnya adalah melacak koneksi HTTP; Saya menduga bahwa itu mungkin menunjukkan lebih banyak bolak-balik daripada dua, untuk pengalihan misalnya. Anda dapat menggunakan
wireshark
, atau proksi HTTP logging, ataustrace
hanya menghitung panggilan sistem untuk menghubungkan atau menulis.Untuk hari ini, kami berdua telah melihat cukup dalam ke dalam lubang jaringan kelinci.
sumber
Lakukan saja:
Sumber
sumber
Mungkin ada alasan lain.
youtube-dl
didistribusikan sebagai aplikasi Python zip. Setiap kali Anda menjalankannya, ia mengekstraknya lalu menjalankannya.Anda dapat mengekstraknya secara manual dengan
unzip
perintah. Kemudian jalankan__main__.py
seperti yang Anda jalankanyoutube-dl
. Pada komputer berdaya rendah, seperti Pi, yang secara nyata akan meningkatkan kinerja Anda.sumber