Ако искам да гледам и записвам онлайн телевизии или други стриймове, често използвам инструмента rtmpdum. Много добър инструмент, но се използва в конзолен режим или през промпта на Windows. В тази статия ще покажа няколко примера, как използвам rtmpdump за да гледам и записвам български онлайн телевизии. Операционната система под която ще покажа примерите е LinuMint 18.1, която е Ubuntu базирана. Като исключим някои подробности по инсталацията, техниките са абсолютно същите и под Windows с тази разлика, че инструментите трябва да се намират в една директория.
Подготовка за дъмпване на онлайн видео стриймове
За начало е добре да инсталираме на flash-player за Ubuntu:
След това инсталираме rtmpdump и някакъв лек видео плеър, който позволява подаване на команди през конзолата. Mplayer или VLC са доста добър избор, затова аз ще използвам mplayer:
Да бучнем и един VLC плеър – ей така да има. Понякога с него картината е по-добре.
sudo apt-get install vlc
Създаваме една директория rtmpdump_tests в home-директорията и позиционираме конзолата в нея:
mkdir rtmpdump_tests
cd rtmpdump_tests
Вече сме готови да стартираме нашите rtmpdump тестове, но преди това нека да видим какви са основните аргументи, които ще ползваме от хелпа на програмата:
rtmpdump -h
--rtmp|-r url URL (e.g. rtmp://host[:port]/path)
--playpath|-y path Overrides the playpath parsed from rtmp url
--pageUrl|-p url Web URL of played programme
--app|-a app Name of target app on server
--swfVfy|-W url URL to player swf file, compute hash/size automatically
--flashVer|-f string Flash version string (default: "LNX 10,0,32,18")
--quiet|-q Suppresses all command output.
--flv|-o string FLV output file name, if the file name is - print stream to stdout
--debug|-z Debug level command output.
Мисля, че хелпа ясно показва кой аргумент за какво се ползва. Но най-добре да разгледаме няколко примера, които ще изяснят нагледно употребата им, но ще внеса малко пояснения: -r – адреса на RTMP-сървара -y – файла или името на стрийма, който плейва сървара -p – адреса на WEB-страницата от която се излъчва видеото -a – името на приложението, което плейва стрийма. Много често то е записано в адреса на rtmp-сървара. Примерно в rtmp://rd.xxxxdn.com:2016/fls, този аргумент е fls. -W – това е флаш плеъра с контролите, който плейва стрийма. Обикновено това е swf-файл. Понякога в този файл се съдържа и парола за отключване на стрийма. -f – флаш версията с която плейваме стрийма. Можем да използваме Windows (“WIN 18,0,0,232”) или Linux (“LNX 10,0,32,18”) версии. -q – не е важна команда. Пропуска показването на допълнителната информация при изпълнение на командите. Използвам я, за да виждам по-бързо това, което ме интересува. -o – записва стрийма в *.FLV файл, който в последствие можем да качим в Youtube или просто да си запазим някое тв-предаване във файл. -z – много важна команда. Често показва какъв ни е проблема, когато някой стрийм не иска да се дъмпне.
Дъмпване на онлайн телевизия – пример 1
Аз не гледам много телевизия, но напоследък ми се случва да си пускам OnAir. Харесват ми репортажите, публицистиката и предаванията за култура и спорт. Адреса за онлайн гледане на телевизията е: https://www.bgonair.bg/tvonline
Важно е да отбележим, че много често не е нужно да стартираме Wireshark, Fiddler или друга тежка бойна техника, за да дъмпнем някое поточно видео. Достатъчно да е поразгледаме сорс-кода на страницата, която излъчва видеото.
В случая ще прегледам сорс-кода и ще тестваме, дали параметрите в него са достатъчни. Ще използвам браузера Firefox. Отваряме сорса на https://www.bgonair.bg/tvonline , натискаме клавишната комбинация за търсене Ctrl+F и пишем rtmp.
Виждаме JavaScript код с параметри, които се подават на SWF-плеър, който стартира адрес някакво поточно RTMP-видео. Вероятно това е търсеното видео на OnAir. Раглеждайки този пасаж от сорс-кода на страницата, можем да изкараме следните параметри с които да стартираме rtmpdump:
-r rtmp://lb.cdn.bg:2006/fls
-y bonair.stream?at=66981d3d13decfde7efc2e1fa19eb2b4
-W https://i.cdn.bg/flash/jwplayer510/player.swf
-a fls/
Допълнително знаем и адреса на страница, която плейва видеото. Значи имаме и параметъра -p:
-p https://www.bgonair.bg/tvonline
Да направим първия тест с тези параметри, като задължително включим дебъгването, за да ни покаже, ако има някакъв проблем:
Мда… Неуспешен първи опит, но пък ни донесе ценна информация за грешката. Да разгледаме какво изплю конзолата:
Интересният ред е този:
redirect, STRING: rtmp://edge12.cdn.bg:2006/fls>
Той ни покзва, че rtmp-адреса в страницата е с пренасочване към адрес rtmp://edge12.cdn.bg:2006/fls. Ок, тогава да направим нов опит с този нов адрес. Този път изпълнени с енстусиазъм и увереност, премахваме дебъгването и закачаме потока с пайп към mplayer. Важно е да се отбележи, че понякога mplayer иска предваретелен кеш на потока, или пък не иска. Това зависи и от хардуера в машината. Обикновено слагам кеширането, което препоръчват разработчиците и слагам опцията –, която казва на mplayer, че приема пайп поток, а не файл.
В конзолата се вижда, че mplayer започва да кешира видеото. Трябва да изчакаме, докато кешира около 20%, след което се появява прозореца с видеото. От опит знам, че много често повечето параметри не са необходими. Достатъчно е да знаем само rtmp-сървара и името на стрийма. Нека да пробваме, като разкараме и кеширането на mplayer.
Предлагам да затвърдим материала, като дъмпнем още някоя телевизия. В този пример ще покажа как се дъмпва онлайн стрийма на BTV. Подхода е същият, дори може да се каже, че е още по-лесно. Отваряме страница с онлайн видеото: https://www.btv.bg/live/ и търсим в сорс-кода за стринг rtmp. Виждаме, че го има на няколко места, но нас ни интересува конкретно този пасаж:
Сега остава да сглобим командата за rtmpdump и да тестваме. Но ще използвам VLC-плеара, защото тоя mplayer нещо ме нерви с поведението си, множеството ръчни настройки и клавишни комбинации.
И то взе, че тръгна! 🙂 Дори нямаше пренасочване. Ако искаме да съхраним до файл, пак като по-горе, добавяме -o some_file.flv
Ето кратко видео и с упражнението – сваляне на онлайн видео от BTV с rtmpdump:
За следващото упражнение ще трябва да намеря нещо по-завързано.
Дъмпване на онлайн телевизия – пример 3
За този пример ще дъмпнем БНТ. Ще го направя под Windows, но тъй като знам, че стрийма от БНТ изисква токен (secure token – ключ за стартиране), за да се дъмпне, ще ни трябват някои допълнителни инструменти: – Firefox – Web браузер. Избирате се езика и версията – 32 или 64bit. – Firebug – добавка (addon) за Firefox, който ще ни помогне доста за разлистване на сорс кода на страницата. – JPEXS Free Flash Decompiler – този безплатен инструмент декомпилира *.SWF файлове до изходния сорс-код. – Notepad++ – текстов редактор, който може да търси в множество файлове.
Първа да разузнаем кои параметри можем да видим в сорс кода на страницата. Посещаваме с Firefox страницата на БНТ, която излъчва стрийма: https://tv.bnt.bg/bnt1/16×9/ Отваряме сорс кода и търсим за SWF. Оказва се, че няма такъв файл, значи е набутан в някой от JavaScript файловете и ще трябва по задълбочено ровичкане с Firebug. Натискаме F12 за да заредим панела на Firebug. Избираме показалката за “Inspect element” и кликаме върху флаш прозореца с видеото. След като се лисне сорса търсим в редовете JavaScript параметрите, които се подават на плеъра. Ето ги гадините:
До тук имаме следните параметри: -r rtmp://lb.cdn.bg:2020/fls -y bnt.stream?at=42516e922eacee82fb021dbc64b9165b -a fls/ -W https://cdn.bg/eflash/jwplayer510/player.swf -p https://tv.bnt.bg/bnt1/16×9/
Да направим първи тест, за да проверим, дали няма пренасочване или някакъв друг проблем:
Появи се secureToken стринг, което означава, че видеото има нужда от този токен (ключ, парола), за да се стартира. Как можем да разберем кой е този ключ и къде е този ключ. Понякога този токен се намира в HTML кода, друг път е набутан в SWF-файла. Има случаи при които видеото е защитено с двойка код + ключ. В един от следващите уроци ще покажа и случай, когато ключа е обфускейтнат и не се вижда никъде в явен вид, освен чрез хекс-редактор. В случая проверих и знам, че токена се намира в SWF-файла. За да го видим, първо трябва да декомпилираме SWF-файла до изходния му код. За тази цел сваляме swf-файла https://cdn.bg/eflash/jwplayer510/player.swf с някой даунлоадер или директно с браузера и го отваряме в програмата JPEXS Free Flash Decompiler. Слектираме директорията със ActionScript-овете и я екстрактваме:
Сега отваряме програмата Notepad++ и избираме от менюто Search -> Find in files…, избираме директорията в която да рови, като оставяме за филтър “*” за да прерови всички файлове. Критерий за търсене ни е “securetoken”. Попадаме на тези ценни редове:
БИНГО – B@1R1st1077! Точно това е, което ни трябва! Правим два-три опита с останалите параметри и виждаме, че тази команда стартира видеото:
Следващия стрийм трябва да е още по усложнен. Може би трябва да покажа, как се разбират обфускейтнатите пароли, въпреки, че това не е много за начинаещи. Не е сложно, но не съм сигурен, дали е за масово споделяне. Може би ще дам подсказки за по-любознателните.
Не знам, защо е толкова трудно да се намри безплатен немско-български офлайн речник. Търсих нещо читаво и не намерих. И за Android ситуацията е тъжна – безплатните речници, които ги има в GooglePlay са по-скоро рекламни платформи, а набора от думи е доста … семпъл. За това реших да си сглобя нещо с подръчни средства, което да интегрирам във вездесъщия GoldenDict.
Изтеглих два речника от Babylon:
– German-Bulgarian
– Bulgarian-German
Тези речници са малко криви и в тоя формат (BGL) е невъзможно да се редактират. Могат да се ползват в GoldenDict директно, но тъй като са компилирани в ANSI има досадни проблеми с умлаутите. За това ги прекомпилирах с Pyglossary – dictionary converter до обикновени текстови файлове, които мога да редактирам с регулярни изрази, за да се появят умлаутите. Промених енкодинга на файловете от ANSI до UTF-8 защото това е правилния енкодинг за юникод символите. След това прекомпилирах речниците до популярния StartDict-формат *.IFO, който се поддържа от повечето безплатни речникови платформи. Остана ми само да копирам речниците на съответните места.
Речниците с StarDict-формат могат да се изтеглят от тук: Bulgarian-German-Bulgarian_Dictionary.zip
Инсталиране на Немско-Български речник под Linux
Ще опиша процедурата за Ubuntu-базирани дистрибуции.
Първо ъпдейтваме хранилищата и изтегляме програмата GoldenDict:
Създаваме една папка dictdata в home-директорията в която да разархивираме речниците:
1
mkdir ~/dictdata
mkdir ~/dictdata
Изтегля се архива Bulgarian-German-Bulgarian_Dictionary.zip и се разархивира в папката dictdata.
След това отваряме програмата GoldenDict и правим следните настройки, за да заредим речниците:
Избираме от менюто Edit->Dictionaries, след това кликаме на бутона Add.. и браузваме до директорията с речниците – dictdata. След което натискаме бутона Rescan Now. Речниците вече са добавени. Ето как изглежда при мен:
Инсталиране на Немско-Български речник под Windows
Изтегля се архива Bulgarian-German-Bulgarian_Dictionary.zip и се разархивира в някоя директория, примерно C:\dictdata.
Изтегля се програмата GoldenDict за Windows. Може да се изтегли портабъл версия или стандартен инсталатор. Инсталираме програмата след това правим настройките, за да посочим кои речници да ползва: Редактиране->Речници…
Натискаме бутона Добавяне… и посочваме директорията в която сме разархивирали речниците:
След което натискаме бутона Повторно сканиране и след това бутона Ok.
И вече си имаме речниците:
Ако някой се затруднява с настройките на програмата, може да изтегли портабъл версия за Windows с добавени немско-български и английско-български речници от тук: GoldenDict_Portable-EN-BG,DE-BG.rar
Предполагам, че само трябва да се разархивира и да се ползва.
GoldenDict разполага с много настройки, които са доста удобни – последователността на речниците може да се променя, могат да се добавят саунд-файлове с изговарянето на думите и т.н. Страхотна програма, а на всичкото отгоре напълно безплатна!
Инсталиране на Немско-Български речник под Android
GoldenDict има страхотна безплатна версия и за Android – GoldenDict Free. По-добър речник за телефон/таблет лично аз не съм срещал до сега. Само трябва да си качим немско-българските речници. За целта изтегляме архива Bulgarian-German-Bulgarian_Dictionary.zip. След това създаваме една папка dictdata в главната директория на устройството ни (телефона или таблета).
Свързваме се с телефона/таблета по някакъв начин – с кабел или през WiFi. Аз ползвам ES File Explorer, който има една много полезна опция Network->Remote Manager и си работя през WiFi. Разархивираме архива с речниците в папката dictdata.
При стартиране на програмата тя сканира всички директории за речници. При мен автоматично намери речниците. Не се наложи да правя нищо допълнително. Ето немско-българския речник GoldenDict за Android в действие:
Peppermint ми стана любимо Linux дистро за флашката. Изключително леко и бързо. Инсталирам го Universal USB Installer с персистентно пространство, за да мога да инсталирам допълнителни програми и да го конфигурирам. Ето малко тарикатлъци: 1. Добавяне на applet за смяна на английски и бълграски:
И можете да си менкате кирилица или латиница с Shift+Alt (левите)
За улеснение може да се викне и аплета Keyboard layout switcher: Десен клик на лентата със задачите -> Add/Remove Panel Items -> Panel Applets -> +Add -> Keyboard layout switcher
2. Добавяне на Wbar панел (като тоя в MAC)
apt-get install wbar
apt-get install wbar
За улеснение при конфигурирането се изтегля WbarConf.
Инсталиране на WbarConf:
sudo ./install.sh /usr
sudo ./install.sh /usr
И вече го имаме в Menu -> Accsessories -> WbarConf
Настройките за позицията и т.н. са в File -> Settings
3. Автоматично стартиране на програми със зареждането на Peppermint
Повечето съвременни Linux дистрибуции разполагат с улеснен Autostart на програмите. По принцип това може да се види и редактира в сесията на десктопа. Но ние сме пичове и обичаме да го правим сами. Ще покажа как могат да се набутат горните 2 “програми” в autostart-а на Peppermint.
Отивате в ~/.config/autostart и създавате празен файл keyb.desktop. Разширението .desktop казва на операционната система да зареди този файл при зареждането на десктопа за текущия потребител. Вътре в keyb.desktop поставяме следното съдържание:
В крайна сметка, след рестарт, всичко си е на мястото и работи идеално:
Може би не е най-елегантното решение, но пък върши много добра работа.
Share and Enjoy !
Shares
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.