Simple TV Player – трикове с ini-файла

Урока е валиден за версия на плеъра 0.8 и по-нови.

Скоро пренаписах кода (то па един код) на плеара ми за БГ-телевизии Simple BG TV Player, като прехвърлих адресите на стриймовете във външен файл.
Тази промяна да доста свобода на действие, като позволява:

  • да се добавят нови стриймове и да се редактират старите
  • да се записва видеото
  • да се сменя дъмпера и плеара

В тази статия ще покажа някои от възможностите за редактиране на settings.ini файла.

Записване на стрийма във файл

За конкретния пример ще запиша стрим на телевизия BTV.
Като начало е добре да запазим копие на оригиналния файл settings.ini и да му дадем друго име, примерно settings_ORIGINAL.ini. Сега вече можем да мажем във settings.ini без притеснения, че може нещо да се обърка. Отваряме файла и намираме реда със стрийма на BTV. Копираме реда и го пействаме на нов ред. След това изтриваме последната част, която пайпва стрийма към mplayer и указваме на дъмпера да записва до файла с опцията “-o file.flv”. BTV сменят често адреса на стрийм сървара, затова ще покажа текущата работеща команда. Новия ред е добре да започва с ново име, примерно BTV RECORD или от сорта. Ето как изглежда при мен:

RECORD BTV=rtmpdump -r "rtmp://46.10.150.111:80/alpha" -a "alpha" -f "WIN 11,5,502,149" -W "http://www.btv.bg/static/bg/shared/app/flowplayer/flowplayer.rtmp-3.2.13.swf" -p "http://www.btv.bg/live/" -y "alpha" -o BTV.flv

Запазваме файла и стартираме програмата.
Ето кратко видео, как записвам видео стрийм на телевизия BTV:

Примерния settings.ini файл за този тест може да се изтегли от тук: settings.ini-Record_BTV.rar
Архива се разархивира в директорията на програмата и се заменя стария файл settings.ini.

Добавяне на нов стрийм, плейване с ffplay и запис до файл с ffmpeg

В списъка с телевизии ми липсва CityTV. Реших да го добавя, но ми се искаше да добавя и опция за запис на клиповете. Единствения проблем е, че CityTV използва формат, който не се поддържа от rtmpdump (всъщност не е точно така, но да не задълбаваме). За това трябваше да добавя нов плеър, който да плейва стрийма от сайта на City.bg. Изтеглих архив с пакета ffmpeg и разархивирах двата инструмента ffplay.exe и ffmpeg.exe. Нищо друго не ми трябва. След това се заиграх с settings.ini.

За да се добави тази нова телевизия се отваря оригиналния settings.ini в текстов редактор и се добавя един ред, който указва да програмата как да плейне City TV с плеъра ffplay:

CityTV=ffplay http://nodeb.gocaster.net:1935/CGL/_definst_/mp4:TODAYFM_TEST2/playlist.m3u8

Остана да се добави опция и за запис на тази телевизия. Това го правя с ffmpeg, като отново добавям един ред в settings.ini:

RECORD City=ffmpeg -i http://nodeb.gocaster.net:1935/CGL/_definst_/mp4:TODAYFM_TEST2/playlist.m3u8 -acodec copy -vcodec copy -f mp4 City.mp4

Ето и видеото, което показва как плейвам стрийма от City с ffplay и след това го записвам с ffmpeg:

Примерния settings.ini файл за този тест може да се изтегли от тук: settings.ini-Play_and_Record_video_City.rar
Архива се разархивира в директорията на програмата и се заменя стария файл settings.ini.

ВАЖНО: При запис на поточното видео е важно конзолния прозорец да се затвори с командата Ctrl + C – това ще затвори правилно записваното видео. Ако този прозорец се остави отворен и се затвори само прозореца на програмата, то записа ще продължи докато компютъра не се изключи!

Програмата е изключително простичка. Всъщност е GUI с възможност за ползване на различни инструменти за плейване и запис на поточно видео. Но пък мен ми е много удобна.

rtmpdump tutorial – урок за начинаещи

Ако искам да гледам и записвам онлайн телевизии или други стриймове, често използвам инструмента rtmpdum. Много добър инструмент, но се използва в конзолен режим или през промпта на Windows. В тази статия ще покажа няколко примера, как използвам rtmpdump за да гледам и записвам български онлайн телевизии. Операционната система под която ще покажа примерите е LinuMint 18.1, която е Ubuntu базирана. Като исключим някои подробности по инсталацията, техниките са абсолютно същите и под Windows с тази разлика, че инструментите трябва да се намират в една директория.

Подготовка за дъмпване на онлайн видео стриймове

За начало е добре да инсталираме на flash-player за Ubuntu:

1
2
3
sudo apt-add-repository multiverse
sudo apt-get update
sudo apt-get install flashplugin-installer

След това инсталираме rtmpdump и някакъв лек видео плеър, който позволява подаване на команди през конзолата. Mplayer или VLC са доста добър избор, затова аз ще използвам mplayer:

1
2
sudo apt-get install rtmpdump
sudo apt-get install mplayer

Да бучнем и един VLC плеър – ей така да има. Понякога с него картината е по-добре.

1
sudo apt-get install vlc

Създаваме една директория rtmpdump_tests в home-директорията и позиционираме конзолата в нея:

1
2
mkdir rtmpdump_tests
cd rtmpdump_tests

Вече сме готови да стартираме нашите rtmpdump тестове, но преди това нека да видим какви са основните аргументи, които ще ползваме от хелпа на програмата:

1
2
3
4
5
6
7
8
9
10
11
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. Харесват ми репортажите, публицистиката и предаванията за култура и спорт.
Адреса за онлайн гледане на телевизията е: http://www.bgonair.bg/tvonline

Важно е да отбележим, че много често не е нужно да стартираме Wireshark, Fiddler или друга тежка бойна техника, за да дъмпнем някое поточно видео. Достатъчно да е поразгледаме сорс-кода на страницата, която излъчва видеото.

В случая ще прегледам сорс-кода и ще тестваме, дали параметрите в него са достатъчни. Ще използвам браузера Firefox. Отваряме сорса на http://www.bgonair.bg/tvonline , натискаме клавишната комбинация за търсене Ctrl+F и пишем rtmp.
Web page source - rtmp address
Виждаме JavaScript код с параметри, които се подават на SWF-плеър, който стартира адрес някакво поточно RTMP-видео. Вероятно това е търсеното видео на OnAir. Раглеждайки този пасаж от сорс-кода на страницата, можем да изкараме следните параметри с които да стартираме rtmpdump:

1
2
3
4
-r rtmp://lb.cdn.bg:2006/fls
-y bonair.stream?at=66981d3d13decfde7efc2e1fa19eb2b4
-W http://i.cdn.bg/flash/jwplayer510/player.swf
-a fls/

Допълнително знаем и адреса на страница, която плейва видеото. Значи имаме и параметъра -p:

1
-p http://www.bgonair.bg/tvonline

Да направим първия тест с тези параметри, като задължително включим дебъгването, за да ни покаже, ако има някакъв проблем:

rtmpdump -r rtmp://lb.cdn.bg:2006/fls -y bonair.stream?at=66981d3d13decfde7efc2e1fa19eb2b4 -a fls/ -W http://i.cdn.bg/flash/jwplayer510/player.swf -p http://www.bgonair.bg/tvonline -z

Мда… Неуспешен първи опит, но пък ни донесе ценна информация за грешката. Да разгледаме какво изплю конзолата:
rtmpdump - debug error
Интересният ред е този:

1
redirect, STRING:	rtmp://edge12.cdn.bg:2006/fls>

Той ни покзва, че rtmp-адреса в страницата е с пренасочване към адрес rtmp://edge12.cdn.bg:2006/fls. Ок, тогава да направим нов опит с този нов адрес. Този път изпълнени с енстусиазъм и увереност, премахваме дебъгването и закачаме потока с пайп към mplayer. Важно е да се отбележи, че понякога mplayer иска предваретелен кеш на потока, или пък не иска. Това зависи и от хардуера в машината. Обикновено слагам кеширането, което препоръчват разработчиците и слагам опцията , която казва на mplayer, че приема пайп поток, а не файл.

rtmpdump -r rtmp://edge12.cdn.bg:2006/fls -y bonair.stream?at=66981d3d13decfde7efc2e1fa19eb2b4 -a fls/ -W http://i.cdn.bg/flash/jwplayer510/player.swf -p http://www.bgonair.bg/tvonline | mplayer -cache 8192 -

В конзолата се вижда, че mplayer започва да кешира видеото. Трябва да изчакаме, докато кешира около 20%, след което се появява прозореца с видеото.
От опит знам, че много често повечето параметри не са необходими. Достатъчно е да знаем само rtmp-сървара и името на стрийма. Нека да пробваме, като разкараме и кеширането на mplayer.

rtmpdump -r rtmp://edge12.cdn.bg:2006/fls -y bonair.stream?at=66981d3d13decfde7efc2e1fa19eb2b4 | mplayer -

Плучи се една сравнително късичка команда. При мен работи, като има само едно леко забавяне в началото.

Ако искаме да запазим видеото във файл, тогава премахваме пайпа към mplayer и го заменяме с командата -o some_file.flv.

rtmpdump -r rtmp://edge12.cdn.bg:2006/fls -y bonair.stream?at=66981d3d13decfde7efc2e1fa19eb2b4 -o onair.flv

Видео, което показва стъпките в този пример:

Дъмпване на онлайн телевизия – пример 2

Предлагам да затвърдим материала, като дъмпнем още някоя телевизия. В този пример ще покажа как се дъмпва онлайн стрийма на BTV. Подхода е същият, дори може да се каже, че е още по-лесно. Отваряме страница с онлайн видеото: http://www.btv.bg/live/ и търсим в сорс-кода за стринг rtmp. Виждаме, че го има на няколко места, но нас ни интересува конкретно този пасаж:
BTV rtmpdump
Сега остава да сглобим командата за rtmpdump и да тестваме. Но ще използвам VLC-плеара, защото тоя mplayer нещо ме нерви с поведението си, множеството ръчни настройки и клавишни комбинации.

rtmpdump -r rtmp://hls.btv.bg.sof.cmestatic.com:80/alpha -y alpha | vlc -

И то взе, че тръгна! 🙂 Дори нямаше пренасочване.
Ако искаме да съхраним до файл, пак като по-горе, добавяме -o some_file.flv

Ето кратко видео и с упражнението – сваляне на онлайн видео от BTV с rtmpdump:

За следващото упражнение ще трябва да намеря нещо по-завързано.

Дъмпване на онлайн телевизия – пример 3

За този пример ще дъмпнем БНТ. Ще го направя под Windows, но тъй като знам, че стрийма от БНТ изисква токен (secure token – ключ за стартиране), за да се дъмпне, ще ни трябват някои допълнителни инструменти:
Firefox – Web браузер. Избирате се езика и версията – 32 или 64bit.
Firebug – добавка (addon) за Firefox, който ще ни помогне доста за разлистване на сорс кода на страницата.
JPEXS Free Flash Decompiler – този безплатен инструмент декомпилира *.SWF файлове до изходния сорс-код.
Notepad++ – текстов редактор, който може да търси в множество файлове.

Първа да разузнаем кои параметри можем да видим в сорс кода на страницата. Посещаваме с Firefox страницата на БНТ, която излъчва стрийма: http://tv.bnt.bg/bnt1/16×9/
Отваряме сорс кода и търсим за SWF. Оказва се, че няма такъв файл, значи е набутан в някой от JavaScript файловете и ще трябва по задълбочено ровичкане с Firebug.
Натискаме F12 за да заредим панела на Firebug. Избираме показалката за “Inspect element” и кликаме върху флаш прозореца с видеото.
След като се лисне сорса търсим в редовете JavaScript параметрите, които се подават на плеъра. Ето ги гадините:
rtmp firebug parameters
До тук имаме следните параметри:
-r rtmp://lb.cdn.bg:2020/fls
-y bnt.stream?at=42516e922eacee82fb021dbc64b9165b
-a fls/
-W http://cdn.bg/eflash/jwplayer510/player.swf
-p http://tv.bnt.bg/bnt1/16×9/

Да направим първи тест, за да проверим, дали няма пренасочване или някакъв друг проблем:

rtmpdump -r rtmp://lb.cdn.bg:2020/fls -y bnt.stream?at=42516e922eacee82fb021dbc64b9165b -z

Резултата е:

DEBUG: Property: <Name:              level, STRING:     error>
DEBUG: Property: <Name:               code, STRING:     NetConnection.Connect.Rejected>
DEBUG: Property: <Name:        description, STRING:     Connection failed: Application rejected connection.>
DEBUG: Property: <Name:                 ex, OBJECT>
DEBUG: (object begin)
DEBUG: Property: <Name:           redirect, STRING:     rtmp://edge11.cdn.bg:2020/fls>

Виждаме, че имаме пренасочване с redirect към rtmp://edge11.cdn.bg:2020/fls. Тогава да заменим адресите и да пробваме пак:

rtmpdump -r rtmp://edge11.cdn.bg:2020/fls -y bnt.stream?at=42516e922eacee82fb021dbc64b9165b -z

Този път се получи друга грешка:

DEBUG: Property: <Name:              level, STRING:     error>
DEBUG: Property: <Name:               code, STRING:     NetConnection.Connect.Rejected>
DEBUG: Property: <Name:        description, STRING:     Connection failed: Application rejected connection.>
DEBUG: Property: <Name:           clientid, NUMBER:     714507177.00>
DEBUG: Property: <Name:        secureToken, STRING:     a8a4a8dcd4b74063e45148602dfebe8a4d24717532878cfaa2a1e87aaa0e58b48f0df073>

Появи се secureToken стринг, което означава, че видеото има нужда от този токен (ключ, парола), за да се стартира.
Как можем да разберем кой е този ключ и къде е този ключ. Понякога този токен се намира в HTML кода, друг път е набутан в SWF-файла. Има случаи при които видеото е защитено с двойка код + ключ. В един от следващите уроци ще покажа и случай, когато ключа е обфускейтнат и не се вижда никъде в явен вид, освен чрез хекс-редактор. В случая проверих и знам, че токена се намира в SWF-файла. За да го видим, първо трябва да декомпилираме SWF-файла до изходния му код. За тази цел сваляме swf-файла http://cdn.bg/eflash/jwplayer510/player.swf с някой даунлоадер или директно с браузера и го отваряме в програмата JPEXS Free Flash Decompiler.
Слектираме директорията със ActionScript-овете и я екстрактваме:

ActionScript export

Сега отваряме програмата Notepad++ и избираме от менюто Search -> Find in files…, избираме директорията в която да рови, като оставяме за филтър “*” за да прерови всички файлове. Критерий за търсене ни е “securetoken”. Попадаме на тези ценни редове:
secureToken
БИНГО – B@1R1st1077! Точно това е, което ни трябва!
Правим два-три опита с останалите параметри и виждаме, че тази команда стартира видеото:

rtmpdump -r rtmp://edge11.cdn.bg:2020/fls -y bnt.stream?at=42516e922eacee82fb021dbc64b9165b -p http://tv.bnt.bg/bnt1/16x9/ -T B@1R1st1077 | mplayer -

Ето и видеото, което показва как се дъмпва БНТ:

Следващия стрийм трябва да е още по усложнен. Може би трябва да покажа, как се разбират обфускейтнатите пароли, въпреки, че това не е много за начинаещи. Не е сложно, но не съм сигурен, дали е за масово споделяне. Може би ще дам подсказки за по-любознателните.

Дъмпване на онлайн телевизия – пример 4

[TODO]

Гледане на онлайн филми с български субтитри – Kodi + 1Channel

1Channel install and add subtitles
От както TV Box устройствата станаха толкова популярни и се нароиха различни марки и модели SMART телевизори, става бум и на методите за прихващане на онлайн стрийминг видео от сайтове за филми. В този туториал ще се поитам да да покажа, как да си настроите Kodi, за да можете да гледате най-новите филми с български субтитри. Ще покажа и как точно се закачат добавките за субтитри за сайтовете:
http://subsunacs.net/
http://subs.sab.bz/
http://opensubtitles.org/
Ако все още нямате инсталиран Kodi, поправете тази фатална грешка. В друг мой туториал може да се види инсталацията на Kodi и закачането на добавка за БГ Телевизии.

В този урок ще използвам добавката 1Channel, която позволява свързване към Custom Domain-и с филми от PrimeWire.ag.
Метода е валиден за всички устройства, позволяващи инсталиране на Kodi – TV Box, Android таблети и телефони, SMART телевизори, Windows PC и т.н..
Най-голяма трудност е да се намерят отключени Custom Domains. Ето няколко, които съм тествал и работят към днешна дата:
http://www.letmewatchthis.so/ (сайт за филми, използван в урока)
http://primewire.org/
http://www.primewirex.com
http://www.letmewatchthis.ch/

— TODO: Допиши си tutoriala —

Ето кратко видео, което показва стъпките за инсталиране и стартиране на 1Channel:


Видеото може да се изтегли от тук.

PS: PrimeWire и 1Channel не са единствената алтернатива за гледане на онлайн филми. Лично мен напоследък повече ме кефи Project Free Tv. Как се инсталира, можете да се види тук.

Гледане на български ТВ канали с Kodi

Гледане на българска телевизия с Kodi
От статистиката на блога ми забелязвам, че много хора се интересуват как могат да гледат български телевизии през интернет – Канал 1, бТВ, Нова ТВ, Канал 3, ТВ7, Нова ТВ, Евроком и др.. Преди време бях писал малка програмка за целта, както и туториал за прихващане на стриймове. В тази статия ще се опитам да предложа много по-лесен вариант за гледане на BG телевизии за различни устройства благодарение на програмата Kodi. Kodi е мултимедийна платформа за различни операционни системи (Windows, Apple, Android, Linux и др.), която поддържа плъгини и може да се надстройва според нуждите на потребителя. Програмата се и използва като база за някои марки SMART телевизори. Ще се опитам да направя серия от уроци, които показват възможностите на програмата, като започна с най-важното – гледане на популярните български телевизии.

За начало ще ни е необходимо да си свалим програмата. В момента съм под Windows и ще използвам инсталатора за тази ОС. Но стъпките, показани в урока, важат за всички операционни системи, на които може да се инсталира последната стабилна версия на Kodi Isengard 15.2. Свалете си програмата от тук:
http://kodi.tv/download/
Желателното е да свалите версията, която описвам, но ако се чувствате сигурни, можете да свалите и по-нова версия. Стъпките ще са аналогични.
След валянето на програмата я инсталираме. Следва закачането на най-важното хранилище за добавки SuperRepo. Адреса на хранилището е: http://srp.nu
Тази информация е достатъчна за плейване на популярните български ТВ канали. От тук насетне изгледайте приложеното видео, което в рамките на 4 минути описва всички необходими стъпки:


В следващия урок ще се опитам да покажа, как да се закачи 1Channel, за да се гледат филми с български субтитри. Урока може да се види тук:
Гледане на онлайн филми с български субтитри – Kodi + 1Channel

ПС: Ако сте олдскуул тип, който харесва прости програмки, които вършат работата, можете да хвърлите един поглед на един мой стар проект:
Simple BG TV Player – прост rtmpdump плеар за гледане на BG-телевизии.

Jason Derulo dance steps

Дъщеря ми много си пада по бай Jason Derulo. Накара ме да и кача песните му таблета и всеки ден го гледа. Сега ме накара, да и изрежа от клиповете стъпките на hip-hop-а му… е, нямах избор :).
Опитах се да мина тънко, като пусна търсения за jason derulo dance steps, обаче нищо конкретно не намерих. Затова си поиграх и направих това кратко видео. Дано да и е достатъчно, щото почнах и аз да повтарям Wiggle, wiggle 🙂

Лично мен ме кефи парчето Trumpets и на пасажите с “get undress” го увеличавам малко, та барем булката се сети. Не че хваща дикиш, ам песента си ме радва.
За създаване на видеото използвах ffmpeg.

Simple BG TV Player – прост rtmpdump плеар за гледане на BG-телевизии

Програмата я написах една вечер, когато се прецака кабелната в къщи. Използвал съм rtmpdump за прихващане на стриймовете. Плеъра, който излъчва стрийма е Mplayer за Windows – беше най-малкия плеър, който намерих и който може да излъчва поточно rtmp видео. Писал съм го на AutoIt 3, че за такива нужди е възможно най-лекия и бърз вариант.
Към момента може да плейва следните телевизии:

  • BTV
  • NovaTV
  • TV Europa
  • БНТ
  • БНТ HD
  • БНТ 2
  • Kanal 3
  • Sportal

Не, че това са ми любимите телевизии, но тия ми се мернаха, като търсих с какво да попълня списъка.
При стартиране на някоя от телевизиите се отваря допълнителен прозорец, който показва буферирането на стрийма и разни други интересни неща. Прозореца лесно може да се скрие.
Програмата работи под 64bit Win. Тествана е под WinXP. изглежда така:
simple bg tv player - онлайн телевизии
Изтегляне 64bit (в архива е и сорскода): Simple BG TV Player – v.0.8.beta.rar
Изтегляне на 32bit версия: Simple BG TV Player – v.0.8.beta-x86.rar
Старата версия все още е достъпна от тук: v.0.7.rar

Нямам време за постоянни ъпдейти на стриймовете, така че се извинявам на всички, които ми писаха да оправя кода. Току що във v.0.4 от (13.03.2016) оправих всички стриймове. Добавих някои канали – БНТ, БНТ HD, БНТ2, SPortal. Махнах City TV и Алфа. Във v.0.5 оправих объркването на БНТ с БНТ HD. От v.0.5 трябва да са добавени и двете. Във версия 0.6 е променен сървара за BTV.

Важно! 03.01.2017 Във v.0.8.beta е променен напълно кода. Адресите на стриймовете, както и някои настройки на програмата са изнесени във външен ini-файл: settings.ini. Това позволява всеки потребител сам да добавя или премахва телевизии от списъка, без да се налага прекомпилиране от сорс-код. Пък и хората имат различни интереси по отношение на телевизиите, плюс това не всички са програмисти. Кода е лек и кратък, на принципа – “направи го елементарно, но да върши работа”. Beta – това го сложих, защото ini-файла се зарежда релативно и все още нямам отзиви, дали програмата се плейва нормално при потребителите. Ето изглед от ini-файла:
Simple TV Player - настройки
INI-файла позволява да се замени плеъра (примерно с VLC), както и дъмпера (примерн с ffmpeg). Редактира се с най-обикновен текстов редактор.
Ето една статия, която показва възможностите за редакция на settings.ini:
Simple TV Player – трикове с ini-файла

А това е ini-файл с добавена телевизия BNT World: settings_v.8+BNT_Wolrd.ini.zip

ПС: Програмата е публикувана с образователна цел. Можете да я теглите, променяте, публикувате и използвате целия код или части от него. Основната ми цел, беше да се запозная по-добре със онлайн-стриймването и начините на защитата му.
ПС2: Ако искате да гледате български телевизии под Android устройство, погледнете статията ми: Гледане на български телевизии (БНТ, bTV, Nova…) под Android с XMTV Player

За любителите на rtmpdump-инга имам Новогодишен подарък – серия от кратки урочета, които се надявам да доразвия, като запазя простотата и достъпността:
rtmpdump tutorial – урок за начинаещи
———-
Nota bene:
Можете да погледнете и статията Гледане на български ТВ канали с Kodi. Добавил съм кратко видео, което показва стъпките от инсталацията под Windows до гледането на най-гледаните български ТВ-канали. Програмата може да се инсталира на всички популярни устройства и операционни системи, включително Android и Apple.

Изряване на сцена от филм и конвертиране до GIF-анимация

Малко се позабавлявах да изрязвам gif-чета от AVI-филм.
Необходими инструменти:
ffmpeg за Windows
Faststone Image Viewer
GifSicle за Windows
bash за Windows

Избираме си сцена от филм и виждаме времето на сцената, плюс-минус 1-2 секунди. Аз си избрах Mr. Brooks с бай Кевин Костнър. Плейването можем да го направим с всеки плеър. В случая използвам GOM-player:
AVI to Gif animation
Изрязваме сцената до jpeg, като използваме ffmpeg, но преди това влизаме в Bash, за да използваме брояч на файловете:
AVI to Gif animation
Ето и командата към ffmpeg:

ffmpeg -i "Mr.Brooks.2007.BRRip.XviD.AC3-SANTi.avi" -qscale 0 -r 23 -ss 00:02:01 -t 3 -f image2 foo-%03d.jpg

Изпълнението на горната команда ще извлече по 23 кадъра в секунда от AVI-файла и ще ги конвертира до jpg-картинки. Отваряме с FastStone директорията и изтриваме всички ненужни файлове. След това обработваме останалите файлове в Bach-режим, като си настройваме колко да се отреже от картината, намаляме размера и конвертираме всички файлове до GIF-картинки:
AVI to Gif animation

AVI to Gif animation

Предварително си записваме региона от сцената, който ни интересува. В случая режа регион 424x384px, като започвам от координати x=72, y=0:
004_01

AVI to Gif animation

AVI to Gif animation

AVI to Gif animation

AVI to Gif animation

След това използваме GifSicle, за да съединим всички GIF-файлове в един общ анимиран файл. Трябва да зададем delay (-d) мили секунди за всеки кадър, командата да цикли за всички GIF-ове последователно (-l *.gif), и името на изходния файл (-o Kostner.gif):

gifsicle -d 4 -l *.gif -o Kostner.gif

В резултат получаваме една прилична анимация, с която да се бъзикаме със съфорумците :):
AVI to Gif animation

А ето и още няколко рязаници от “Z-та световна война” с на Брат Пит бат му:
AVI to Gif animation

AVI to Gif animation

AVI to Gif animation

Ето и кратко видео, което показва подробно стъпките за правене на AVI to GIF animation:


Ако сървара не иска да пусне видеото, може да се изтегли и от тук:
Avi to GIF movie tutorial

==================

Update: 09.12.2016

Има и много по-прост начин за правене на подобни GIF-чета, като се използва само ffmpeg:

ffmpeg -i video.mkv -ss 416 -t 2 -filter:v "crop=500:360:240:30, scale=320:-1" -loop 0 -final_delay -1 out.gif

, където:
-ss 416 – старт на отрязъка. В случая 416-та секунда от видеото.
-t 2 – продължителност на отрязъка. В случая 2 секунди.
crop=500:360:240:30 – изрязва прозорец от горния ляв ъгъл с размери ШxВ: 500x360px. Започва да реже по X и Y: 240px по X и 30px по Y.
scale=320:-1 – преоразмерява видеото на ширина, като запазва съотношението по височина.
-loop 0 и -final_delay -1 – са за да стане видеото на непрекъсната GIF-анимация.

Един пример на анимация, която направих по този начин:

ffmpeg animate gif

rtmpdump – дъмпване на онлайн телевизия – БНТ 1, БТВ и Нова ТВ

На тази тема има публикуван нов материал с включени видео-уроци. Можете да го прочетете тук:
rtmpdump tutorial – урок за начинаещи

Заиграх се малко с rtmpdump. Много готин инструмент, с който може да се прихваща защитено видео. За да си набавя параметрите за дъмпа, използвах Wireshark.
Дъмп за гледане на БНТ1 през VLC:
rtmpdump -r “rtmp://edge2.evolink.net:2020/fls” -a “fls” -f “WIN 11,5,502,149” -W “http://cdn.bg/flash/jwplayer510/player.swf” -p “http://cdn.bg/live/4eViE8vGzI” -T “B@1R1st1077” -y “bnt.stream” –quiet | vlc –

Update [14.03.2016] Променен е стрийма на БНТ1. По долу е работещ към днешна дата код. БНТ1 разпознава само БГ IP-та, затова от чужбина трябва да се ползва прокси.

rtmpdump -r "rtmp://edge2.cdn.bg:2020/fls" -a "fls/" -W "http://i.cdn.bg/eflash/jwplayer510/player.swf" -f "WIN 18,0,0,232" -p "http://cdn.bg/live/4eViE8vGzI" -y "bnt.stream?at=22c035726e941f171f6676751141b491" -T "B@1R1st1077" --quiet | vlc -

БНТ HD

rtmpdump -r "rtmp://edge2.cdn.bg:2020/fls" -a "fls/" -W "http://i.cdn.bg/eflash/jwplayer510/player.swf" -f "WIN 18,0,0,232" -p "http://i.cdn.bg/live/OQ70Ds9Lcp" -y "bntHDt.stream?at=22c035726e941f171f6676751141b491" -T "B@1R1st1077" --quiet | vlc -

Дъмп на БНТ2

rtmpdump -r "rtmp://edge11.cdn.bg:2020/fls" -a "fls/" -W "http://cdn.bg/eflash/jwplayer510/player.swf" -f "WIN 18,0,0,232" -p "http://cdn.bg/live/ZBPbdxDHm7" -y "bnt2.stream?at=22c035726e941f171f6676751141b491" -T "B@1R1st1077" --quiet | vlc -

Дъмп на БТВ
rtmpdump -r “rtmp://46.10.150.111:80/ios” -a “ios” -f “WIN 11,5,502,149” -W “http://images.btv.bg/fplayer/flowplayer.commercial-3.2.5.swf” -p “http://www.btv.bg/live/” -y “btvbglive” –quiet | vlc –

rtmpdump -r "rtmp://46.10.150.113:80/alpha" -a "alpha" -f "WIN 11,5,502,149" -W "http://www.btv.bg/static/bg/shared/app/flowplayer/flowplayer.rtmp-3.2.13.swf" -p "http://www.btv.bg/live/" -y "alpha" --quiet | vlc -

И двата стринга могат да се запазят като изпълними скриптове на десктопа и да се стартират с 2 клика.

Може да се дъмпва и директно до файл, като се посочи output -o. Пример за дъмпване на бТВ до файл:

rtmp://46.10.150.113:80/alpha" -a "alpha" -f "WIN 11,5,502,149" -W "http://www.btv.bg/static/bg/shared/app/flowplayer/flowplayer.rtmp-3.2.13.swf" -p "http://www.btv.bg/live/" -y "alpha" -o "BTV_01.flv"

Нова ТВ
– плей с VLC

rtmpdump -r "rtmp://edge1.evolink.net:2010/fls" -a "fls/_definst_" -y "ntv_2.stream" -p "http://i.cdn.bg/live/" -T "N0v4TV6#2" --quiet | vlc -

– кепчъринг с rtmpdump

rtmpdump -r "rtmp://edge1.evolink.net:2010/fls" -a "fls/_definst_" -y "ntv_2.stream" -p "http://i.cdn.bg/live/" -T "N0v4TV6#2" -o "NovaTV_01.flv"

За да записвам Нова ТВ се наложи да декомпилирам swf-файла в който беше набутана паролата за стринга (Secure Token – TEA). Тази парола се добавя с параметъра -T, в случая е -T “N0v4TV6#2”

Дъмп на Канал 3

rtmpdump -V -r "rtmp://edge4.cdn.bg:2017/fls" -a "fls/" -W "http://i.cdn.bg/flash/jwplayer510/player.swf" -f "WIN 18,0,0,232" -p "http://i.cdn.bg/live/FP08SWAJ4v" -y "kanal3.stream?at=22c035726e941f171f6676751141b491" --quiet | vlc -

Дъмп на ТВ Европа

rtmpdump -r "rtmp://lb.blb.cdn.bg:2018/fls" -a "fls/" -y "tvevropa.stream" --quiet | vlc -

Дъмп на SPortal
До файл:

rtmpdump -V -r "rtmp://pri.cdn.bg:2001/fls" -a "fls/" -y "sportal_tv_hd.stream" -p "http://www.novini.bg/tv/703-sportal-bg.html" -o "proba.flv"

До VLC palyer:

rtmpdump -V -r "rtmp://pri.cdn.bg:2001/fls" -a "fls/" -y "sportal_tv_hd.stream" -p "http://www.novini.bg/tv/703-sportal-bg.html" --quiet | vlc -

===========================================
Подробно описание, как прихващам стриймовете (писал съм го за един форум, но го поствам и тук).
Надушвам ги с Wireshark. Ето как:
1. Стартираш Wireshark и “надушваш” кое е IP-то което стриймва. Това може да стане и с друга програма, като SmartSniffer или подобна лека програмка. Там се вижда много ясно кое IP точи постоянен трафик. След това залагаш това IP като филтър в Wireshark:
01.8699
Може да си сложиш IP-то като филтър и автоматично, с 2 клика:
02.8583
2. След това кликам на някой от прихванатите филтрирани пакети и с десен бутон избирам [b]Follow TCP stream[/b].
03.6096
3. Показва се прозореца с данните от прихванатите пакети, като в него намирам всичката ми необходима информация, за да направя дъмп на видеото:
04.7009
pageUrl…http://www.btv.bg/live/
flashVer…WIN 11,5,502,149
app…ios
swfUrl..http://images.btv.bg/fplayer/flowplayer.commercial-3.2.5.swf
tcUrl…rtmp://46.10.150.111:80
play………….btvbglive

4. С тези данни мога да стриймвам директно, ако сървара ми позволи, или пък да дъмпна стрийма с rtmpdump, като просто си заместя инфото като аргументи за стартиране на програмата:

rtmpdump -r “rtmp://46.10.150.111:80/ios” -a “ios” -f “WIN 11,5,502,149” -W “http://images.btv.bg/fplayer/flowplayer.commercial-3.2.5.swf” -p “http://www.btv.bg/live/” -y “btvbglive” -o “BTV_01.flv”

UPDATE: Стрийма на БТВ е променен. Новият е:
rtmpdump -r "rtmp://46.10.150.113:80/alpha" -a "alpha" -f "WIN 11,5,502,149" -W "http://www.btv.bg/static/bg/shared/app/flowplayer/flowplayer.rtmp-3.2.13.swf" -p "http://www.btv.bg/live/" -y "alpha" -o "BTV_01.flv"

5. Пийваш малко биричка и междувременно можеш да си пуснеш дъмпвания файл в някой плеър, за да си го гледаш в реално време.
————–
Междувременно написах проста програма – TV Player, която използва по-горните команди за гледане на онлайн телевизия. Програмката се намира тук:
Simple BG TV Player – прост rtmpdump плеар за гледане на BG-телевизии
Изглежда така:
simple bg tv player - онлайн телевизии

ffmpeg commands

Напоследък съм тотален фен на OpenSource видео конвертора ffmpeg.
Ето примери с някои прости команди, които вършат страхотна работа:

ffmpeg.exe -i all.vob -sameq -ss 75 -t 75 -vcodec libx264 test.mpg

-i all.vob – файла, който ще обработваме
-sameq – запази качеството на видеото
-ss 75 – почни да режеш от 75-та секунда
-t 85 – продължителност на рязането 85 секунди
-vcodec libx264 – видео кодек в който да се конвертира. Ако искаме да сме сигурни, че файла ще върви на всяка Windows машина, можем да ползваме -vcodec msmpeg4v2.

Някои допълнителни екстри:
Video:
-s – размер на картината
-b – видео битрейд
-r – скорост на кадрите
-croptop, -cropbottom, -cropleft, -cropright – рязане на картината в пиксели
-padtop, -padbottom, -padleft, -padright – поставя кантове до картината (padding), в този случай е добре да се зададе и -padcolor 000000 – цвят на кантовете в HEX-формат, в случая 000000 – черно.
-vn – не конвертирай никакво видео. Използва се за да се екстрактне аудиото.

Audio:
-acodec libmp3lame – задаване на кодек за аудиото
-acodec copy – използвай същия кодек за аудиото
-ab 128k – битрейд за аудиото
-ac 6 – задаване на аудио каналите
-an – без аудио

Обединяването на видео и аудио става просто като добави и двата файла в началото;

ffmpeg -i audio.wav -i video.m2v ...

Конвертиране на MPG видео до FLV с високо качество за качване по видео-порталите:

ffmpeg -i input.mpg -sameq -f flv -vcodec libx264 output.flv

—————————-
UPDATE: 05.09.2016
—————————-
Някои интересни команди за кепчъринг на онлайн видео стрийм

ffmpeg архива за Windows върви с някои интересни инструменти. Един от тях е ffplay, който е наистина необикновен видео-плеър.
Един пример, който показва възможностите за плейване на онлайн стрийм (телевизията е City TV) с ffplay:

ffplay -i "http://nodeb.gocaster.net:1935/CGL/_definst_/mp4:TODAYFM_TEST2/playlist.m3u8"

Ако съхраните в една директория mplayer и ffmpeg екзетата, ще можете да гледате отново същата телевизия, но през пайп с mplayer:

mplayer -cache 2000 -cache-min 99 "ffmpeg://http://nodeb.gocaster.net:1935/CGL/_definst_/mp4:TODAYFM_TEST2/playlist.m3u8"

Същото, но прекарано през ffplay:

ffmpeg -i "http://nodeb.gocaster.net:1935/CGL/_definst_/mp4:TODAYFM_TEST2/playlist.m3u8" -f matroska - | ffplay -i -

Ffmpeg е направо велик инструмент, който се ползва лесно и бързо, заради интуитивните му команди.

Join VOB files

За да се конвертира DVD до по-нормален формат, често се налага преди това VOB-файловете да се свържат в един общ (Join VOB files). Много хора не знаят, че MPEG и VOB файловете позволяват конкатенация, т.е. последователно свързване.
Свързване на VOB файлове под Windows:

copy /b 01.vob+02.vob+03.vob all.vob

Свързване на VOB файлове под Linux/UNIX/Mac:

cat 1.vob 2.vob 3.vob > all.vob

Ако е спазен стандарта при създаването на VOB-файловете не би трябвало да има проблеми.