{"id":36645,"date":"2023-08-25T11:56:20","date_gmt":"2023-08-25T08:56:20","guid":{"rendered":"https:\/\/orbitsoft.com\/blog\/?p=36645"},"modified":"2023-08-29T17:51:31","modified_gmt":"2023-08-29T14:51:31","slug":"video-application","status":"publish","type":"post","link":"https:\/\/orbitsoft.com\/blog\/video-application\/","title":{"rendered":"Why we chose Qt for a video application for kids"},"content":{"rendered":"<div class=\"wp-block-lazyblock-case lazyblock-case-2jN3io\"><div class=\"styled-block\">\n  <div class=\"styled-block__main\">\n          <h3 class=\"styled-block__title\">\n        In brief      <\/h3>\n        <ul class=\"case__list\">\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">01<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Our client<\/span>\n            <\/div>\n            <p><span style=\"font-weight: 400;\">An early learning center Baby Cool<\/span><\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">02<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Our goals<\/span>\n            <\/div>\n            <ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">To develop a video application for iOS and Android in a quick and cost-efficient way;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">To make it convenient for the administrators to upload long videos;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">To provide for the paid subscription mechanism.<\/span><\/li>\n<\/ul>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">03<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>The solution<\/span>\n            <\/div>\n            <p><span style=\"font-weight: 400;\">To develop a mobile application in Qt \u2013 a C++ framework<\/span><\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">04<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>The outcomes<\/span>\n            <\/div>\n            <ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In 5 months, we developed the mobile application.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The UX\/UI of the app is aimed at the children\u2019s audience.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Gratefully for the use of Qt, we have saved the budget and sped up the development process. One team has launched the application for both platforms.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Our using of Qt has simplified the payment system integration, since the main banking solutions are developed in C++, along with Qt.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">We developed the system of continual loading of a video. Videos can be uploaded in the form of a collection, regardless of their size and Internet speed.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The system is easily scalable.<\/span><\/li>\n<\/ul>          <\/div>\n        <\/li>\n          <\/ul>\n  <\/div>\n  <\/div><\/div>\n\n\n<p>Qt is a C++ framework for cross platform app development. It provides for the development of a single application for both operational systems, iOS and Android. Its use allowed us to speed up the development process and save the budget since only one developers\u2019 team was needed for the project.<br>OrbitSoft possesses vast experience creating apps in Qt. For instance, we used this framework while developing applications for <a href=\"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-qt\/\">a sales accounting system<\/a> and <a href=\"https:\/\/orbitsoft.com\/blog\/medical-video-portal-from-scratch\/\">a medical video platform<\/a>. In this article we are casting light on the development of a video application for an early learning center.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-Z1pRM4K\"><h2 class=\"article__h\">An early learning center wants to conduct educational classes online <\/h2><\/div>\n\n\n<p>Baby Cool is an early learning center where educators conduct various classes for kids, including foreign languages, chess, preparation for school, etc. It used to be an offline learning center, consequently, the target audience was pretty limited.&nbsp;<\/p>\n\n\n\n<p>The head of the center ventured out to develop a mobile video application to offer the same classes online. So, they approached OrbitSoft. We were to develop an application in which children and their parents can attend educational classes with teachers, play developmental games, learn languages, read fairy tales and get involved in online creativity.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-1rWnl7\"><h2 class=\"article__h\">We have developed a video application for kids <\/h2><\/div>\n\n<div class=\"wp-block-lazyblock-heading3 lazyblock-heading3-2d1oA6\"><h3 class=\"article__h3\">We developed the concept and designed UX\/UI<\/h3><\/div>\n\n\n<p>Our client had only the vision and technical assignment, so we began the development process with the creation of the project concept. Our designers created interface prototype with regards to user experience. The client saw the way the app is going to look like and what the user is going to do there. The user journey appeared to be simple and intuitively comprehensive.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-FnAn8\"><figure class=\"article__figure article__figure_vertical\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/start-en.jpg\" alt=\"the app's main screen\">\n    <\/div>\n                <figcaption><em>It was crucial for our client to get a logical app interface without abundant details<\/em><\/figcaption>\n    <\/figure><\/div>\n\n\n<p>Having paid for the subscription, the user gets access to the content. The application contains several content sections with video, including foreign language classes, fairytales and creativity ideas. We made up our mind to concentrate on the main section to launch the application as soon as possible. Further on, we are planning to add more activities, new languages to learn and content sections for parents.&nbsp;<\/p>\n\n\n\n<p>The content in the app is divided into 2 sections, for kids 2+ and kids 4+. When the user chooses another age group, the content changes accordingly. Within one parent account, one can create several accounts for children from different age groups.&nbsp;<\/p>\n\n\n\n<p>The main content section is educational classes. Each course section offers a comprehensive description and convenient interface. It is possible to download any video for re-watching or watching offline. After course or section completion, the user is supposed to pass a small test.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-nUiWS\"><figure class=\"article__figure article__figure_vertical\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/lessons-en.jpg\" alt=\"a screen with video content\">\n    <\/div>\n                <figcaption><em>Buttons, icons and the whole visual solution were designed so that kids, i.e., inexperienced users, could use it smoothly<\/em><\/figcaption>\n    <\/figure><\/div>\n\n\n<p>Parents manage the application from their personal accounts. The app allows the user to edit adult\u2019s data, add or delete data about children and manage the subscription model. A separate section of parent\u2019s personal account displays kid\u2019s progress, including the info on how many lessons and tests are completed and how many of them remain.<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-1\"><div class=\"wp-block-lazyblock-figure lazyblock-figure-ZXUVvu\"><figure class=\"article__figure article__figure_vertical\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/settings_2-child-en.jpg\" alt=\"personal account\">\n    <\/div>\n                <figcaption><em>A personal account allows the user to track when the subscription is over and renew it<\/em><\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-ZtInlz\"><figure class=\"article__figure article__figure_vertical\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/start_progress_1-en.jpg\" alt=\"progress desk\">\n    <\/div>\n                <figcaption><em>Tests have been developed for progress check. All the completed courses and classes are displayed in the personal account<\/em><\/figcaption>\n    <\/figure><\/div><\/div>\n\n\n<div class=\"wp-block-lazyblock-heading3 lazyblock-heading3-Z2iLTNJ\"><h3 class=\"article__h3\">We wrote the application in Qt<\/h3><\/div>\n\n\n<p>Having agreed upon the app design, we got down to the development of the app. We opted for Qt \u2013 a C++ framework. This decision allowed us to create one application for both platforms within one team. In the process of developing two native applications two developers\u2019 teams are needed, i.e., <a href=\"https:\/\/orbitsoft.com\/blog\/how-we-used-swift-vpn-client-application-example\/\">Swift developers<\/a> for iOS and <a href=\"https:\/\/orbitsoft.com\/blog\/kotlin\/\">Kotlin developers<\/a> for Android.&nbsp;<\/p>\n\n\n\n<p><strong>The advantages of app development in Qt<\/strong><\/p>\n\n\n\n<ul>\n<li>We have saved the budget. Consequently, the client paid for one development team\u2019s work, but received an app for both platforms.<\/li>\n\n\n\n<li>We have sped up the development process. When QA engineers point to an error in the code, it needs to be fixed in one single application, not two of them.<\/li>\n\n\n\n<li>We have simplified the integration. Since the main bank solutions are written in C++, the integration between a Qt application and a bank account goes smoothly and works flawlessly.<\/li>\n<\/ul>\n\n\n\n<p>Qt is the perfect fit for developing an MVP and checking out a hypothesis. It is worth starting off with a cross platform solution in case you need to check the way the market reacts to the product and find out the response from the users of different platforms. Behavior models of the iOS audience differ sharply from the one of Android. The audit may show that the solution is mainly used by the iOS audience. Then a company can concentrate their resources and budget on the development of one native application.&nbsp;<\/p>\n\n\n\n<p>Qt does have some drawbacks, though. Consequently, it is worth approaching experienced teams to develop an application. They know all the possibilities and restrictions of this or that frameworks and are capable of selecting the best solution for each project.<\/p>\n\n\n<div class=\"wp-block-lazyblock-banner lazyblock-banner-Z1WhdsS\"><div \n  class=\"banner\n   \n  \" \n  >\n    <div class=\"banner__body\">\n        <h2 class=\"banner__h\">We will develop a video app in Qt and other frameworks<\/h2>\n        <div class=\"banner__content\">\n            <ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Video applications for businesses from various branches, including entertainment, education, corporate education.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Applications can be scaled easily for the needs of any type of business. They have a paid subscription model, smart mechanism for content recommendations, notifications for users, etc.<\/span><\/li>\n<\/ul>        <\/div>\n                            <div \n              class=\"banner__button button js-form-modal\n               button_style_light-on-promo2\">\n              Book a consultation                          <\/div>\n            <\/div>\n    <div class=\"banner__photo\">\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/\u041e\u0431\u043b\u043e\u0436\u043a\u0430-7.png\" alt=\"\" class=\"banner__img\">\n    <\/div>\n<\/div><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-ZxqsXF\"><h2 class=\"article__h\">The application is on the QA stage <\/h2><\/div>\n\n\n<p>It took us 5 months to complete the active developmental stage. A team of 7 specialists was involved into the project, including a UX\/UI designer, 2 Qt developers, backend and frontend developers, a QA engineer and a project manager. Currently, the project is being tested and filled with the content.<\/p>\n\n\n\n<p>We have created an admin panel on a separate website for our clint\u2019s convenience. The main type of content in the app is video. While uploading a file of such a type, a number of problems may occur, as follows.<\/p>\n\n\n\n<ul>\n<li>It takes too much time to upload a big number of videos one by one manually;<\/li>\n\n\n\n<li>The upload page must always be open;<\/li>\n\n\n\n<li>If a file is big, and the Internet connection is unstable at the moment, the uploading process stops, and later on, the user has to start from the very beginning.<\/li>\n<\/ul>\n\n\n\n<p>We have developed a system of continuous loading. It allows for uploading videos as a collection by queueing files, breaking them into pieces and uploading them step-by-step. The administrator can do anything else on their device simultaneously, since the process of uploading is automatized.<\/p>\n\n\n\n<p>When a video has been uploaded, it gets decoded into files of different quality formats, such as 240p, 360p, 480p, 720p and Full HD. The format is chosen automatically with the player of the application while playing the video. The choice depends on the internet speed, i.e., the higher the speed is, the better the video quality is. Even if the internet connection is extremely unstable, the video keeps on playing, but in a lower quality.<\/p>\n\n\n\n<p>The system itself can be characterized by high-speed performance and scalability. We managed to achieve this, gratefully to competent architecture. One server uploads a video, the other transcodes it, and the third server stores a video. Servers never take resources from one another. Consequently, each architecture component can be scaled horizontally in case the load gets higher.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qt is a C++ framework for cross platform app development. It provides for the development of a single application for both operational systems, iOS and Android. Its use allowed us to speed up the development process and save the budget since only one developers\u2019 team was needed for the project.OrbitSoft possesses vast experience creating apps [&hellip;]<\/p>\n","protected":false},"author":214,"featured_media":36648,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[196],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Why we chose Qt for a video application for kids - OrbitSoft Blog<\/title>\n<meta name=\"description\" content=\"In 5 months, we developed a video application for an early learning center. Why did we choose Qt for its development?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/orbitsoft.com\/blog\/video-application\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Why we chose Qt for a video application for kids - OrbitSoft Blog\" \/>\n<meta name=\"twitter:description\" content=\"In 5 months, we developed a video application for an early learning center. Why did we choose Qt for its development?\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/tg_image_2023353369.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:site\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"elevina\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Why we chose Qt for a video application for kids - OrbitSoft Blog","description":"In 5 months, we developed a video application for an early learning center. Why did we choose Qt for its development?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/orbitsoft.com\/blog\/video-application\/","twitter_card":"summary_large_image","twitter_title":"Why we chose Qt for a video application for kids - OrbitSoft Blog","twitter_description":"In 5 months, we developed a video application for an early learning center. Why did we choose Qt for its development?","twitter_image":"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/tg_image_2023353369.jpeg","twitter_creator":"@orbitsoft","twitter_site":"@orbitsoft","twitter_misc":{"Written by":"elevina","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/orbitsoft.com\/blog\/video-application\/","url":"https:\/\/orbitsoft.com\/blog\/video-application\/","name":"Why we chose Qt for a video application for kids - OrbitSoft Blog","isPartOf":{"@id":"https:\/\/orbitsoft.com\/blog\/#website"},"datePublished":"2023-08-25T08:56:20+00:00","dateModified":"2023-08-29T14:51:31+00:00","author":{"@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/f96c7f7c1bcb1cdf7e1750794548b6fa"},"description":"In 5 months, we developed a video application for an early learning center. Why did we choose Qt for its development?","breadcrumb":{"@id":"https:\/\/orbitsoft.com\/blog\/video-application\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orbitsoft.com\/blog\/video-application\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/orbitsoft.com\/blog\/video-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/orbitsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Why we chose Qt for a video application for kids"}]},{"@type":"WebSite","@id":"https:\/\/orbitsoft.com\/blog\/#website","url":"https:\/\/orbitsoft.com\/blog\/","name":"OrbitSoft Blog","description":"Discover the latest in news and resources for OrbitSoft","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/orbitsoft.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/f96c7f7c1bcb1cdf7e1750794548b6fa","name":"elevina","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9f569b41ea8902fc571542fc77005a24?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9f569b41ea8902fc571542fc77005a24?s=96&d=mm&r=g","caption":"elevina"},"url":"https:\/\/orbitsoft.com\/blog\/author\/elevina\/"}]}},"_links":{"self":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/36645"}],"collection":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/users\/214"}],"replies":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=36645"}],"version-history":[{"count":4,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/36645\/revisions"}],"predecessor-version":[{"id":36656,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/36645\/revisions\/36656"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media\/36648"}],"wp:attachment":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=36645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/categories?post=36645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/tags?post=36645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}