Пропускане към основното съдържание

Локално копие на видеофайлове на JW Player

Youtube-dl е конзолен инструмент, написан на python, за сваляне на медийни файлове, видео и звук, от Мрежата. Поддържа множество сайтове, като в общия случай синтаксисът е:

youtube-dl [options] <address>

Когато сваляме от Youtube, а и от много други сайтове, адресът е ясно изписан или имаме опция да го копираме/видим.


Когато обаче попаднем на сайт, който използва плеера на jwplayer.com, нямаме такава възможност. Адресът на страницата или десният клик върху плеера не ни дават повече информация, като в най-добрият случай ни препращат към JW Player.


В този случай трябва да подходим малко „по-творчески“ и да използваме инструментите за разработчици. В Chrome (chromium) това става чрез Menu > More tools > Developer tools или Ctrl+Shift+I. След това трябва да намерим секцията, в която става извикването на JW Player.

В този пример адресът на видеофайла е https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/index.m3u8


Извикването на този адрес с youtube-dl с параметър F ни дава информация за наличните потоци:


В случая най-добър е потокът с код на формата 7449, затова и него ще използваме:

angie@angie-laptop ~ $ youtube-dl https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/index.m3u8 -f 7449
[generic] index: Requesting header
[generic] index: Downloading m3u8 information
[download] Destination: index-index.mp4
ffmpeg version 3.3.3 Copyright (c) 2000-2017 the FFmpeg developers
 built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
 configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --disable-ffserver --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libtheora --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libwavpack --enable-nvenc --enable-libzimg
 libavutil      55. 58.100 / 55. 58.100
 libavcodec     57. 89.100 / 57. 89.100
 libavformat    57. 71.100 / 57. 71.100
 libavdevice    57.  6.100 / 57.  6.100
 libavfilter     6. 82.100 /  6. 82.100
 libavresample   3.  5.  0 /  3.  5.  0
 libswscale      4.  6.100 /  4.  6.100
 libswresample   2.  7.100 /  2.  7.100
 libpostproc    54.  5.100 / 54.  5.100
[hls,applehttp @ 0xb55db60] Opening 'https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/hls_2m_00000.ts' for reading
Input #0, hls,applehttp, from 'https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/hls_2m_.m3u8':
 Duration: 01:24:54.16, start: 1.420289, bitrate: 0 kb/s
 Program 0
   Metadata:
     variant_bitrate : 0
   Stream #0:0: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
   Metadata:
     variant_bitrate : 0
   Stream #0:1: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1024x576 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
   Metadata:
     variant_bitrate : 0
Output #0, mp4, to 'file:index-index.mp4.part':
 Metadata:
   encoder         : Lavf57.71.100
   Stream #0:0: Video: h264 (Main) ([33][0][0][0] / 0x0021), yuv420p(tv, bt709), 1024x576 [SAR 1:1 DAR 16:9], q=2-31, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
   Metadata:
     variant_bitrate : 0
   Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp
   Metadata:
     variant_bitrate : 0
Stream mapping:
 Stream #0:1 -> #0:0 (copy)
 Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[hls,applehttp @ 0xb55db60] Opening 'https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/hls_2m_00001.ts' for reading
[hls,applehttp @ 0xb55db60] Opening 'https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/hls_2m_00002.ts' for reading
….
[hls,applehttp @ 0xb55db60] Opening 'https://d2isnqcrxtt6yq.cloudfront.net/w_cybf05/hls_2m_00509.ts' for reading
frame=152670 fps= 55 q=-1.0 Lsize= 1254797kB time=01:24:54.15 bitrate=2017.9kbits/s speed=1.83x    
video:1171170kB audio:78097kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.442685%
[ffmpeg] Downloaded 1284912618 bytes
[download] 100% of 1.20GiB

Резултатният файл е записан под името index-index.mp4, като то е образувано от наличните метаданни. След окончателното сваляне, не е проблем неговото преименуване.
Успех!

Коментари

Популярни публикации от този блог

Проектиране на кемпер с VehiPlan

Оливер Колонж (Oliver Collonge) написва през 2011 г. втора версия на безплатната програма за дизайн на кемпери VehiPlan . Според автора тя е писана и трябва да работи под Windows 2000/Vista. Пробите показват, че работи нормално и под Windows 7 и 10. След като свалите архива (zip) можете да го разархивирате в C:\Windows\Program Files (x86)\. Програмата е с френски интерфейс и затова са необходими още няколко файла - vb6fr.dll , comdlg32.ocx & mscomctl.ocx . Тези файлове се поставят в C:\Windows\SysWOW64\. Comdlg.ocx се поставя в C:\Windows\System32\. След това е необходимо да се стартира Command Prompt (cmd - като администратор) и да се изпълни командата: regsvr32 %systemroot%\system32\comdlg32.ocx Ако възникне някакъв проблем, по-нова версия на файла може да се свали от тук . След това трябва да направим препратка към C:\Program Files (x86)\VehiPlan-2-0-0\VehiPlan.exe за по-удобно стартиране, която да поставим на работния плот или друго подходящо място. В архивния файл на програмат

Диаграма на Гант с електронна таблица

Диаграмата на Гант се състои от ленти, ориентирани успоредно на времевата ос. Всяка лента представлява отделна задача в проекта (вид работа), краищата ѝ — началния и крайния момент на изпълнението  ѝ, а дължината ѝ - продължителността на задачата. Тези диаграми могат да се използват и за други, не точно производствени, цели - например да покажат заетостта на учебна зала. Когато представянето на данните е регулярна задача може да се използва специализиран софтуер като GanttProject, но за инцидентна визуализация можем да се справим с „подръчни средства“. Сега ще покажем как с електронна таблица (LibreOffice Calc) ще визуализираме времето, за което няколко служители са работили във фирмата: Изходните данни са в няколко колони: Продължителността на трудовия стаж в дни определяме с формулата D2=C2-B2, като я копираме за всеки последващ ред. На 6-и ред съответно с функцията MIN и MAX определяме минимална и максимална дата в таблицата, а на 7-и ред - записваме начална (1.1.1989) и

MD5 и SHA-1 хеш алгоритми

MD5 (от „message-digest“) криптографският алгоритъм е създаден през 1991 г. от проф. Роналд Райвест и за първи път е публикуван през април 1992 г. Целта му е да замени компрометирания MD4 алгоритъм, който не е достатъчно сигурен. В последствие се оказва, че и MD5 не отговаря на съвременните изисквания за сигурност и може да бъде разбит. MD5 е построен върху конструкцията на Merkle–Damgård и генерира шестнайстично число със фиксиран размер от 32 символа (128 бита) за входящо съобщение с произволна дължина. Идеята е да се създаде уникален идентификатор за съобщението, който да гарантира неговата истинност. Например: MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6 Дори малка промяна, напр. добавя не точка в края на входящото съобщение би трябвало да генерира нов уникален идентификатор: MD5("The quick brown fox jumps over the lazy dog . ") = e4d909c290d0fb1ca068ffaddf22cbd0 Дължината на вход