Forum Archive

Playing .mp4 videos in any of the ui elements

Phuket2

Is it possible to play .mp4 files in say a custom view or any other ui element? I don't just need an external player, I want to be able to overlay ui elements on the .mp4 file I am playing. I really want full control over the screen and playback. Any suggestions appreciated

ccc

Learn Swift ;-)

Phuket2

Lol, 20,000 += 290 odd extra .... I see your humor, I think patience is not your middle name :) it's ok, I am not very patient also, however I have got better. I look fwd to meet you sometime. Sure we would have fun!

ccc

My bet is that our JavaScript knowledgeable brethren know how to do it in Pythonista.

Phuket2

Lol, I am just going to order another black soda ;) really

Phuket2

@ccc, how do I give you my email, I have no problem just to write it here. nothing to hide. I just don't see any details of anyone here. If you like to keep it that way, it's ok. If you would like to chat on email also, I will pass on my email anyway you like

JonB

you can show video in an ui.WebView. you need to know a bit of html, in which case you would embed the video just like you would in html. if you are linking to video on the web, just use th embed code from whatever side you are using. for hosting video locally in pythonista, you would use a relative address, relative to the page source.

now, if you want control over playback, that is trickier. your best bet is just to do everything in JavaScript, for example see here, including the ui elements that directly interact wight the video, unless you really need to pass something back and forth to Python, which is a pain, but doable. to interact with the Python, you need to have JavaScript functions that are callable using eval_js. having done a little of this before, let me say doing JavaScript in pythonista is rather unpleasant, since debugging is very hard, and most errors happen silently.... things are probably a bit better in the beta, if only for the tabbed editor, and some html editor support

Phuket2

Ok, thanks @JonB. I am surprised actually. I hadn’t given it any thought. I just assumed it would be quite simple to do, even if had to,use Scene or something. So, it sounds like no type of media element we be in the new version also. Out of interest, is there a media type control that omz could make a wrapper for in iOS? Maybe the word wrapper is an over simplification of what's involved. Maybe the intended wrapper is just the webview as you suggest. I managed to get youtube videos (streaming) working fine in the webview. But because I just used the embed type, I didn't have much control over the presentation etc. I was basically limited to the URL params. It was ok to get started, but then wanted to move on to my own files.
As a fun distraction, I wanted to create a video display the same as the bar has that I go to each afternoon. They run virtual DJ with a bunch of plugins to show music videos, with a fly out strip with the song name, artist etc... A few transparent logo's and a ticker at the bottom. Looks very smart. Also they have some nice panels overlaying in response to SMS and email messages. Looks great, but it's no rocket science. That program does so much more, but in this case not. Anyway, I thought would be fun to make it and use AirPlay to the TV. I got the YouTube_dl that has been modified for Pythonista installed,and it works perfectly. The info JSON files are great.
Oh, I just had a thought. I did some very simple tests with bottle before. Meaning I assume that pythonista has a built in web server. I think. So, if I could start that web server, could I play my disk videos in the webview by using localhost addresses?

JonB

you don't need to start a server to play local files. just provide a full abspath to the initial html file. you certainly can use bottle, if you need things to be dynamically generated, but for many simple static pages it is not needed.

https://developers.google.com/youtube/iframe_api_reference is the JavaScript api for YouTube, which lets you queue up videos, control playback, etc. I think that is your best bet, but again it has to mostly be done in javascript.

actually, one problem you might encounter is that iOS has some security settings that may prevent videos from playing without the user pressing the red play button.... not sure if the embedded browser has that flag set or not.

Phuket2

Thanks @JonB, I guests here visiting at the moment, but will try it as soon as I can.