karl-rousseau / HybridTvViewer

[WIP] Web extension making Firefox & Chrome emulate iTV webpages instead of downloading them.
MIT License
67 stars 25 forks source link

BML example #19

Open artemies opened 4 years ago

artemies commented 4 years ago

do you have a bml webpage example?

karl-rousseau commented 3 years ago

Sorry to be late ... I sold my PC and I don't have access anymore to my HDD backups. I had a DTT captured TS file from Japan with one example inside a DSMCC objet. If you know somebody in Japan with a digital tuner to capture the Digital Terrestrial Television, it might help. I am not really sure that it is still used nowadays as the standard is now quite old.

You can find more documentation on those structures (page 224) in this PDF file from the ARIB standard: https://www.arib.or.jp/english/html/overview/doc/6-STD-B24v5_2-2p3-1-E1.pdf

If you have a TS file with such example, you can extract those sources using free OpenCaster tool or TSduck one. It seems that you can also use TS Data Extractor + BTBViewer like someone in Japan did describe in his article: https://translate.google.com/translate?sl=auto&tl=en&u=https%3A%2F%2Fqiita.com%2Fkujira-desu%2Fitems%2Fd98587c10fb44d668f8f

Have a nice reading.

artemies commented 3 years ago

Hi,

Hope this message finds you well.

I managed to find an example TS from Japan (https://tsduck.io/streams/?name=japan-dttv) and we were able to extract the dsm-cc contents. Upon checking we are getting raw binary data inside modules (DDB folder). How we can inject this in the hbbtv viewer? thanks!

karl-rousseau commented 3 years ago

Hello ‌Artemies,

Thank you for the link and I didn't know that TSduck is providing streams. After your DSMCC carousel's extraction, you can host those directories and files under a local HTTP server like NGINX or Apache where you have to associate the main entry page to this specific mime type "text/X-arib-bml". (it can be defined locally in such server or globally inside /etc/mime.types if you are under Linux)

Under your browser, when you will request this local BML web page, then the installed browser extension will detect the page holding such HTTP header mimetype and will change it to be displayed inside your browser. Oipf & Hbbtv methods will then be injected inside this page and you can add more missing BML methods if needed by modifying the extension source code. Raw binary files will be also hosted and must be translated to something understandable by the main entry page. I had some thought about doing an external Chrome app but the filesystem and network API are limited. In the future, I am looking forward to WASM (aka WebAssembly) which will provide those APIs and it will be easier to read a raw TS stream (even stream them) and extract it on the fly to provide it inside the web extension. We just have to wait for such functionality (which are inside the Wasm/Wasi roadmap)

I hope it will help you.

artemies commented 3 years ago

Hi Karl,

Thanks for the info. In the meantime, we need to figure out how to recover the bml files from the raw binary data from DDB folder.

artemies commented 3 years ago

Hi Karl,

Upon demux of sample transport stream from Japan, we found that the DSMCC is empty but the DDB folder has some raw/binary files. I think ISDB-T Japan implements data carousel only (instead of object carousel). I attached the sample DDB files. You mentioned before that you were able to extract BML from DSMCC object, if you can recall how you were able to extract this it will be a great help.

Thanks!

sample DDB.zip

karl-rousseau commented 3 years ago

Hello ‌Artemies,

I see and I did remember that I modified ts2sec on OpenCaster but also dsmcc-receive in order to be able to extract things. I don't have those patches at hand and they are somewhere backupped on one of my old disks. Moreover I sold my desktop PC too and therefore it will be not be easy to plugin those disks on my every day RPi4 computer (no SATA by default).

You can try to modify this tiny code here: https://github.com/aventuri/opencaster/tree/master/code/tools/dsmcc-receive Or maybe if you retrieve the Ocean Blue DTVKit, they might handled it: https://www.dtvkit.org/wiki/doku.php?id=dsm-cc

Good luck.

artemies commented 3 years ago

Hi Karl,

Thank you for your prompt response. Will try this out.