{"id":261,"date":"2020-12-03T19:56:28","date_gmt":"2020-12-03T19:56:28","guid":{"rendered":"https:\/\/oqtacore.com\/app\/?p=261"},"modified":"2022-11-23T12:59:24","modified_gmt":"2022-11-23T12:59:24","slug":"flysecure-secure-video-courses","status":"publish","type":"post","link":"https:\/\/oqtacore.com\/blog\/flysecure-secure-video-courses\/","title":{"rendered":"FlySecure \u2013 secure video courses"},"content":{"rendered":"<h2><span class=\"ez-toc-section\" id=\"Customer\"><\/span><strong>Customer<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Alice has an online school. She sells her pre-recorded video lessons about starting your first business. This topic is in high demand, and the pre-recorded course lasts 2 months and costs ~$100. It has great value for the price, so Alice feels that she should make a lot of money.<\/p>\n<p>Also, Alice has a live course, where she holds individual sessions with beginning entrepreneurs, listens to their problems and helps them find a solution. It costs $300.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_problem\"><\/span><strong>The problem<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Alice notices that her pre-recorded course is not bought as frequently as she would expect. And on her individual sessions, many people ask questions \u201cfor a friend\u201d, or like they had 5\u00a0 multiple businesses. What\u2019s the problem?<\/p>\n<p>The problem is that her courses were published on a video piracy forum, where the thread initiator collects $2-3 per person, then the initiator takes the course and shares the video with everyone else. Pre-recorded sessions are just hacked and downloaded, and live sessions are recorded using screen recording software, and also shared. People who pay $2-3 also have the right to pay $2 extra and get their question translated to Alice by the initiator.<\/p>\n<p>So, instead of getting a good audience that gets high value for $100, Alice gets strange people that are not very interested in the product, and instead are doing their own business on illegal video sharing. Nobody really earns here, but this situation is devastating for the business.<\/p>\n<p>Alice needed to solve the problem quickly, as her new course (the largest she ever had) was going to start in 4 weeks, and she needed some solution quickly.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Solution\"><\/span><strong>Solution<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A software platform for video distribution of pre-recorded courses. It consists of two client apps, one for the coach, and another one for the coach\u2019s customers.<\/p>\n<p>Our team understood that we need to make an MVP of a video copyright protection app with minimum functionality, that would protect both pre-recorded and live video streams.<\/p>\n<p>FlySecure is a video security software. Alice gets the server part of the application that runs on Windows, where she uploads video files, can create courses, schedules, packages.<\/p>\n<p>When a customer Bob reaches Alice, Alice gives Bob a link to download the FlySecure client app for Windows, macOS, iOS, and Android.<\/p>\n<p>FlySecure client app is a course browser and a player for both pre-recorded and live sessions. It is a very nice app with convenient UI and UX. Bob opens FlySecure, chooses the purchased course.<\/p>\n<p>Bob views the schedule, opens the pre-recorded video and watches it when it\u2019s convenient.<\/p>\n<p>When the app is closed, it remembers the time, so on the next launch, it continues the video from the same point.<\/p>\n<p>Bob downloads the client app and buys the courses directly from the app. Access to his account can be done from any device, the only problem is that for each session Bob needs to receive a text message, so it\u2019s impossible for him to share access through video piracy forum.<\/p>\n<p>Can Bob record the screen from FlySecure client? No. During 4 years of the app existence, nobody ever could capture the screen, be it Skype, Zoom, Camtasia, etc. FlySecure controls the screen recording on may levels, and when it feels it is being recorded, it just stops the session.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Security\"><\/span><strong>Security<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The video player app has protection against any video recording on the target PC \u2013 we do this by monitoring the used DLL\u2019s, knowing all the video codec DLL\u2019s that can be used by screen recording software The video player app was developed in Qt C++, keeping cross-platform ability in mind.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Multi-platform\"><\/span><strong>Multi-platform<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The app was published for Windows, macOS, it also was developed and published for Android and iOS, as well as a web-version. Because of the huge video stream bandwidth requirements, a CDN was used (first, a third-party solution, then we switched to an on-premise Wowza instance). During the 3 years, more than $500k was earned with this app by one of the customers, and not a single good-quality recording appeared on the internet (only very low-quality recorded on a mobile phone)<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Result\"><\/span><strong>Result<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The cost of the solution of the MVP was $15 000. During the next 6 months, the product was regularly updated with new features, and the total cost for Alice was $100 000. During 4 years, more than $5 000 000 sales volume was achieved through FlySecure app, and no screen recordings appeared on any video piracy forum.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tech_stack\"><\/span><strong>Tech stack<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Languages: C++ \u2022 SQL \u2022 Python \u2022 JavaScript \u2022 CSS \u2022 HTML<\/p>\n<p>Libraries: Qt C++ \u2022 WinAPI C++ \u2022 Cocoa \u2022 Asp.Net MVC \u2022 .Net Framework 4.7 \u2022 JQuery \u2022 Bootstrap \u2022 libvlc \u2022 OpenSSL \u2022 unixODBC \u2022 FreeTDS<\/p>\n<p>Technologies: POSIX \u2022 UNIX \u2022 agile software development \u2022 cross-platform development \u2022 Video streaming (HLS, RTMP, RTSP) \u2022 Test-driven development \u2022 CDN \u2022 Web API Software: Microsoft Visual Studio \u2022 Qt Creator \u2022 XCode \u2022 TeamCity \u2022 Web engines (Apache, nginx, IIS) \u2022 vim \u2022 bash \u2022 VMware \u2022 Balsamic moqups \u2022 Git \u2022 Wowza Streaming Engin<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Customer Alice has an online school. She sells her pre-recorded video lessons about starting your first business. This topic is in high demand, and the pre-recorded course lasts 2 months and costs ~$100. It has great value for the price, so Alice feels that she should make a lot of money. Also, Alice has a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_mo_disable_npp":"","yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[1],"tags":[23],"class_list":["post-261","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-case-study"],"acf":{"image":487},"yasr_visitor_votes":{"number_of_votes":0,"sum_votes":0,"stars_attributes":{"read_only":false,"span_bottom":false}},"_links":{"self":[{"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/posts\/261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/comments?post=261"}],"version-history":[{"count":6,"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/posts\/261\/revisions"}],"predecessor-version":[{"id":964,"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/posts\/261\/revisions\/964"}],"wp:attachment":[{"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/media?parent=261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/categories?post=261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oqtacore.com\/blog\/wp-json\/wp\/v2\/tags?post=261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}