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 - онлайн телевизии

Нова версия v.0.9 (22.01.2017) – променена е концепцията на гепене на стрийма, като вече не ползвам rmpt-дъмп. В тази версия ползвам ffmpeg, затова и архива е по-голям (около 20mb).
Simple BG TV Player – v.0.9.beta-x64.zip
Simple BG TV Player – v.0.9.beta-x86.zip

—–
Стари версии:
Изтегляне v.0.8 64bit (в архива е и сорскода): Simple BG TV Player – v.0.8.beta.rar
Изтегляне на v.0.8 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.

Share and Enjoy !

Shares

Изряване на сцена от филм и конвертиране до 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:
[flv:https://blog.nediko.info/examples/avi_to_gif/Kostner_tutorial.flv examples/avi_to_gif/001.jpg 480 397]
Ако сървара не иска да пусне видеото, може да се изтегли и от тук:
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

Share and Enjoy !

Shares

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 “https://cdn.bg/flash/jwplayer510/player.swf” -p “https://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 “https://images.btv.bg/fplayer/flowplayer.commercial-3.2.5.swf” -p “https://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…https://www.btv.bg/live/
flashVer…WIN 11,5,502,149
app…ios
swfUrl..https://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 “https://images.btv.bg/fplayer/flowplayer.commercial-3.2.5.swf” -p “https://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 "https://www.btv.bg/static/bg/shared/app/flowplayer/flowplayer.rtmp-3.2.13.swf" -p "https://www.btv.bg/live/" -y "alpha" -o "BTV_01.flv"

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

Share and Enjoy !

Shares

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.

В по-новите версии на ffmpeg при рязане на видео има възможност да се зададе край на рязането спрямо началото и да се използва времеви формат – часове:минути:секунди.стотни:

ffmpeg.exe -i input.mp4 -ss 00:00:06.356 -to 00:00:11.560 test.avi

Някои допълнителни екстри:
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"

Можем да настроим ffplay да показва времето от началото на видеото:

ffplay -vf "drawtext=text='%{pts\:hms}':box=1:x=(w-tw)/2:y=h-(2*lh)" input.mp4

Ако съхраните в една директория 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 -

Понякога ffplay не може да закачи драйвера за саунда. Тогава можем предварително да включим този драйвер през променливите на обкръжението. При мен става и двата directsound или winmm. Примерно за Windows 7 можем в промпта да зададем следното:

set SDL_AUDIODRIVER=directsound
ffplay http://...

Записване на Desktop capture с ffmpeg под Windows:

ffmpeg -f gdigrab -i desktop -framerate 24 -vcodec libx264 -crf 23 out.mp4

За приключване на записа се натиска бутона q.

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

Генериране на малък по размер GIF от видео файл

ffmpeg -i StickAround.mp4 -filter_complex "[0:v] fps=12,scale=480:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" SmallerStickAround.gif

Конвертиране на m3u8 стрийм до mp4:

ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i url_to.m3u8 -c copy out.mp4

Share and Enjoy !

Shares

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-файловете не би трябвало да има проблеми.

Share and Enjoy !

Shares