Results 1 to 13 of 13

Thread: Best solution for a multi-platform, secure, easy video player

  1. #1
    Join Date
    Jul 2004
    Reading, UK.

    Question Best solution for a multi-platform, secure, easy video player

    I currently have a client (my wife), who's shot a big bunch of dance training videos (currently about 75 so far.. around 300 more to go).

    All videos have been shot in full HD, so we want to display them at a high resolution too (not a pixelated thumbnail).

    Each video is around 4-6 minutes long (so about 35Mb file size after editing).

    She's editing them all on a Mac, using iMovie 11 (and doesn't really want to spend on any other editing package).

    She wants to sell a daily/weekly/monthly membership subscription to access the videos (much like many porn sites out there). So this is most likely going to be managed via 'OpenCrypt'.

    She doesn't want the videos easily grabbed (although I appreciate that if you can view it, you can copy it with various bits of software).. mainly though, she doesn't want people to glimpse the source code and then make local copies of the videos themselves, without paying the subscription (so ideally we're looking for a type of streaming system).

    I have a reseller server, with essentially unlimited hosting/bandwidth (certainly big enough for the secure member's traffic she'll be getting, initially at least), so want it hosted by myself rather than elsewhere.

    The most effective way for her to be able to share these videos from a usability point of view, is with a WordPress blog (that way each video can be linked by categories, tags, etc. and comments added beneath).

    However, we want the videos to be viewable on all the major browser platforms, including the increasingly popular iPad and iPhone (as many of her students have requested this compatibility).

    It does need to be easy for her to do (she's a fast learner, but has a lot of videos to work through, so we're not looking for a complex solution).

    Therefore.. flash doesn't seem to be appropriate, Vimeo is not for commercial use, YouTube doesn't seem to have these restriction options (only streamable to an external website secure area), and most of my other searches seem to bring up other challenges.

    The best solution at the moment seems to be VideoJS, with an HTML5 player, and then multiple versions of the same video, saved on the server...

    So can anyone make a better suggestion?

  2. #2
    Join Date
    Mar 2011
    Rome, Italy

    Possible solution

    Take a look here:
    Go to the products page and select JW Player. In my websites, i use it in the easiest way, but it offers multiple solutions including streaming and cool plugins. There's also an exhaustive dedicated forum too...
    Good luck!

  3. #3
    Join Date
    Sep 2008
    Akron, OH
    Media Element JS is another good solution:

  4. #4
    Join Date
    Jul 2004
    Reading, UK.
    Cheers for both of these. I've been trying to have a good look through the options, however, as far as I can tel (along with jwplayer), none of them are able to hide the video URL within the browser (as a result, even with limited knowledge, the user can just view the file location in the 'view source' and then download each video as a file to the user's computer.

    We want to encourage monthly subscriptions, not people to pull off the entire video collection over a couple of days, and then make copies for themselves on disk.

    Is there a way of doing this, whilst still making it cross browser/platform compatiible?

    I was wondering about maybe something using .htaccess to keep changing file locations, maybe javasript to hide/encrypt the file location within the 'view source', maybe even just convert the file URL to ASCII code?

    Any other ideas.. I can't be the only one trying this surely? Or is 'cross browser/platform compatible' just not applicable to only secure streaming via the various browsers, at that moment only?

    Maybe something that says you need to be logged in to the members area, with a session ID, to play the video file even when it's stored on your PC or Mac?
    Last edited by happy_hands; 03-28-2011 at 06:09 AM.

  5. #5
    Join Date
    Feb 2008
    NW Washington State
    Unless you are streaming the video, there is already a copy of the video file on the viewers machine as soon as the viewer clicks on and download the video... it's downloads first into the cache and is displayed from there... the viewer is seeing and already has a copy of the file. Even streaming video can easily be grabbed and saved with a screen capture.
    In the case of video players (like the JW Player) with playlists, the video file URL is NOT shown, it's the URL to the .swf (the player) that is visible. The URLs to the video files are contained in an xml file. Yes, the viewer can download and open the xml file and get the file name but the exact path could be partially hidden by including the folder names inside the player actionscript, something like this:
    ssx.onLoad = function(success){
    	if (success) {
    		var ss:Array = ssx.firstChild.childNodes;
    		for (i=0;i<ss.length;i++) {
    			urls.push("video/dance/promo/" + ss[i].attributes.url);
    urls.push("video/dance/promo/" + ss
    "video/dance/promo" is part of the path to the video and in the xml file only the video file name is shown.... but not the full path to it. The full path to the video file is hidden in the actionscript and is not visible unless the viewer can correctly decompile the .swf.
    But again, sort of a moot point since the video file AND the full path to that video file is stored in the cache.... DANG.
    All that being said, here's another option you may want to try, using PHP to hide the the exact URL:
    Best of luck on your project!
    Eye for Video

  6. #6
    Join Date
    Jan 2007
    Honestly, I would use an existing service. Push the hassle of billing, distribution, and handling customer complaints into someone else's hands. If you can get your content syndicated by a dedicated video distribution dot-com, you also have the opportunity to let your viewers watch on mobile and internet streaming devices, like roku, app-enabled "blu-ray" players and tv's, wii, xbox, etc..

    Amazon seems to make it pretty easy: https://www.createspace.com/Products/VideoDownload/

    I would also suggest looking into syndication with Hulu and youtube.
    Jon Wire

    thepointless.com | rounded corner generator

    I agree with Apple. Flash is just terrible.

    Use CODE tags!

  7. #7
    Join Date
    Dec 2005
    As Eye For Video pointed out, there's really nothing you can do...if the users can watch it, then they can download it....whether you make it impossible for them to find the URL or not, the video is already cached on their machine....and even if it isn't, there's all kinds of free software out there that will just listen to your internet connection and download any audio/video to a location of your choosing.

    I was in your shoes not too long ago, was charged with building a website for a client that served subscription based videos. i worked my @$$ off making the system as secure as possible, using all kinds of custom-built php scripts to hide the source of the video and prevent direct downloading of the video......

    but when it came down to it, a download of one of these readily available media-scraping programs and one click later and I was able to download the video...every time....no matter what.

    PS: I did it all with JWPlayer and a php script (XMOOV) that allowed pseudo-streaming, worked very well to hide the video source and you can make it really difficult for non-(moderately) tech savvy people to get a hold of your video, but ultimately trying to prevent your video from being downloaded is like trying to hide your source code.
    Last edited by aj_nsc; 03-28-2011 at 01:36 PM.
    I've switched careers...
    I'm NO LONGER a scientist,
    but now a web developer...

  8. #8
    Join Date
    Jul 2004
    Reading, UK.
    Many thanks for your ideas and feedback everyone.

    Yeah.. I do appreciate that if the user can view the video, they can copy it with a video screen grab type of service. I'm just trying to make it more challenging for the semi-skilled novice, to try and reduce the chances of them copying the video to their computer without much effort (ie looking for the relative file path in the source code, or just pulling it out of the cache).

    That's interesting what you mentioned about with not seeing the file location (eye-for-video), I was able to see the relative file location in the source a few sites I had a look at whilst searching (when they used jwplayer), and then simply put this URL in the browserto download directly to my PC. Must have just been some settings they hadn't put in properly to hide it.

    While I appreciate the benefits to use another service on a shared commission system, with the way my wife's business is forcast to grow, this wouldn't be appropriate for the commission structures they're looking at unfortunately.
    Similarly, the pay-per-view systems currently on beta and live with a few of the links are only available to U.S. contributors at present, and we don't have thousands of existing viewers to go down the YouTube partner program.

    However, the option to hide the URL using PHP looks like the right choice, and then just keeping everything in one or two password protected member areas.

    It looks as though I should be able to get the right solution after all!

  9. #9
    Join Date
    Jan 2007
    Good luck!
    Jon Wire

    thepointless.com | rounded corner generator

    I agree with Apple. Flash is just terrible.

    Use CODE tags!

  10. #10
    Join Date
    Mar 2012


    Great thread ...

    I am getting back into developing and consulting after several years of study. Reorienting myself to the latest, greatest, best solutions that I can duplicate on the fly once in my tool box.

    So ... for video that is accessible through PC and mobile devices. JW looks like a great solution, although I guess I could just take time to build a player in JQuery and CSS ... but, time is an issue.

    Is their ANY player available that will deliver ONE encoded version of video media through multiple platforms - PC and, Android, iPhone -etc ... ? I'm guessing it is going to be impossible, as Firefox will need ogg - maybe ....

    The client whats up independently upload video through a custom user interface (Drupal content type - maybe) and have them play on any device .... Any ideas on solutions?

    I'm thinking the ONLY way to accomplish this is use YouTube .... Upload to YT, get the embed URL, enter that snippet as the field in the new content type, then create a view displaying the video links as content is added for type, maybe show latest 4 thumbs, and the rest just links .... Thinking on the fly .... donno yet .... Any ideas?


  11. #11
    Join Date
    Feb 2008
    NW Washington State
    There are a number of good video players that let you use a playlist (so no need for multiple players) only one video file (mp4) and display just fine on most any device, including iProducts.
    My fav:
    others include:
    An example from one of my sites...test it on you iPhone and PC... works fine on both:
    Best wishes,
    Eye for Video

  12. #12
    Join Date
    Mar 2012

    A Solution

    You should really just have a preview (like 30 seconds) with a simple text/logo overlay (inserted before it goes online). However, you could make it to where only registered users can watch partial videos, then must pay to watch full videos. This way you can at least keep track of how many people there are, and make sure the "Agree to the Terms of Service".

  13. #13
    Join Date
    Mar 2012

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center



X vBulletin 4.2.2 Debug Information

  • Page Generation 0.12351 seconds
  • Memory Usage 3,004KB
  • Queries Executed 15 (?)
More Information
Template Usage (33):
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (13)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (13)postbit
  • (13)postbit_onlinestatus
  • (13)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (73):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates