MP4 Player & Downloader

Developed or developing a new product in PureBasic? Tell the world about it.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player

Post by JHPJHP »

This is a companion program to the YouTube Player.
- also updated at the time of this post

Press the [ F4 ] key to save a snapshot of the current frame.

If the thumbnail viewer is open [ F3 ], pressing the [ F4 ] key will create an on-screen thumbnail list, and save a snapshot of the current frame.

-----------------------------------------------------------------------

Updated:
- added Shortcut keys
-- see [ F1 ] Shortcut Menu for changes
- the MP4 player Full Screen icon now controls the PureBasic window
-- double-clicking the window also toggles the Full Screen display on / off

NB*: Included a JavaScript event listener and function that can react to changes to the document title.
- document title can be changed from PureBasic using (DOM) existing code
Last edited by JHPJHP on Sat Aug 26, 2017 1:40 am, edited 4 times in total.
User avatar
gurj
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Jan 22, 2009 3:48 am
Location: china
Contact:

Re: MP4 Player

Post by gurj »

can't Download.
my pb for chinese:
http://ataorj.ys168.com
dige
Addict
Addict
Posts: 1240
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: MP4 Player

Post by dige »

Well done! Thx JHPJHP
"Daddy, I'll run faster, then it is not so far..."
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player

Post by JHPJHP »

Hi dige,

Thank you for the kudos :!:

----------------------------------------------

Figured out the Same-Origin policy for locally loaded MP4 files (does not apply to URLs).

Updated:
- switch around some Shortcut keys (see the [ F1 ] menu for changes)
-- press the [ F3 ] key to open the thumbnail viewer
-- press the [ F4 ] key to save a snapshot of the current frame

If the thumbnail viewer is not open and the [ F4 ] key is pressed, a full snapshot is saved (also works with URLs).
- this uses an API hack, while the thumbnail snapshot solution should work in a cross-platform application

NOTE: While the Shortcut Menu and Thumbnail List cannot be viewed in Full Screen, there is a simple fix, but it would require writing custom controls.
Last edited by JHPJHP on Sat Aug 26, 2017 1:41 am, edited 4 times in total.
uweb
User
User
Posts: 98
Joined: Wed Mar 15, 2006 9:40 am
Location: Germany

Re: MP4 Player

Post by uweb »

Fine!
Thank you.
But it looks like it don't like special characters (i.e. ä, ö, ü, ß) in filenames.
Please pardon my English, my native tongue is German.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player

Post by JHPJHP »

Hi uweb,

Thank you for the information; problem fixed.
- included the following MIME Type: <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

----------------------------------------------------

Updated:
- added a new Command Parameter
-- ThumbnailRatio / TR (default: 0.25)

NOTE: The PureBasic WebGadget supports using the <video> element with MP4 files.
- if the file is loaded locally, the Same Origin Policy can be bypassed
-- available JavaScript Functions: toBlob(), toDataURL(), and getImageData()
Last edited by JHPJHP on Sun Aug 20, 2017 3:03 am, edited 4 times in total.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player

Post by JHPJHP »

Cross-Origin Resource Sharing (CORS) now available for both locally loaded MP4 files and URLs.

Updated:
- expanded the snapshot Procedure (CORS)
- added a Splash window
- added a Load window (replaced OpenFileRequester)
- added URL load progress to the Titlebar and Taskbar button
- applied some code improvements and bug fixes

NOTES:
- press the [ F1 ] key to open the Shortcut Keys Menu
- press the [ F2 ] key to load an MP4 file
- press the [ F3 ] key to open the Thumbnail Viewer
- press the [ F4 ] key to save frames
-- image size is configurable (defaulted to 25% of original video size)
-- if the Thumbnail Viewer is not open, frames are still saved, but thumbnails are not added to the viewer
- enter Full Screen from the onboard controls (includes a zoom button if black bars are visible)
- the Shortcut Keys Menu and the Thumbnail Viewer cannot be opened in Full Screen
Last edited by JHPJHP on Mon Aug 02, 2021 7:15 pm, edited 5 times in total.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player

Post by JHPJHP »

Updated:
- added 2 Command Parameters
-- SaveVideo (default #True)
-- PlayerOnly (default #False)
- fixed the Save Snapshot feature for local videos
- applied a few code improvements

SaveVideo:
When a video is downloaded from a URL it will auto-save to the local drive. A URL with a video of the same name will be ignored, and the local video will be played instead.
- this setting is ignored if the video file is greater then 250MB
- this setting is ignored when the PlayerOnly option is enabled

PlayerOnly:
Enabling this option will disable the Thumbnail Viewer and Save Snapshot feature, but loading videos from the internet will play without first having to be fully downloaded.

NB*: The YouTube Player was also updated.

--------------------------------------------------------------------------------

Update Reposted:
- added a Progressbar when downloading from a URL
- squashed some bugs

I don't think anyone will use this as an MP4 player, but the techniques used to communicate between PureBasic and JavaScript via the WebGadget, should put to rest most concerns that the WebGadget is obsolete. Quite the opposite, IMHO it is the most powerful Gadget PureBasic has to offer.
- Embed JS into PureBasic, Geolocation: Google Maps, YouTube Player, MP4 Player, Barcode Generator

NB*: Previous update would crash the program when loading non-playable MP4 files.
IdeasVacuum
Always Here
Always Here
Posts: 6424
Joined: Fri Oct 23, 2009 2:33 am
Location: Wales, UK
Contact:

Re: MP4 Player

Post by IdeasVacuum »

I am sure people will use it, it's an excellent Player JHPJHP.
You have coded some very nice features throughout, making it a good tutorial too. 8)
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player

Post by JHPJHP »

Hi IdeasVacuum,

Providing examples as learning tools was one of the main reasons I started posting code to the PureBasic forum.

Thank you for your kind words.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: HTML5 MP4 Player

Post by JHPJHP »

Updated:
- squashed a bug

I noticed a problem a couple weeks ago where a video was downloaded, but the player reported it as an unsupported format.

Until I had time to look at the issue and to avoid disabling the download link, I included a copy of the online video into the download package. This bypassed the problem by playing the local copy, but increased the download size by over 20 MB.

NB*: The problem occurred because I was removing the download reference (revokeObjectURL) before the player had time to use it.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: HTML5 MP4 Player

Post by JHPJHP »

Updated:
- made a couple small changes to the code

NOTE: Make sure to check out the Thumbnail Viewer [ F3 ]; save snapshots of the current frame [ F4 ].

NB*: Press [ F1 ] to see all the available options (i.e. COMMAND PARAMETERS: ThumbnailRatio).
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player & Downloader

Post by JHPJHP »

Updated:
- added a thumbnail player
- squashed a couple bugs

Thumbnail Player
When the main window (MP4 Player) is minimized, a thumbnail version of the player opens in a corner of the screen.
Pressing the [ F8 ] key slides the thumbnail player to a different corner of the screen.
Last edited by JHPJHP on Mon Aug 02, 2021 7:14 pm, edited 1 time in total.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: MP4 Player & Downloader

Post by JHPJHP »

Updated:
- improved various parts of the code
- squashed a couple bugs
Locked