<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[MX Player - Medium]]></title>
        <description><![CDATA[MX Player Blog - Medium]]></description>
        <link>https://medium.com/mx-player?source=rss----2e0baff1195f---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>MX Player - Medium</title>
            <link>https://medium.com/mx-player?source=rss----2e0baff1195f---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 10:30:05 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/mx-player" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[India’s First Interactive Film by MX Player]]></title>
            <link>https://medium.com/mx-player/interactive-movie-on-mxplayer-4f6c452cef34?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/4f6c452cef34</guid>
            <category><![CDATA[ott]]></category>
            <category><![CDATA[india-interactive-movie]]></category>
            <category><![CDATA[mx-player]]></category>
            <category><![CDATA[interactive-movie]]></category>
            <category><![CDATA[interactive-film]]></category>
            <dc:creator><![CDATA[Siddharth Mantri]]></dc:creator>
            <pubDate>Fri, 12 Feb 2021 05:01:42 GMT</pubDate>
            <atom:updated>2021-02-12T06:00:31.803Z</atom:updated>
            <content:encoded><![CDATA[<h4>Puts you in control of the story!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BX0E8sT373yFojBpNM2VjA.png" /></figure><p>Ever wondered while watching a film, what if the storyline went in a different direction?</p><blockquote>What if Katappa had not killed Bahubali?</blockquote><blockquote>What if Devdas had married Paro?</blockquote><blockquote>What if Jai had lived on to see Gabbar getting caught?</blockquote><blockquote>What if Jon Snow had not killed Daenerys?</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/916/1*UMD31Abo-QefzL2pSz8mcw.png" /></figure><p>Despite all the advances in technology, in a world where Facebook, Twitter and Youtube feeds are personalised for you, why should films continue to be linear, static and identical for every viewer?</p><p>It’s human nature to revisit past decisions — be it real-life or reel. Now, we can’t help you change past decisions in real life (at least yet) but in ‘reel’ life, we’ve made this possible — with <strong>India’s 1st Interactive film on MX Player</strong> wherein you make (and revisit) decisions that change the storyline.</p><blockquote>It’s your story to control &amp; explore</blockquote><h3>About the Story</h3><p>MX Player’s short film ‘<strong>The Right Click</strong>’ is India’s first-ever interactive film. It’s a story about Ajay, a college student and his efforts to connect with his crush — Dia.</p><p>As a viewer, you get to be a part of that story by putting yourself in Ajay’s shoes and making decisions that out you in control of the story at critical junctures.</p><p><em>For example,</em><br>When Ajay wonders what to do on his first date, two options will show up on the screen. The viewer can <strong>tap one of the two options</strong> and the story will move in that direction.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*gjp5VKzdWPhaxxUHa2zPEA.gif" /><figcaption>The <strong>viewer selects</strong> the “Smell Awesome” option that changes the story</figcaption></figure><p>Let’s say the <strong>viewer does not interact and select any option</strong> — in that case, the <strong>system will choose</strong> a randomly selected option after a certain amount of time, highlight that choice before selecting it and the story will move in that direction.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*xsMbPFELxFRT_C9zZqN5IQ.gif" /><figcaption>The <strong>viewer doesn’t select</strong> and lets the default option drive the story</figcaption></figure><p>Don’t worry, there are no wrong choices. But <strong>if the story leads to a dead-end</strong>, you can simply start over again and choose a different option.</p><p>For example, in the instance below, Ajay’s contemplation on his body odour makes him late for Dia’s house and the store dead ends. You can start again and remember to instruct Ajay to put a perfume early on.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*0z-mC0YUTnFte7i4VCtjXQ.gif" /><figcaption>Story’s <strong>dead-end</strong>, Simply start again by tapping “Restart Movie” or one of the “Previous Choices”</figcaption></figure><p>The viewer is also given an option to scroll through her previous choices, jump back to any of them and start again from that point.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kYz8XSAMSqCJVR7g0Z8Eow.png" /><figcaption>You can always go back and choose a new answer to previous choices</figcaption></figure><h3>How does Interactive video work?</h3><p>The interactive video puts you in charge of the storyline.</p><p>It offers options to choose from at critical places throughout the story.</p><p>There’s a 10-second window to select an option. If nothing is selected, it defaults to one of the options and continues. The story can go in different directions and the viewer can choose from on-screen options and control the storyline.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*3K2ny3aW4C5Ugjhn7oBZqQ.gif" /><figcaption>You decide the fate of the characters by tapping on your desired input</figcaption></figure><h4>Straight forward..but not really?</h4><p>Sounds easy and interesting?<br>For our viewers — absolutely! But trailblazing innovations come with their own set of challenges.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FD1-Lg3vPg-s%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DD1-Lg3vPg-s&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FD1-Lg3vPg-s%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/1e189613015edb39bdafa5e137da3c64/href">https://medium.com/media/1e189613015edb39bdafa5e137da3c64/href</a></iframe><blockquote>The biggest challenge was training our viewers to interact with the film.</blockquote><p>Most of our users haven’t experienced an Interactive Film and would need some getting-used-to.</p><p>At the same time, we ensured that the user experience is seamless, intuitive and delightful. Along with the characters’ expressions, we built an experience that intuitively prompts the viewer to interact with the video and select an option that controls the storyline.</p><p>The interface clearly indicates the time-limit to make a choice and automatically selects an option if the viewer doesn’t make a choice. Going back to revisit the decision point is easy via playback controls.</p><h3>What’s under the hood</h3><p>Think of this interactive movie as being made using many mini-video files together. Based on the user’s input at each fork, the next mini-video is played. In short, it would look like a big tree diagram wherein each branch is a separate video file and at each fork, based on the viewers’ input, the next branch is loaded and played.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dtc9YVHnyr6a1AYdlOGzFQ.jpeg" /></figure><p>The challenge here was to ensure the video loads smoothly, quickly and delivers a flawless experience. This needed collaboration and coordination across Technology, Product Design, and the Film Makers.</p><h4>Technology</h4><p>Interactive video required building a completely new video player providing the interaction controls. MX Player boasts of the world’s most advanced video encoding (e.g. AV1, H.266) that cuts down bandwidth and data consumption significantly without loss of video quality.</p><p>We leveraged our advanced CDN configurations that enable highly optimized caching for a faster load experience.</p><p>We designed the systems architecture such that we can intelligently pre-load video segments.</p><h4>Product Design</h4><p>To deliver a seamless experience that doesn’t entail any learning curve, we designed an intuitive experience that enables users to interact with the video in a simple conversational format.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GiiS_Ye1JkpmXiOXPwhOaA.jpeg" /><figcaption>Ensured to carefully design every state across all different platforms</figcaption></figure><p>The UX teaches the users how to select options and have fun with being in control of the story.</p><p>Allowing users to easily browse “previous choices” and go back anytime in the storyline needed a special carousel added to the custom video player. (See in the image above). This carousel displays a choice’s title and choice image to aid users’ memory about the question. Clicking on these previous choices will start the film from a few seconds before the selected-question for more context.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*exB1OOz_gXMBfzWScLCYBg.jpeg" /></figure><h4>The Filmmakers</h4><p>We worked in tight collaboration with the creative team who drafted the story in a way where the Interactivity was weaved into the narrative seamlessly.</p><p>The concept made room for Interactivity through its story telling which made everything come together as one single unit.</p><p>Imagine being in a lecture, where the speaker interacts with her audience or a high-end restaurant where the chef invites you to participate in cooking, the experience is richer when it lets you interact and participate.</p><p>The interactive film is built on similar lines. It’s designed to allow the end-user to participate and at the same time allows content creators to tell their story in more engaging and immersive format.</p><p>MX Player takes immense pride in its craftsmanship putting the customer at the center of product innovation and design. With India’s first ever interactive film, we expect to disrupt the fundamental paradigm of linearity of film content — bringing deep immersion, interaction and personalization in story telling.</p><blockquote>With India’s first interactive film, MX Player has (again) pushed the boundaries of story telling through films — enabling viewers to immerse and interact with content.</blockquote><h4><a href="https://www.mxplayer.in/movie/watch-the-right-click-movie-online-784ca5351a3f885c48e86e5ffcc03123">Watch “The Right Click” now! India’s 1st ever Interactive OTT video on MX Player</a></h4><p><a href="https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad">Download MX Player on Android</a><br><a href="https://apps.apple.com/in/app/mx-player/id1429703801">Download MX Player on iOS</a><br><a href="http://mxplayer.in/">Watch on Web</a></p><h4>Authors: Shraddha Patil, Siddharth Mantri</h4><p>Edited by: <a href="https://bhavishyagarg.com/">Bhavishya Garg</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4f6c452cef34" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/interactive-movie-on-mxplayer-4f6c452cef34">India’s First Interactive Film by MX Player</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MX ShareKaro: File Sharing App by MX Player]]></title>
            <link>https://medium.com/mx-player/sharekaro-file-sharing-app-by-mx-player-37741b5ee1aa?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/37741b5ee1aa</guid>
            <category><![CDATA[mx-player]]></category>
            <category><![CDATA[ux-case-study]]></category>
            <category><![CDATA[file-sharing-app]]></category>
            <category><![CDATA[sharekaro]]></category>
            <dc:creator><![CDATA[Arushi Nayan]]></dc:creator>
            <pubDate>Tue, 15 Sep 2020 06:53:52 GMT</pubDate>
            <atom:updated>2020-09-15T09:28:41.429Z</atom:updated>
            <content:encoded><![CDATA[<h4>How MX ShareKaro became the best choice for File Sharing on Play Store</h4><blockquote>On Monday, 29 June 2020, the Government of India banned 59 Chinese mobile applications, including top social media platforms such as TikTok, WeChat and Helo, to counter the threat posed by these applications to the country’s <strong>“sovereignty and security”</strong>. SHAREit, UC Browser and shopping apps like Club Factory and Shein were among the other prominent apps that have been blocked amid rising tensions between India and China following clashes at the border two weeks ago.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*r0EWlufBGfz1c-SaTYghdA.jpeg" /></figure><p>Caught in the crossfire, users were left scrambling to find the best alternatives to these banned Chinese apps. From TikTok to SHAREit and many more, the apps have enjoyed millions of users who see no other worthy replacement in sight.</p><h3>The Opportunity</h3><p>With the proliferation of mobile phones and pervasive internet access in modern India, piles of terabytes of personal and work files have been ever surging. With this, the need to easily share files across devices is on the rise. <br>We all need a reliable way to easily share files between phones and PCs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/995/1*52IA0dswAQ7DKdVZwxrIvQ.jpeg" /></figure><p>SHAREit had long been a popular option for Indian users to easily and, more importantly, quickly share files between phones. It made sharing files across devices so easy that it allowed adjacent devices to access files without permission — a major security vulnerability.</p><p>With the recent ban on ShareIt, we found Indian consumers in lack of a reliable and secure file sharing solution. This spurted the idea seed of creating a truly easy, secure, and fast File Sharing App.</p><p>India is the fastest-growing consumer internet market in the world, with 19 billion downloads in 2019. That positions India as the second-largest market for app downloads.</p><h3>How it Turned Out</h3><p>With this start, <strong>MX ShareKaro,</strong> which is created by <strong>MX Media &amp; Entertainment in India, </strong>shaped up to be a better and easy-to-use sharing app with fast and stable transfer speeds. It enables <strong>Quick &amp; Easy File Transfer</strong> without Internet Usage.</p><p>And in less than 60 days of release,</p><blockquote>MX ShareKaro has 4.3⭐ Rating on Google Play Store with 15,417 Reviews.</blockquote><p>Clearly, India accepted MX ShareKaro with wide arms. With 15,417 reviews, MX ShareKaro has still maintained a 4.3⭐ rating on Google Play Store.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vJ-f2aGH2iZwPFzgyg8VZQ.png" /></figure><p>Let’s understand how we created a delightful yet unique file sharing experience.</p><h3>The Challenge</h3><p>Most of us have used file-sharing platforms where you need to follow a sequence of 5-10 steps before you can even get started to share files to a Phone or PC.</p><p>We wanted to make it easy for everyone out there, even those who don’t fully understand Hotspots and WiFis. This became our biggest challenge.</p><blockquote>To collaborate with the Technology team and come up with a file-sharing experience that is so easy, <strong>that even our grandparents can use it</strong>.</blockquote><h3>Goal</h3><p>To become the primary choice for File-Sharing on the Google Play Store.</p><h3>Design Process</h3><p>As most of the companies, our UX Team works mostly between the Product and UI Design teams. We also follow the IDEO’s Human-Centered Design and Lean UX Design Thinking process to make sure that the design decisions are supported by user research and feedback.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HBUlng45qdGzJsGGB_Q9OQ.png" /><figcaption>This is our basic design process</figcaption></figure><h4>Design Sprint to Brainstorm Features</h4><p>One of the advantages of a youthful workforce is you get a lot of great ideas by just organising an online brainstorming session, where everyone can share their thoughts and experiences related to file-sharing in the past. This provided us with a lot of boilerplate ideas and feature ideas to get started with.</p><h4>User Interviews</h4><p>To understand the existing pain points and opportunities, we interviewed and analysed 2-3 participants from all major age groups and tech-savviness.</p><p>This allowed us to understand the user journey in detail and recognise the opportunities within the negative-experiences observed.</p><h4>UX Benchmarking: Competitors Evaluation</h4><p>While there are a number of apps available for File Sharing, only a few meet the criteria of engagement, functionality, visual aesthetics, and information quality. We found a list of 10 best file sharing apps in 2020 on <a href="https://fossbytes.com/best-file-sharing-apps-android/">fossbytes.com</a>.</p><p>The Indian Government blocked the most used ones so more Indian applications came to the rescue of impending woes of file transfers. As the government promoted the use of Indian apps as an alternative to the banned apps, a number of apps were developed to fill the gap caused by the ban. But only a handful few Indian applications had good results and delivery for sharing images, videos, and audio applications quickly.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4qCGmfK_hXoRrChe7Wc3uw.png" /><figcaption>Some of the Indian apps developed for file transfer</figcaption></figure><h4>Wireframing</h4><p>We already had some ideas of how we’d like the file-sharing experience to operate like. This was the time to create wireframes and make clickable mockups to allow stakeholders to experience it.</p><p>Wireframes played an extremely crucial role in shaping up how the app turned out to be. We rigorously iterated these wireframes to create an uber minimal and light version of how we imagine a file-sharing app to be.</p><p>Instead of a hundred options, ShareKaro was imagined to have a simplistic toggle to SEND or RECEIVE.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5MZpS7A7mXTDpHMzxAmdvQ.png" /></figure><h4>Final Designs</h4><p>Post Wireframes and Feedback, we jumped into Sketch to create Hi-Fi mockups of the proposed solutions.</p><p>After the final wireframes were made, feedback and insights were gathered from various teams to validate the design, and our UI team took over the project and started trying possible approaches.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-vCsKZJwh2s5dpEZ_vLFzA.png" /></figure><p>MX ShareKaro shares, sends &amp; receives files and is a better and an easy-to-use sharing app with fast and stable transfer speeds. Also, it can be used for sharing files with MX Player, the most powerful media player.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k6SI51m491h4L66ob2dCNg.png" /><figcaption><a href="http://www.mxplayer.in/download-mx-sharekaro-app">www.mxplayer.in/download-mx-sharekaro-app</a></figcaption></figure><h3>Visual Design</h3><p>As we worked on improving the User Experience, we also worked on refining the visual design of the app.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z-j6J1bFpNuL2UPQ3_mG0g.png" /></figure><p>We followed a rule-based system to support branding, typography, icons, and colours in order to achieve visual consistency with the styling of the app. We tried to match the branding with the MX Player app and used our design system as a base for designing the user interface.</p><h3>After Release</h3><p>We released the first MVP in less than 7 days, and from then, our team is releasing an update almost every week.</p><p>These updates are constantly bringing users their most desired features and changes to the MX ShareKaro App.</p><p>Expert reviews, data analysis and keeping a constant tab on user reviews help us update our roadmap for future versions. Our entire product cycle is meticulously customer-centric.</p><p>We like to act like a genie to our customers.🧞</p><h4>Reviewing User Comments</h4><p>Reading user comments is very important to us for getting valuable insights. We usually analyse MX Platforms by separating the user comments based on the problems they face and the additional features.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XOQk961nikdBN6UxpnYQQA.png" /><figcaption>User reviews on Google Play Store</figcaption></figure><h4>Analysing App Data</h4><p>We analyse journeys, events and brainstorm with the data team to understand if there are any visible frictions or subpar conversions for any funnel.</p><p>This data allows us to look from a holistic perspective and track our Key Metrics. In the case of MX ShareKaro, here are a few high-level KPIs that we track to chart our progress:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Tu2HVap64ZPx-ivyuEYs0w.png" /></figure><h4>The story doesn’t end here</h4><p>MX ShareKaro is just getting started.</p><p>As so many of our users requested, MX ShareKaro will soon also have a complete <strong>File Manager</strong> for you. So, apart from sharing, you’ll be able to do a lot more with your files.</p><h4><a href="https://www.mxplayer.in/download-mx-sharekaro-app"><strong>Try MX ShareKaro App Today</strong></a></h4><p>Comment below if you like this blog post and would like us to cover the behind the scenes of our other recently released chart-topping apps like <a href="https://play.google.com/store/apps/details?id=com.next.innovation.takatak"><strong>MX TakaTak</strong></a> or <a href="https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.online"><strong>MX Player Online</strong></a>.</p><p>👏👏👏 Give us a few claps to appreciate!</p><p><a href="https://blog.mxplayer.in/">MX Player Blog</a> will be back soon with another interesting story. Don’t forget to Follow us to stay notified.</p><p>Edited by: <a href="https://bhavishyagarg.com/">Bhavishya Garg</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=37741b5ee1aa" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/sharekaro-file-sharing-app-by-mx-player-37741b5ee1aa">MX ShareKaro: File Sharing App by MX Player</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[UX @ MX — My Design Internship Experience]]></title>
            <link>https://medium.com/mx-player/ux-mx-my-design-internship-experience-3b9df60e50be?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/3b9df60e50be</guid>
            <category><![CDATA[mx-player]]></category>
            <category><![CDATA[arushi-nayan]]></category>
            <category><![CDATA[ux-internship]]></category>
            <category><![CDATA[mx]]></category>
            <category><![CDATA[mx-player-internship]]></category>
            <dc:creator><![CDATA[Arushi Nayan]]></dc:creator>
            <pubDate>Mon, 27 Apr 2020 13:54:18 GMT</pubDate>
            <atom:updated>2020-04-27T13:54:18.528Z</atom:updated>
            <content:encoded><![CDATA[<h3>UX @ MX — My Design Internship Experience: Arushi Nayan</h3><p>As my 22 weeks of internship at MX Player comes to an end I can feel the change that has happened in me as a person and as a designer, and the change is EFFICACIOUS!! This experience was so valuable as it helped me to build confidence as a designer, which I lacked before.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*A2khEtcr6imSf_v8eP4iFg.gif" /><figcaption>It’s really hard to find a nice Internship!</figcaption></figure><p><em>As per my college guidelines, it was necessary for me to do an internship in the 8th Semester. So I was in a lot of dilemmas for which company to apply. I finally decided to apply to a couple of organisations whose work I really found interesting. And I would like to thank God for His unprecedented plans that within two weeks after the interview process I got an internship opportunity at MX Player.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*guBydlRUsiV469rhiIpt5Q.gif" /><figcaption>All anxious and nervous!!</figcaption></figure><p>The very first day when I stepped foot into the office, I was very anxious and curious about what’s going to happen?? But everything went smoothly and I was surprised to see how the employees treated me with full generosity. I was given full freedom to talk to anyone. But being an introvert I never took advantage of that freedom!!</p><h3>Design Team @ MX 👫👬👭</h3><p>I would take this opportunity to extend an earnest feeling of gratitude and a vote of thanks to the following people for helping and motivating me during my internship. Firstly, my manager who is an Amazeballs. I was extremely lucky to work with him and was astonished by his extraordinary abilities to be calm and poised in every situation. I was so moved by seeing his dedication towards work, and he’ll definitely be one of my biggest inspirations in life.</p><p>Secondly, I offer my sincere appreciation for the learning opportunities provided by my mentor. I like to thank him for his constant zest, which kept me motivated through the 22 weeks of internship. My mentor not only discussed and guided me through the projects but also allowed me to take control. He gave me a sense of ownership by giving me total freedom on developing initial design concepts of a given problem. Also, he taught me how to frame and approach a problem statement which made my work much easier and gave me a better perspective. As it’s truly said:</p><blockquote><strong>A problem well</strong> stated is <strong>a problem half</strong>-<strong>solved</strong>.</blockquote><blockquote>— Charles Kettering</blockquote><p>Also, his patience and leadership taught me a lot, and I’ll always admire and respect him.</p><p>Finally, my colleagues and my entire design team, without them I cannot imagine that I would have survived these 22 weeks. They showed me unconditional support and trust and always kept my morale high. I was so lucky to have people who understood each other and worked well together. Being part of a great team at work is a phenomenal feeling. And I really felt that. Also, I made a few FRIENDS FOREVER!!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZfYAwYM7PvSE-qBKHkwPuw.jpeg" /><figcaption>One of our unplanned plans!! (Haters will say some are photoshopped)</figcaption></figure><h3>Design Process @ MX 💎</h3><p>I would also like to give a brief idea of the design process at MX.</p><p>Like in most companies, our UX Team works mostly between the Product Team and UI Design teams.</p><p>It usually starts with a detailed Product Requirements Document from the Product Team. These could have either the new features in MX or improvement on the existing features. Improvements that may arise from the testing, user reviews, internal review, or user behaviour data.</p><p>Either way, we start with a PRD (Product Requirements Document) in which the product team details their ideas, context, and reasons for the requirement. Upon delivery, it’s common to have Requirement Analysis and Brainstorming Sessions with the Product team for further clarity on the challenge at hand.</p><p>We convert these product challenges into HMW (How Might We) Statements to kickstart the brainstorming and research stages. This allows us to frame a proper problem statement and an ideal state of solving it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eBOJuBy2Cjh6hMKCgtCiuQ.png" /><figcaption>UX Design Team at <a href="https://www.mxplayer.in/">MX Player</a></figcaption></figure><p>This is followed by rigorous product, market, and user research activities that help us further understand the problem at hand and come up with relevant ideas to make the experience a lot better.</p><p>Upon completion of the research, we start working on the deliverables to the UI Design team. These include low-fidelity wireframes and a detailed <strong>User Experience Document</strong>. The UXD contains all the possible flows for the product, our overall strategy for the feature, and its reasoning.</p><p>This becomes the starting point for the UI Design Team. We may conduct a meeting with Stakeholders along with the UI Design team for explaining these flows and docs. This allows us to bridge any communication gap and make sure the UI Design team understands the challenge rigorously.</p><p>And this completes our UX process for a single task/challenge.</p><p>But the work does not end here. We constantly help the UI design team till the final High-Fidelity-Designs or Prototypes are ready for product to review.<br>We sometimes also test the prototypes with teammates in the office to get further clarity on what we expect and how users react.</p><p>Upon this, the UI Design team delivers the final designs to the development team. Once the feature is developed, the design team tests the final product for expected experience and aesthetics. Only then the feature is moved to the LIVE pipeline.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HPN-3EOJVner4fY16ygqnw.png" /><figcaption><a href="https://dribbble.com/mx-player">We share a few glimpses of our Design at our Dribbble Handle. Follow now!</a></figcaption></figure><h3>Work Culture @ MX</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/286/1*UdxYPfhhTjUpq3uBTeByCw.gif" /><figcaption>Cheer UP!!</figcaption></figure><p>It’s a place where one can be oneself and work with no pressure. All employees are valued, supported, and nurtured. I was really happy to see how I was surrounded by an encouraging environment that values human resources. I also saw how a company focuses on bringing out the best in their employees, even in adverse circumstances.</p><p>Now I totally believe that the work environment plays a very important role in keeping the spirit high. As it is an intangible ecosystem that makes some places great to work and other places toxic.</p><h3>Fun and Perks @ MX</h3><p>Having a design manager who not only cares about the work but also about the growth of his fellow designers is a blessing. As of his idea to have a FRIYAYY Session where we were supposed to leave all our office work for 3–4 hours and work on the skills we wanted to acquire. We had a great time brainstorming and watching fascinating videos all Friday evening. This was just an experiment to snap out of the daily monotony from our office life. IMPRESSIVE ISN’T IT?</p><p>MX also believes that a little enjoyment now and then is something very acceptable –so they always had some kind of Gaming Championship going on. A lot of enthusiastic faces with boosted energy were always ready to participate and I also was one of them. These activities taught me unity, independence, strategy planning, patience and spirit of hope.</p><p>OK, Did I mention about the birthday celebrations? Yeah! At MX, Birthday Celebrations are important AND Birthday Bumps are even more important!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yVLlgFlIVO6yLyJb6KJSBQ.png" /></figure><p><strong>Also keeping up with the trend</strong>, ticking some of the things from my bucket list and all thanks to MX Player.</p><p>Work with a super talented group of people — ✅CHECK</p><p>Learn UX Documentation — ✅CHECK</p><p>Amazing snacks and KFC — ✅CHECK</p><p>Learn to travel in Mumbai Local —✅ CHECK</p><p>Become a part of something BIG — ✅CHECK</p><blockquote>I would like to give my answer to a very hyped question which is “<strong>Why An Internship Is Important</strong>?”</blockquote><h4>Why an Internship is Important for you?</h4><p>One of the key experiences people get during the time as an undergraduate is<strong> doing an internship</strong>. Gaining work experience is key for <strong>boosting employability</strong> and its a great opportunity for a student or young professional to work alongside regular staff in a workplace, to gain some <strong>basic hands-on experience</strong> and also an <strong>educational professional insight </strong>into a career path. Also, students gain a lot of <strong>soft-skills</strong> like professional work ethics, good communication skills, time management, teamwork, and so on. It&#39;s the best formula to<strong> explore</strong> oneself and also a different area of interests before getting into a full-time job. So, in today’s <strong>competitive economy</strong>, it is crucial that students make an internship a top priority.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/499/1*upds9oU3Sf4AGMZCCJ6s0g.gif" /><figcaption>Bubyeee!!! All the Best.</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3b9df60e50be" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/ux-mx-my-design-internship-experience-3b9df60e50be">UX @ MX — My Design Internship Experience</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Framework to Design Magnet-Like Thumbnails ]]></title>
            <link>https://medium.com/mx-player/framework-to-design-thumbnails-that-attracts-attention-a2258ec37db6?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/a2258ec37db6</guid>
            <category><![CDATA[mx-player]]></category>
            <category><![CDATA[graphic-design-franework]]></category>
            <category><![CDATA[mx-design]]></category>
            <category><![CDATA[design-thumbnails]]></category>
            <dc:creator><![CDATA[Tanvi Sharma]]></dc:creator>
            <pubDate>Fri, 28 Feb 2020 14:11:09 GMT</pubDate>
            <atom:updated>2023-10-27T06:37:24.673Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VOvGHYG5k7MOKs__8M0_-w.png" /></figure><p><strong>2,000+ years </strong>ago, a famous Greek teacher, scientist, and rhetorician, <strong>Aristotle</strong>, taught his students that there were <strong>3 basic ways of convincing your audience of something</strong> — or at least getting their <strong>attention</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0A8YaV6CUNWn6r-y.png" /></figure><p>He called them <strong>Ethos</strong>, <strong>Pathos,</strong> and <strong>Logos</strong> in his book <em>The Art of Rhetoric</em>. When I explain further, it may seem like an obvious thought to you.</p><p><em>But the key is having a </em><strong><em>strong awareness </em></strong><em>of these 3 Pillars to crack the code of </em><strong><em>how to be most convincing to your audience</em></strong><em>.</em></p><p>Inspired by this, we created a FRAMEWORK to design compelling Thumbnails. For simplicity purposes, we’re going to now rename ETHOS, PATHOS, and LOGOS to new names.</p><h3>The framework to Design Magnet-like 🧲 Thumbnails</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ezcfxKaoiXZNKSQnOUAgFA.png" /></figure><h3>Credibility</h3><p>Pertains to the credibility of the image/content.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dfKjnXBObofBtVIL4JMxpw.png" /></figure><p>The aim here is to convince the audience that the image/content is reliable and credible. We humans, tend to trust things that we know or consider known by the world. There are many ways to exude credibility in your thumbnails. Here are a few of them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zmJzHbOP0z6rMRRs4GWj_w.png" /></figure><h3>Prioritise Main/Renowned Characters</h3><p>Movies that actors like <em>Shahrukh Khan</em> or <em>Leonardo DiCaprio</em> make are mostly all blockbusters <strong>for a reason</strong>. Famous people enjoy a high status in our society.</p><p>Our brain tends to connect past good-experience to the expectation of good in the future as well. In simple words, we get attracted to people we know or like.</p><blockquote><em>“We get attracted to people we Know or Like”</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*DFianptRqWCLGnSL.png" /></figure><p>Here’s an example of how <strong>Credibility</strong> plays a role in Content Selection</p><p>Here’s a textbook Ethos example from <em>Advertising</em>. In it, notice how deftly the story of LeBron James <em>becomes</em> the story of Nike.</p><p>Notice how LeBron’s professional career and Nike shoes interweave and hit the viewer with a powerful one-two punch — all without so much as a mention of the word “Nike.”</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FDGl_JVf4Mmw%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DDGl_JVf4Mmw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FDGl_JVf4Mmw%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/c92d475de6520680b617d21617b5ad39/href">https://medium.com/media/c92d475de6520680b617d21617b5ad39/href</a></iframe><p>You have to look closely to even see any <em>shoes</em> in this ethos commercial. Nike’s logo does appear, but its flash is brief and tasteful.</p><p>LeBron James is one of the most respected, credible, and talented basketball players of all time. This Ethos appeal leaves no doubt that Nike and LeBron are in it to win it, together. Even though it’s subtle.</p><h3>The Sharpness of the Image</h3><p>When designing thumbnails for Movies or TV Shows, we often try to show the adrenaline rush with certain action shots from the movie itself.</p><p>But it’s not as straightforward as it may seem. In most cases, we don’t find an action shot with all the main characters together. If we ever do, at least one of the characters would be in a mid-action blur position.</p><p>Hence we often creatively take the characters separately from their glory shots and compile them all together into an action-packed banner. Here we make sure all the images are sharp and super-crisp for maximum impact on the users.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cpxUHnPHsO7BDm_e3kienA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Fk3hL9AcYKOSXLGxKbHcmw.jpeg" /></figure><h3>Impactful Typography</h3><p>Ever seen the internet memes about <strong>Comic Sans Font</strong>? This is how huge impact typography may have on how we remember things.</p><p>In communicating a message, a balance has to be achieved between the visual and the verbal aspects of a design.</p><p><strong>Visual</strong>: How the Image and Font looks aesthetically<br><strong>Verbal</strong>: Meaning of the Words</p><p>While designing thumbnails, we often focus on the Visual aspect of the banner, more than the Verbal aspect. We have created a set of open guidelines matching moods and genres with a set of Fonts. This allows us to keep consistency and helps us elicit the intended emotions in the users.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k3W5SLMiMSstxHOltCGALQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MbAvcRyxmrhBJDVCizoNCA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vnLBnrvfD9H-zvuVPpIFUw.jpeg" /></figure><h3>Timing and Relevance of the Message/Content</h3><p>This is often decided by the external factors, but to make sure you hit the right nerve with the users, you need to realize <strong>what they want to watch</strong> and <strong>when</strong>.</p><p>It’s not all about the visuals when it comes to the posters. We attract the users’ attention when we use “just the right” set of words at the “right time”.</p><p>For example, promoting this MX Original show at the time of General Elections helped us attract a lot of viewers to it. This happened because the <strong>timing of this poster</strong> and the <strong>current scenario </strong>of the user (ongoing elections) matched perfectly together.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*s0GgGt_aAUEN1TMpcwZ1JA.jpeg" /></figure><h3>Emotions</h3><p>This refers to the emotional appeal of the image/content.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5ihRItpS9B8Yv-8g5SYyiQ.png" /></figure><p>The power of an image to evoke past memories can be surprisingly moving. We can be transported right back to a particular time or place and remember everything that we felt at the time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*dQ8Tw1P1HeCdgM5q1FH9sw.jpeg" /><figcaption><strong>Images make us FEEL </strong>| Image credits: <a href="http://www.flickr.com/photos/traduzindomarias/3974424455/">Mike Wells</a> | <strong>Starving boy and missionary</strong></figcaption></figure><p>We’re more often moved by our emotions than by logic or common sense, so emotions are a powerful mode of persuasion.</p><p><a href="https://www.smithsonianmag.com/science-nature/what-emotion-goes-viral-fastest-180950182/">Researchers at Beihang University</a> in China found in a study that <strong>JOY</strong> moves faster than <strong>SADNESS</strong> or <strong>DISGUST</strong>, but nothing is speedier than <strong>RAGE</strong>.</p><blockquote>JOY moves faster than SADNESS or DISGUST, but nothing is speedier than RAGE.</blockquote><p>The one emotion that outpaced RAGE/ANGER in Berger’s study was <strong>AWE</strong>, the feelings of wonder and excitement that come from encountering great beauty or knowledge, such as a news report of an important discovery in the fight against cancer.</p><p>“<em>Awe gets our hearts racing and our blood pumping</em>,” says Jonah Berger, a professor of marketing at the Wharton School at the University of Pennsylvania.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wH022AyzUVdNP7KE28yAiA.png" /></figure><h3>Images that Tell a Story</h3><p>Stories are the best way to invoke emotions in humans. We have all been accustomed to like stories since we were kids. Stories are not just verbal. A <strong>picture</strong> is <strong>worth a thousand words.</strong></p><p>Let’s take a simple example here. For one of our most famous shows, <strong>Queen</strong>, we created a series of posters which showed the journey of the main character from a <strong>schoolgirl</strong>, to a <strong>child-actress</strong> and then eventually a <strong>CM</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UyCtGY5lSAoafn6cwJVRgQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CSP0BGls8Xk5zplODLBwDQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qMUfDFG4bEsmIky6P1qJmQ.jpeg" /><figcaption>How we used images to tell a story with the <strong>QUEEN</strong> posters.</figcaption></figure><p>A simple way to design with a story is to constantly explore the non-tangible aspects of an image. Go beyond just the first level of cognition. You can play with the elements, background, colour, and overall scene to bring out the stories behind the image.</p><h3>Faces with Strong Emotions</h3><p>There’s been <a href="https://motherboard.vice.com/en_us/article/zme97a/inside-the-strange-world-of-youtube-thumbnails">article</a> after <a href="https://www.socialmediaexaminer.com/create-video-thumbnails-that-boost-views/">article</a> recommending that a <strong>human face</strong> in a thumbnail creates an emotional connection for the potential viewer and is far more likely to be clicked.</p><p>Facial expressions give a preview of the emotions your video will evoke. If you can hint that the content of the video is shocking or will change the viewer’s current perspective in some drastic way, this is a bonus. But only if it’s really true!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LM8Rhy1RIOTeuVUS3r9KJA.png" /></figure><p>It is always better to opt for a human face in the thumbnail whenever possible. Ideally, a close-up shot must be used. This arrangement will make the image stand out, irrespective of the viewing device. The idea is to connect with the viewers and to establish emotional contact with them.</p><p>We, humans, tend to resonate back with the same emotions that we see in a person before us. If we see an image, filled with eerie and dysfunctional elements, we immediately realize that it may be a Horror Movie.</p><h3>Camera Shot Composition</h3><p>We try to ensure that the images follow a Rule of Thirds. A dark image is hard to see and unlikely to catch the eye. Use bright and contrasting colours to make your thumbnail pop.</p><h3>Message</h3><p>Is the information that we present to the Viewer.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uNGN9OPXGclXBfCRe2_UXg.png" /></figure><p>The<strong> Message</strong> aims to convince an audience by using logic and reason. Also called “<strong>the logical appeal</strong>”.</p><p>When it comes to Graphic Design, we often forget the VERBAL aspect of a design.</p><p>It’s not shocking that your CORE MESSAGE is one of the 3 pillars that help you attract the attention of users. If the users don’t understand what the content is about, no amount of visual design would help make it better.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Saycp2frhgkAjmhNi_P3cQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OEU_5x21DA4yXbPO5nZFhw.png" /></figure><h3>Images Consistent with the Story/Title</h3><p>Images and the Story/Title of the content should be consistent with each other. A Word alone, let’s say, GHOST, isn’t enough to excite the users. But if you combine it with a horror-imagery, it instantly gives the user a quick-feel about the content.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*h-W9PFu_7xTXua5oCHa6og.png" /></figure><h3>Not More than 3 Words</h3><p>This is a simple rule we try to follow when designing thumbnails. We believe that users don’t read a lot. They have less than 1 second to evaluate if they’d like to watch content. By keeping the overall message as less than 3 words, we make it easier for users to understand the content.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*o8WR1mcmb5CNCscPWSmSVw.png" /></figure><h3>Theme based on Genre &amp; Language</h3><p>We define the<strong> colour </strong>and <strong>image themes</strong> for most of our top Languages and Genres. This helps users unconsciously understand the message quicker if keep the designs for a type of content similar.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MWUNIhrEzBMYdcUwxSZotw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g590Z9bmk7IgNCJZPV2vQw.png" /></figure><h3>Visual Consistency across Platform</h3><p>Similar to the first point, visual language is also part of the overall message. If you define proper visual rules for each type of content, it helps users comprehend the design in as little time as possible.</p><p>Keep these three pillars like <strong>3 CARDS</strong> in your mind every time you are designing something for attention.</p><p>You can <strong>play any of these 3</strong> or <strong>mix them together</strong> to create graphics or designs that users <em>can’t resist but click</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/556/1*PiVKlroIjZRuLpTRFd3UKw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/555/1*lq9JUD-h7oFV1OFZu1zUDw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/555/1*9XfvxLni3pmNU6ZXeKHu3Q.png" /></figure><h3>About MX Player</h3><p>You can watch <strong>Premium Movies</strong>, <strong>TV Shows</strong>, <strong>Web Series</strong> and a lot more on MX Player, <strong>all for FREE</strong>.</p><h3>Stream TV Channels LIVE on MX for FREE</h3><p><a href="https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad">Download MX Player on Android</a><br><a href="https://apps.apple.com/in/app/mx-player/id1429703801">Download MX Player on iOS</a></p><p>Edited by: <a href="https://bhavishyagarg.com/">Bhavishya Garg</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a2258ec37db6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/framework-to-design-thumbnails-that-attracts-attention-a2258ec37db6">The Framework to Design Magnet-Like Thumbnails 🧲</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How MX Personalised News Updates for India during Elections]]></title>
            <link>https://medium.com/mx-player/how-mx-personalised-news-updates-for-india-during-elections-ba5c437bb3db?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/ba5c437bb3db</guid>
            <category><![CDATA[personalised-news]]></category>
            <category><![CDATA[ux]]></category>
            <category><![CDATA[mx-player]]></category>
            <category><![CDATA[indian-elections-2019]]></category>
            <dc:creator><![CDATA[Bhoomika Wadhwani]]></dc:creator>
            <pubDate>Mon, 10 Feb 2020 09:38:41 GMT</pubDate>
            <atom:updated>2020-02-10T09:49:48.607Z</atom:updated>
            <content:encoded><![CDATA[<h3>How MX Personalised the News Updates for India during Elections</h3><p>Story of how the <strong>MX Player</strong> team personalised Content for every user based on Data, Social Trends and a lot more during <strong>General</strong> <strong>Elections of India</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rptqOjhGa2Gf6wGl6aVIDw.png" /></figure><p>Indian Elections are an extremely crucial time for Indian News Channels. Hundreds of millions of Indians tune in for frenzied updates on the day-long vote-counting process, Speeches and a lot more.</p><p>But at the same time, this leads to the <em>overwhelming amount of content being thrown at the viewers</em>. Some, which may not be relevant to them at all.</p><blockquote><em>This is the story of how </em><strong><em>MX Player</em></strong><em> ensured that everyone gets the right news during Elections based on their demographics and other relevant data.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*vwJ465d8NGoAiaB7.jpeg" /><figcaption>Source: <a href="https://www.shutterstock.com/image-illustration/ballot-box-flag-india-144446341">Shutterstock</a></figcaption></figure><p>For a journalism graduate, running the <strong>News Campaigns</strong> for the <strong>General Elections of the World’s Largest Democracy </strong>is a dream. Thanks to the empowering team at <a href="https://www.mxplayer.in/">MX Player</a>, I got to live the dream in the very first year of my employment.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/396/0*9XV_lNOuKwjELfWg.gif" /></figure><h3>Background</h3><p>The Indian general election is known for being the <em>largest democratic exercise</em> in the world.</p><p>In the spring of 2019, when the country embarked on a six-week-long vote to fill the seats of the lower house of the parliament, a staggering <strong>900 million people were called to the polls</strong> and the <strong>voter turnout</strong> was pegged at an <strong>all-time high of 67%</strong>.</p><h3>Live TV Channels on MX Player</h3><p><strong>MX Player</strong> has a large catalogue of <strong>LIVE</strong> channels. With <strong>200+ channels </strong>across various genres of<strong> News</strong>, <strong>Movies</strong>, <strong>Music</strong>, <strong>Entertainment</strong> gave this breakout OTT a <em>wholesome experience</em> for users in all prominent languages in India.</p><blockquote><strong><em>MX Player</em></strong><em> had realised early that Elections were a great way to engage the Audience.</em></blockquote><p>By the end of 2018, after the Vidhan Sabha Elections in 5 states i.e. Madhya Pradesh, Rajasthan, Chhattisgarh, Telangana &amp; Mizoram, everyone at <strong>MX Player</strong> had realized that elections were a great way to engage its audience by <strong>bringing the news of their own city &amp; state</strong> right <strong>onto their fingertips</strong>.</p><p>This is what the popular research study groups later found as well:</p><blockquote>“When we delved deeper into the types of content that attracted <strong>higher levels of audience engagement</strong> (during Indian Elections), we found that <strong>video narratives</strong>, in general, <strong>fared better</strong>.” said <a href="https://www.niemanlab.org/2019/06/during-the-indian-election-news-audiences-consumed-a-wide-and-diverse-range-of-sources/">Nieman Lab in a Research Study</a></blockquote><p>Furthermore, here is how many viewers tuned into <strong>YouTube Livestreams</strong> during the Elections.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Kx0FyWXd9UV2X0xR.png" /></figure><p>Undeniably then, <strong>General Elections</strong> became the most crucial agenda for the <em>First Two Quarters</em> of <strong>2019</strong>.</p><h3>Planning for the Elections</h3><p>Content Originals team commissioned two original shows that were specifically for elections.</p><h4>Sawaal Vote Ka</h4><p>News Anchors went to top Lok Sabha constituencies, brought in representatives from the political parties contesting and organised a discussion wherein a <strong>live audience asked questions</strong> and <strong>discussed the issues prevalent in the specific constituencies</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*s09epldeQE_DgWwl_QdzFg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*JSx5nFe0pfFigMeHlu7Xig.jpeg" /></figure><h4>Kiski Sarkar</h4><p>An <strong>Info-Comedy Series</strong> with some of <strong>India’s finest and upcoming comedians</strong>. The 5 segments in the series are:<br><em>Mythron</em> by <em>Anirban Dasgupta</em><br><em>Baat Cheat</em> by <em>Prashasti</em><br><em>G.E.E.T. Coaching Classes</em> by <em>Saurav Mehta</em><br><em>Mere Ek Vote Se Kya Hoga</em> by <em>Rahul Dua</em> and <em>Nishant Suri</em><br><em>Peg Pe Charcha</em> by <em>Rahul Subramaniam</em> and <em>Kumar Varun</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cdtTEutRXt7Oi9NjKXqI4Q.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CYJfZGVPle4UIcBYPXn19g.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/396/0*YQSSIKyddd11_yp1.gif" /></figure><h3>More Live Channels</h3><p>The Content Acquisition Team worked constantly to bring in more LIVE channels for everyone on MX.</p><p>This allowed <strong>MX Player</strong> to gradually build a long list of LIVE channels from almost every genre.</p><p>Users on MX could:<br><strong>Watch these TV Channels LIVE</strong> on their devices, and they can also <strong>access the Past Episodes &amp; Content</strong>. Never miss your Shows again.</p><h3>Content Programming for Elections</h3><p>The Content Programming team gave more and more <strong>strategic visibility</strong> to various <strong>news stories </strong>based on what was popular, relevant or unique for the users. They constantly experimented with the Headlines, Creatives, and Languages for all types of Audience. The #MXDesign Team came up with reformed graphics to make the story enticing enough.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*coX7zyZbECmcjwxN.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/317/0*Q6MwkRuLFh5cYmFZ.gif" /></figure><p>The Product &amp; Tech teams ensured that the <strong>viewing experience was seamless</strong> enough for the user.</p><p>A remote like UX for Channels allowed users to easily switch between channels or watch previously streamed Speeches or Debates.</p><p>Hundreds of Thousand of users were tuning in to watch every nail-biting update of the General Elections 2019.</p><h3>Televisions VS Online Streaming</h3><p>The behaviour of New India is constantly changing in terms of how they consume their news. As opposed to long-form shows, they were now used to short bites of the most relevant news.</p><blockquote><strong><em>Relevant News Bites</em></strong><em> + </em><strong><em>Timed to the Perfection</em></strong><em> = </em><strong><em>Users’ Attention</em></strong></blockquote><p><em>Technology</em> plays a crucial role here by acting as a phenomenal enabler.</p><h3>Personalised Notifications</h3><p>Notifications, when made especially relevant and timed rightly for each user, makes for a perfect recipe for Users Attention.</p><blockquote><em>For users who hardly/never streamed content online, Notifications acted as a powerful conversion touchpoint.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*a0hxKQ2OmbIcu-PV.png" /></figure><h3>Examples</h3><p>Suppose a user is from <strong>Varanasi</strong>, the Lok Sabha constituency with the <strong>most eye-catching fight between Rahul Gandhi</strong> &amp; <strong>Narendra Modi</strong>. It wouldn’t be wrong to assume that s/he is interested to know what these two candidates have to say about his/her city.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*a4kDjWFS8W9Nrh-3.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*F4_Z6I9Drs-5oB6P.jpeg" /></figure><p>Such notifications raised curiosity among inactive users and they returned back to Tune Into these special interviews.</p><p><strong>For users, who stream often online, depending upon their geographical area, the content was programmed accordingly.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_8DnOhSZkOneIzNx.png" /></figure><p>A user from <strong>Kerala</strong> is bound to see an interview with <strong>Shashi Tharoor</strong>.<br>While someone from <strong>UP</strong>, ought to see <strong>Smriti Irani</strong>.</p><p>Such personalizations didn’t always work. They’re meant NOT to. They’re just like experiments. In the end, these experiments always bought us closer to understanding what every user on MX wants/are interested in.</p><blockquote><em>These Experiments always bought us closer to understanding what users on </em><strong><em>MX Player</em></strong><em> want/engage with.</em></blockquote><p>We at MX are still learning more and more every day. Similar programming streamed yesterday with <strong>Delhi Election 2020</strong>. Kejriwal Speeches to Opposition Manifestos. MX Player covered it all.</p><p>Not just News, you can watch <strong>Premium Movies</strong>, <strong>TV Shows</strong>, <strong>Web Series</strong> and a lot more on MX Player, all for FREE.</p><h3>Stream TV Channels LIVE on MX for FREE</h3><p><a href="https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad">Download MX Player on Android</a><br><a href="https://apps.apple.com/in/app/mx-player/id1429703801">Download MX Player on iOS</a></p><p>Edited by: <a href="https://bhavishyagarg.com/">Bhavishya Garg</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ba5c437bb3db" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/how-mx-personalised-news-updates-for-india-during-elections-ba5c437bb3db">How MX Personalised News Updates for India during Elections</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How MX Player introduced Audio Streaming for over 200 Million Users]]></title>
            <link>https://medium.com/mx-player/how-mx-player-introduced-audio-streaming-for-over-200-million-users-6cdc1da5aab?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/6cdc1da5aab</guid>
            <category><![CDATA[medium]]></category>
            <category><![CDATA[music-ux]]></category>
            <category><![CDATA[music-ui]]></category>
            <category><![CDATA[designing-for-music]]></category>
            <category><![CDATA[mx-player]]></category>
            <dc:creator><![CDATA[Pooja Naik-Loke]]></dc:creator>
            <pubDate>Fri, 10 Jan 2020 14:21:30 GMT</pubDate>
            <atom:updated>2020-01-10T14:21:30.251Z</atom:updated>
            <content:encoded><![CDATA[<p>Story of how we designed a delightful music-audio streaming experience in MX Player.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wHbYQxAJhL8fSgsnqymAOQ.png" /></figure><p><strong>India is the fastest-growing entertainment and media market globally and is expected to keep that momentum in 2020 and beyond.</strong></p><p>Audio and Video consumption both have seen a growth spurt due to <em>increased digitisation</em> and <em>penetration of the Internet</em>.</p><p>MX Player initially introduced its OTT platform in 2018 which allowed users to watch <em>Premium Movies</em>, <em>TV Shows</em>, and <em>Other Video Content</em>. To date, none of the major players in media, like Netflix, Prime or Apple TV support Audio Streaming within their video platform.</p><blockquote><strong><em>Would Audio and Video Streaming, if put together, cannibalise each other?</em></strong></blockquote><p>This question was the major question in our head. We did not want the Audio Streaming to negatively impact our Video Engagement. But after some research, we realised, that both <strong>Audio </strong>and <strong>Video</strong> have their own place in users’ life.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sivD_44sIJ1GVULtrTWdlw.png" /></figure><p><strong>80% of surveyed internet users</strong> identified themselves as “<strong>music fanatics</strong>” or “<strong>music lovers</strong>”, higher than the corresponding global average of 54%.</p><p>Around <strong>10% of the 1.3 billion population of India, stream music online</strong>. But the current penetration for <em>subscription music</em> services in India is <strong>less than 1% </strong>among all online music listeners.</p><p>This means, <strong>90% of India doesn’t yet pay for Music</strong>. Hence naturally they are quite used to the music experience with Ads.</p><p>The <strong>highest rate of growth for engagement</strong> is in the <strong>16–24-year-old</strong> age group, with <strong>97%</strong> of that group accessing a music streaming service in the past month (+10% from 2018).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9_EwMJs_dnOmeBSJ.png" /></figure><p>Furthermore, MX Player already had a Tab for <strong>Music Videos</strong>. In this tab, users can explore music videos and play them on any device. We wanted to make sure we clearly segregated Audio and Music Videos from each other.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sFS9_ApPCeResXYY.png" /></figure><p>We knew that there was still a huge audience who likes to just stream Audio in the background most of the time. Moreover, the videos naturally take more internet data than just streaming audio files.</p><p>Hence, trusting the data and research, we started designing the Audio Experience in MX.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/337/0*3qLqnFsXDGMAUNxK.gif" /></figure><h3>Music Powered By Gaana</h3><p>Soon in this process, <strong>Gaana and MX Player partnered</strong> to offer a seamless music experience with premium music quality and inventory within MX Player.</p><p>It was evident from the data that nearly 80% of all the traffic comes from the top charts (International Top 50, Bollywood Top 50, etc.) on all popular audio streaming platforms. Hence we created an interface that is familiar and extremely easy to navigate.</p><p>We added a carousel of <strong>Music Videos</strong> to also provide users with a gateway into Video Music within the Audio Experience.</p><p>Within this, you can search or stream songs of almost every major Artist or Album. You can search either by text or by voice.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*u8ejEAdvuMDodXNI.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*G7W7FEDuMMzJva33.png" /></figure><h3>Add-On Experiences</h3><p>On top of Gaana, MX introduced a bunch of MX Exclusive features and will continue to keep doing so. One example of such an add-on feature is the interaction below for Changing The Song or Play/Pause.</p><h3>Check it out for yourself</h3><p><a href="https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad">Download MX Player on Android</a><br><a href="https://apps.apple.com/in/app/mx-player/id1429703801">Download MX Player on iOS</a></p><h3>Statistics Sources</h3><p>The Indian Music Institute Study, 2018<br><a href="https://indianmi.org/?id=12060&amp;t=Digital%20Music%20Study,%202019">https://indianmi.org/?id=12060&amp;t=Digital%20Music%20Study,%202019</a></p><p><a href="https://www2.deloitte.com/content/dam/Deloitte/in/Documents/technology-media-telecommunications/in-tmt-rise-of-on-demand-content.pdf">Deloitte</a> Research</p><p>Edited by: <a href="https://bhavishyagarg.com/">Bhavishya Garg</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6cdc1da5aab" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/how-mx-player-introduced-audio-streaming-for-over-200-million-users-6cdc1da5aab">How MX Player introduced Audio Streaming for over 200 Million Users</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MX Content Factory: A Distributed Auto-Scaling Content Asset Processing System]]></title>
            <link>https://medium.com/mx-player/mx-content-factory-1c774706ecac?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/1c774706ecac</guid>
            <category><![CDATA[distributed-systems]]></category>
            <category><![CDATA[cluster-management]]></category>
            <category><![CDATA[content-factory]]></category>
            <category><![CDATA[autoscale]]></category>
            <category><![CDATA[asset-contents]]></category>
            <dc:creator><![CDATA[Wei Zhuo]]></dc:creator>
            <pubDate>Fri, 06 Sep 2019 08:42:46 GMT</pubDate>
            <atom:updated>2019-09-06T11:28:24.962Z</atom:updated>
            <content:encoded><![CDATA[<h3>Abstract</h3><p>MX Player now presents millions of online content to our users. The contents are ingested from different vendors that follow diverse standards. They are of mixed quality and different formats. To ensure the best user experience, the contents need to be verified and processed before exposing on the app. For better system architecture, a consolidated content asset shall be used throughout the entire MX Player system. We have designed and developed the MX Content Factory(MCF), a distributed content assets processing system, to accomplish the goal.</p><p>The MCF system manages the whole procedure of content processing. It converts the content’s video, audio, subtitles, and thumbnails to unified formats and packages them to a structured content asset. The content asset is provided to downstream systems to support content consumption on MX Player.</p><p>It is a distributed system built on AWS EC2 cluster. It can auto-scale according to the projected workload and available resources. Thus the system is capable of handling sudden and emergency tasks at high speed and low cost.</p><p>This article briefly introduces the MCF system, including its architecture, functionalities, and components.</p><h3>System Overview</h3><figure><img alt="Figure 1. System Position" src="https://cdn-images-1.medium.com/max/1024/1*ZX-Pu6hqPZSUsrB9cdXsTg.jpeg" /><figcaption>Figure 1. System Position</figcaption></figure><p>Figure 1 illustrates the system position and main function. The system cooperates with the Content Management System(CMS) and Distributed Transcoding System[1] (introduced in another article on our blog) to accomplish the overall content assets processing pipeline.</p><p>The contents are ingested to CMS from a variety of vendors. CMS handles the metadata and stores source content components, such as video files, dubbed audio files, subtitle files, and thumbnail images. MCF receives source contents from CMS and processes them. The video files are sent to the distributed transcoding system to perform video transcoding. Audio files, subtitle files, and images are converted into unified formats by the MCF system. The processed results are packaged into a content asset stored in AWS S3 storage. The content asset metadata is stored back to CMS and provided to other downstream systems. The content asset in AWS S3 storage and content asset metadata in CMS is used for video streaming, downloading and other content consumption features in MX Player.</p><h3>System Architecture</h3><figure><img alt="Figure 2. System Overview" src="https://cdn-images-1.medium.com/max/1024/1*pMZAX9vvCF1jC1_DGPAF5g.jpeg" /><figcaption>Figure 2. System Overview</figcaption></figure><p>The MCF system architecture is presented in Figure 2. The system is a distributed system built on AWS EC2 cluster. The core component is a distributed task pipeline implemented on Celery[2].</p><p>API module is an HTTP API service built on the Django framework[3]. API module receives CMS requests containing source content components information. The Broker gets the content components data, generates content asset task and pushes the task to the task queue. We utilized RabbitMQ[4] as the task queue to support priority tasks.</p><p>The workers obtain tasks from the task queue and execute the central functionalities of the system: convert content formats and generate content assets. After finishing the task, the worker generates 3 output. Task logs are stored in a MySQL database for monitoring and auto-scale. The content asset is stored in AWS S3 for CDN. The content asset data is stored back to CMS for other systems to use. The workers also report their status by the message queue.</p><p>The auto-scale module controls the overall worker number in the system. It collects task logs from MySQL database and gathers workers’ status by the message queue. The auto-scale module controls the shutdown and startup of the workers by commands over the message queue and AWS API requests.</p><h3>System Functionalities</h3><p>The MCF system’s main purpose is to process ingested contents and generate content assets. There are four major parts of the main function: video processing, audio processing, subtitle processing, and thumbnail processing. For better system performance and robustness, there are also systematic components handling auto scale and monitor.</p><h4>Video Processing</h4><p>The MCF system cooperates with other transcoding systems. Three transcoding systems are applied for failover.</p><p>The Distributed Transcoding System is the default selection. It splits videos into small segments and transcodes them in parallel, thus can provide extremely fast video transcoding. Also, it utilized AI technology for bitrate optimization, so the output videos are smaller in size and better in quality.</p><p>The second choice is a multi-node transcoding system we built earlier. If both of them fails, the MCF system employs AWS Elemental services as a failover.</p><p>Although the MCF system does not transcode videos by itself, it implements other related work which can be divided into two phases: pre-transcode phase and post-transcode phase. The main procedures are illustrated in Figure 3.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-ICRAxbEKDok4SX7GZcvKQ.jpeg" /><figcaption>Figure 3. Video Transcode Phases</figcaption></figure><p>In the pre-transcoding phase, the system samples the source video and generates a video hash used as the identifier of the source video. It extracts the source video information(resolution, bitrate, codec, etc) for video checking and generating transcode parameters. Then the system checks if the source video satisfies our specifications, such as minimum resolution, bitrates, audio tracks assignment, etc. It also checks if there are issues in the source video. Some problems can be fixed by the system. If the source video does not satisfy the specifications or has unfixable issues, the content generation task is failed.</p><p>Next, the MCF system splits the source video into video tracks, audio tracks, and subtitle tracks. Audio tracks and subtitle tracks will be processed in corresponding modules. If there are fixable issues in the video tracks, the system will repair them automatically. For example, to use Distributed Transcoding System, the video track’s I-frame assignment has to meet certain standards, due to the split method of video segments.</p><figure><img alt="Figure 4. Black Border Detection Example" src="https://cdn-images-1.medium.com/proxy/0*pzgif7XOlrrixsua" /><figcaption>Figure 4. Black Border Detection Example</figcaption></figure><p>For better compatibility of different screen sizes of devices, the MCF system detects black borders of the video. The black borders will be cropped while transcoding. Figure 4 shows one example of black border detection. Some videos may have black frames at the start and end of the video. These black frames are also detected and removed for better user experience.</p><p>Finally, the MCF system generates transcode parameters based on the source video information, detection results, and transcode targets. These parameters are sent to the transcoding system.</p><p>After transcoding finish, the post-transcoding phase will be triggered. The MCF system merges transcoded video segments, transcoded audio tracks and subtitle tracks into separate video files of different resolutions. If the content needs to use DRM, the system utilized Widevine[5] and FairPlay[6] for video encryption. The processed videos are used as downloadable files on MX Player. And they are segmented and packed to DASH[7] and HLS[8] streams by employing Shaka Packager[9].</p><p>The MCF system assembles downloadable files, DASH streams, HLS streams, and processed thumbnails into a unified format content asset. The result content asset is uploaded to AWS S3 as CDN origin. The content asset’s metadata is stored back to CMS for downstream systems to use.</p><h4>Audio Processing</h4><p>As shown in the Video Processing section, the system extracts and transcodes audio tracks. The audio tracks are transcoded in different bitrates. Different bitrates audio tracks are associated with the corresponding video streams to form auto-adaptation groups in the output online streams.</p><p>For better compatibility of a variety of mobile devices, the system uses stereo channel layouts in the output audio tracks. However, the source videos may have different channel assignments. If the source video has only one mono audio track, the FC channel is copied to FL and FR channels. For layouts with more than 2 channels, the system downmixes them to FL and FR channels. Figure 5 illustrates how the MCF system converts 5.1 tracks to a stereo audio track.</p><figure><img alt="Figure 5. 5.1 to Stereo" src="https://cdn-images-1.medium.com/max/1024/1*rfkNubRTmb5SUqPRUSG2NQ.jpeg" /><figcaption>Figure 5. 5.1 to Stereo</figcaption></figure><p>For dubbed audio tracks, the system verifies if language tags are properly added to every audio track and if there is one and only one default audio track.</p><h4>Subtitle Processing</h4><p>To be compatible with different types of devices(Android, IOS, mobile web, desktop web), we chose WebVTT[10] as the format of subtitles. The MCF system converts the input subtitle tracks into WebVTT format. The input subtitle tracks are extracted from the source video file or provided as standalone subtitle files. Also, for dubbed subtitle tracks, the system verifies if all of them are tagged with proper languages.</p><h4>Thumbnail Processing</h4><p>There are four phases of thumbnail processing: Auto Generation, Preprocessing, Resizing, and Compressing.</p><p><strong>Auto Generation<br></strong>Most of the thumbnails are provided by our vendors. But in some cases, we may need to generate thumbnails by ourselves. The MCF system employs Yahoo Hecate[11] to auto-generate thumbnails from video files. Yahoo Hecate selects attractive thumbnails by analyzing various visual quality and aesthetic metrics of video frames and performs a clustering analysis to determine the relevance to video content, thus making the resulting thumbnails more representative of the video[12]. The MCF system also utilizes the FreeType[13] engine to add title text on the generated thumbnails. We use OpenCV[14] to detect faces in the thumbnails to optimize the position of titles. Figure 6 shows one example of the auto-generated thumbnail.</p><figure><img alt="Figure 6. Auto-Generated Thumbnail" src="https://cdn-images-1.medium.com/max/722/0*kEoh5_MNT1uYhRfS" /><figcaption>Figure 6. Auto-Generated Thumbnail</figcaption></figure><p><strong>Preprocessing<br></strong>In this phase, the system evaluates the quality of the thumbnails and detects black borders of the thumbnails. The low-quality thumbnails(for example, low resolution, abnormal aspect ratio, etc) are rejected. Similar to the video processing, the black borders of the thumbnails are cut in the next phase to be better compatible with different device sizes.</p><p><strong>Transcoding and Resizing<br></strong>To support different types of devices, we select JPEG and PNG as the main formats of thumbnails. All input thumbnails are transcoded to JPEG or PNG with alpha channel. The black borders detected in the previous phase are cropped while transcoding.</p><p>When resizing the thumbnails, the source image’s aspect ratio may be different from the target’s. For better user experience, the system handles such gaps in three ways. If the difference is minor, the system will stretch the image a little bit. If the gap is medium, the image will be cropped first and stretched. Face recognition is also used to decide the crop position. If the aspect ratio difference is big enough, the system will add black margins to the image.</p><p><strong>Compressing<br></strong>Thumbnail size has a significant influence on the app launch speed. Smaller image size will make the app to launch faster, thus providing better user experience. The MCF system employs guetzli[15] to compress JPEG images and utilizes pngquant[16] to compress PNG images. The system also provides WebP[17] format thumbnails to clients that support this format for better compression rate.</p><h4>Auto Scale</h4><p>The content asset processing is resource consuming. It requires a lot of CPU, memory, network and SSD resources. We need a large cluster to process the tasks to minimize the queuing time and make our users watch these contents as soon as possible. However, the processing tasks are often come in large batches, because the content ingestion procedure is always done in batches. Maintaining a large cluster at all time is not efficient because sometimes the cluster is idle. Although the task queue is empty, every machine in the large cluster is costing money. To efficiently handle large batch tasks and save money when there is no task, we want the system to be able to upscale automatically when there are many tasks in the queue. As tasks are consumed and processed, it can automatically downscale the machines.</p><figure><img alt="Figure 7. Auto-Scale System" src="https://cdn-images-1.medium.com/max/1024/1*YZb1MX1iNYn_MOiqlgjBLw.jpeg" /><figcaption>Figure 7. Auto-Scale System</figcaption></figure><p>As shown in Figure 7, the automatic scaling system mainly consists of three parts: the broker, the worker, and the controller. They cooperate to ensure that our automatic scaling system operates smoothly. Since scaledown is more complicated, let’s describe it first.</p><p><strong>Broker<br></strong>As described in the System Architecture section, the broker is responsible for providing APIs for other programs to request. When the broker receives the task request from CMS, it will check the request parameters. If the check fails, it will return an error message. If the check passes, it will prepare to dispatch the task, the broker will check if the Redis has a lock. This lock is set by the controller. If the lock is set, waits for the controller to release the lock and then dispatches the task. If not, the broker dispatches the task directly.</p><p><strong>Worker<br></strong>The worker is a docker container running on EC2. It is responsible for the content asset processing operations. When the worker executes a task, it adds a task record in the Redis which indicates that the current worker is busy. It will update the task record when the task is finished. Both of these messages are used by the controller to determine if the worker is idle.</p><p><strong>Controller<br></strong>The third part is the controller, it checks transcoding worker status in a short interval. Before checking, it will set a lock in the Redis, if the broker receives a task at this time it will wait until the lock is released before dispatching task. The lock prevents task lost when terminating workers. Tasks may arrive at the worker which controller determines to terminate and that leads to task lost. There are two steps when terminating a worker. The first step is remotely closing the connection between the worker and the message queue, ensuring that the worker to be stopped does not receive new tasks. Because terminating AWS EC2 machine takes around 10s, if there is a task arriving during this 10s gap, the task will be lost without the first step. Then the controller sends the terminate command to stop the worker and finally releases the lock in the Redis.</p><p>The system scales the cluster up according to the queuing tasks and the resources in the current cluster. When there are too many tasks in the queue and it exceeds the processing capacity of the system, the scaleup procedure will be triggered. After upscaled the cluster, we record the current time. There is a 20 minute cooldown time between two upscaling. The reason for setting the cooldown time is that the machine needs to pre-install some libraries and download the docker image from AWS S3. Starting a worker needs around 8 minutes. Because the checking time is so short, if there is no cooldown time, the machine will continue to be applied during the startup.</p><p>This automatic scaling system provides flexibility to add or change upscaling or downscaling strategy. Now we don’t need to manually upscale or downscale the cluster, which saves time and money.</p><h4>Management and Monitoring</h4><p>Last but not least, the system has a management and monitor module for easier maintenance. The module is built on Celery Flower[18].</p><p>For the management function, it can control the parameters used in content asset processing, for example, how “black” is a pixel to be identified as a black border? What’s the threshold for detecting the aspect ratio gaps? It also manages a set of preset templates of parameters to help experts to fine-tune the output content assets.</p><p>For the monitor function, it monitors all the running metrics of the system, such as task queue status, task number, worker cluster status, worker number, and failed tasks, etc. It also detects systematic anomalies and sends out alerts.</p><h3>Summary</h3><p>MX Content Factory is a content asset processing system used in MX Player OTT business. It converts the source content’s video, audio, subtitles, and thumbnails to standard formats and assembles them into a unified content asset, which is used by downstream systems and presented on the app clients. The system utilizes diverse techniques to provide the best user experience and high compatibility of different devices. It is an auto-scale system that is capable of processing large batches of tasks in a short time and at low costs.</p><h3>References</h3><p><em>[1] Distributed Video Transcoding System, </em><a href="https://medium.com/mx-player/distributed-video-transcoding-system-cdfff0d42294"><em>https://medium.com/mx-player/distributed-video-transcoding-system-cdfff0d42294</em></a></p><p><em>[2] Celery: Distributed Task Queue, </em><a href="http://docs.celeryproject.org/en/latest"><em>http://docs.celeryproject.org/en/latest</em></a></p><p><em>[3] Django: The web framework for perfectionists with deadlines, </em><a href="https://www.djangoproject.com/"><em>https://www.djangoproject.com</em></a></p><p><em>[4] RabbitMQ: Messaging that just works, </em><a href="https://www.rabbitmq.com/"><em>https://www.rabbitmq.com</em></a></p><p><em>[5] Widevine: Leading Content Protection for Media, </em><a href="https://www.widevine.com/"><em>https://www.widevine.com</em></a></p><p><em>[6] FairPlay, </em><a href="https://developer.apple.com/streaming/fps"><em>https://developer.apple.com/streaming/fps</em></a></p><p><em>[7] DASH: Dynamic Adaptive Streaming over HTTP, </em><a href="https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP"><em>https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP</em></a></p><p><em>[8] HLS: HTTP Live Streaming, </em><a href="https://en.wikipedia.org/wiki/HTTP_Live_Streaming"><em>https://en.wikipedia.org/wiki/HTTP_Live_Streaming</em></a></p><p><em>[9] Shaka Packager, </em><a href="https://github.com/google/shaka-packager"><em>https://github.com/google/shaka-packager</em></a></p><p><em>[10] WebVTT: The Web Video Text Tracks Format, </em><a href="https://w3c.github.io/webvtt"><em>https://w3c.github.io/webvtt</em></a></p><p><em>[11] Yahoo Hecate: Automagically generate thumbnails, animated GIFs, and summaries from videos, </em><a href="https://github.com/yahoo/hecate"><em>https://github.com/yahoo/hecate</em></a></p><p><em>[12] To Click or Not To Click: Automatic Selection of Beautiful Thumbnails from Videos, </em><a href="https://arxiv.org/abs/1609.01388"><em>https://arxiv.org/abs/1609.01388</em></a></p><p><em>[13] FreeType: a freely available software library to render fonts, </em><a href="https://www.freetype.org/"><em>https://www.freetype.org</em></a></p><p><em>[14] OpenCV, </em><a href="https://opencv.org/"><em>https://opencv.org/</em></a></p><p><em>[15] Guetzli: Perceptual JPEG encoder, </em><a href="https://github.com/google/guetzli"><em>https://github.com/google/guetzli</em></a></p><p><em>[16] Pngquant: a command-line utility and a library for lossy compression of PNG images, </em><a href="https://pngquant.org/"><em>https://pngquant.org</em></a></p><p><em>[17] WebP: A new image format for the Web, </em><a href="https://developers.google.com/speed/webp"><em>https://developers.google.com/speed/webp</em></a></p><p><em>[18] Celery Flower: Real-time monitor and web admin for Celery distributed task queue, </em><a href="https://flower.readthedocs.io/en/latest"><em>https://flower.readthedocs.io/en/latest</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1c774706ecac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/mx-content-factory-1c774706ecac">MX Content Factory: A Distributed Auto-Scaling Content Asset Processing System</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Distributed Video Transcoding System]]></title>
            <link>https://medium.com/mx-player/distributed-video-transcoding-system-cdfff0d42294?source=rss----2e0baff1195f---4</link>
            <guid isPermaLink="false">https://medium.com/p/cdfff0d42294</guid>
            <category><![CDATA[aws-ec2]]></category>
            <category><![CDATA[http-range]]></category>
            <category><![CDATA[aws-s3]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[transcodes]]></category>
            <dc:creator><![CDATA[Wei Zhuo]]></dc:creator>
            <pubDate>Mon, 17 Jun 2019 10:58:42 GMT</pubDate>
            <atom:updated>2019-06-21T04:37:28.276Z</atom:updated>
            <content:encoded><![CDATA[<h3>Overview</h3><p><em>Video Transcoding is the core technology used in the online video industry. The purpose of transcoding is to compress full-resolution, high-resolution, huge videos to multiple resolutions such that it can be adaptively streamed on various smart devices across network connections. For this, videos are sliced, and then each fragment is transcoded into multiple resolutions and then merged into a streaming format. All online videos we see on smart devices are served in this way.</em></p><p>Transcoding is necessary but comes with a high cost. Many video service companies, CDN companies, and cloud service providers offer transcoding services. For example, AWS transcoding services are expensive, but their performance is not very high and their stability is not strong. Using third-party transcoding services also greatly limits flexibility for audio track processing, subtitle processing, business pipeline, temp requirements and so on.</p><p>Transcoding costs are only a part of the total cost of providing an online video service, there are CDN costings too which are high. If your video is still very large after transcoding, it will end up incurring huge storage and bandwidth costs.</p><p>Whenever a new video releases, businesses demand that it be transcoded and made live as soon as possible. At the same time, user experience requires for a smooth and clear viewing experience. To solve for these problems, we developed a distributed transcoding system, which saved us a lot of transcoding costs, enabled us for flexible expansion and optimisation and greatly improved transcoding speeds. This system also supports high-concurrency multi-video transcoding, adaptive adjustment, and ultimate bitrate optimisation – one bitrate for one video which saves our bandwidth, saves user traffic, and truly achieves a clear and smooth streaming experience. Let me explain the system in more detail.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zbakpN4RdCim-hDcm01PBQ.jpeg" /><figcaption>Architecture Diagram</figcaption></figure><h3>Video Download and Access</h3><h4>High Concurrency</h4><p>For distributed transcoding, each segment of video is concurrently requested by multiple AWS-LAMBDA Compute Units or AWS-EC2 Compute Units. Use AWS-LAMBDA here is because it can increase to thousands of workers at anytime and no need to wait for scaling. The original video itself is stored on AWS-S3, but AWS-S3’s concurrent request capability can’t support simultaneous requests for different segments of a video, which results in high request latency and long transcoding time, and it is not acceptable in business too, meanwhile since AWS-LAMBDA is billed on time, this brings about an increase in the cost of use. So from the perspective of transcoding speed and cost savings, we need to be able to read and slice each fragment of the video in a stable and high-concurrency manner. The solution is to deploy our own file server.</p><h4>Minimum Disk Usage</h4><p>At the same time, in order to reduce the amount of data transmission, we use HTTP-RANGE to access the video, so that access to video fragments only needs to specify RANGE according to time. FFMPEG also supports RANGE mode to request video fragments for transcoding. In order to support high concurrency, the file server must be deployed in multiple machines in order to withstand a large number of concurrent requests. If a video is stored in multiple copies on multiple file servers, requests for different segments of a video can be answered with different file servers. But in fact, we didn’t do this, because if each file server can support concurrent requests for the same video, then this video will be downloaded and stored multiple times, which will bring extra burden to the network bandwidth and disk storage. Instead, we only store one video in a file server, and all requests for this video will arrive at the file server. Of course, the performance of this file server must be good enough. This is equivalent to replacing a large number of low-performance machines with a small number of high-performance machines to achieve stable high concurrency. The benefits are obvious, eliminating the need to repeatedly download and store video without having to address the issue of low-performance node failure. And the high-performance node fails? Will only affect the video transcoding task on this file server. We only need to re-initiate the failed task, and its video will be processed by other file servers that are alive.</p><h4>Intelligent Load Balancing</h4><p>If you just deploy a file server to solve the problem of stable and high concurrency, then the problem is a bit simple. We will also face the problem of request unbalanced. If a file server is providing a request for some segment of video and a request for another video is coming, the file server resource will be tight and busy. Other file servers may be idle and resources are idle. Here, we will adopt a competitive strategy, or more accurately, a polite strategy. The video download task is not dispatched by the upper layer, but by the file server for competition or courtesy. We will monitor the video transcoding queue in real time, and can monitor the number of transcoding subtasks that need to request the file server and still waiting in the queue (the fragment size of the transcoding subtask is uniform), so the load situation of file server can be determined in the future. The file server that may be heavily loaded in the future will give up the opportunity to download new videos to a file server with a small load. After a certain period of time to adjust convergence, the load of all file servers will be more balance. This is equivalent to achieving simple load balancing, but this is different from the traditional load balancing problem.</p><h4>Automatic Health Checking</h4><p>What if the load on the file server itself is high and even reaches a critical value? Will cause subsequent requests to avalanche. We let the file server monitor its own resource load in real time and decide whether to download the new video immediately based on the load. The monitored load includes CPU, MEMORY, NETIO, DISK, and so on. These indicators are also reported to the master monitoring system and will be used later. If the load is high, the file server will wait until the resources are sufficient. This obviously blocks, but why is it so designed? Because we need to ensure that the high-priority completion of the task which is in transcoding is stable, it cannot be overly affected by subsequent tasks. At the same time, it does a layer of protection against the file server, so that it is not crushed by too many tasks. However, in order to alleviate the problem of excessive file server pressure, we will use more file servers for a large number of transcoding tasks to expand.</p><h4>Timely Disk Recycling</h4><p>The disk load problem needs to be described separately. The original video files are very large, some even reach more than 200GB. In order to increase the disk read and write rate, we use high-speed SSD disks. And because the disk is expensive, we can’t use too much disk space, so we must frequently swap in and out of the video. Here we will monitor the usage of the downloaded video in real time. If the disk space is not enough to hold the next video, we will wait and try to clear the video that is no longer accessible until there is enough disk space. All of this will be automated monitoring to ensure that the transcoding system runs stably and efficiently. We will find that it is the main goal to complete the task which is in transcoding at the maximum rate, and it will get the highest priority.</p><h3>Split Main Task and Trigger Sub Task</h3><h4>Split Main Task</h4><p>Video transcoding is very CPU-intensive. That’s why we implemented this distributed video transcoding system and with the system we can finish transcoding a long video in a timely manner.</p><p>For ABR streaming, each video needs to be transcoded into different profiles with different resolutions and bitrates. For each transcoding with a specific resolution, we call it a ‘Main Task’. In order to make the transcoding highly concurrent, we split the ‘Main Task’ into many small ‘Sub Task’. Each ‘Sub Task‘ represents the transcoding task for a segment of the long video. And thus these small ‘Sub Task’ of the same or different ‘Main Task’ can then be handled concurrently and quickly on different computing units.</p><h4>Trigger Sub Task</h4><p>Once the main tasks are split into sub tasks, we put the sub tasks into an internal queue for next stage handling. And then the sub tasks in the queue are picked out and sent to EC2-SLAVE or AWS-LAMBDA for transcoding.</p><p>All MX’s EC2 instances can be an EC2-SLAVE for transcoding. When sending a sub task for transcoding, we check whether the existing EC2-SLAVEs are sufficient or not. If yes, the sub task will be sent to an EC2 instance for transcoding, otherwise it will be sent to AWS-LAMBDA for transcoding. In this way, we don’t need to keep a large number of EC2 instances and in the meantime, we can still make the video transcoding finished in a timely manner.</p><h3>Monitor Everything</h3><p>The entire distributed transcoding system needs a real-time monitoring system. At present, the main monitoring is reflected in: machine level resource monitoring, performance monitoring; Business level machine load monitoring; transcoding queue level congestion monitoring; transcoding task level status monitoring.</p><h4>Machine Level Resource Monitoring</h4><p>Use AWS-CLOUDWATCH to monitor transcoding cluster machine resource usage and master machine load in real time. It is auxiliary monitoring and is mostly used for historical query analysis.</p><h4>Business Level Machine Load Monitoring</h4><p>The file server reports its load status in real time. The upstream module will rely on this load to decide whether to trigger more transcoding units to control the pressure on the file server. The AWS-EC2 transcoding unit will report its load in real time. It will decide whether to take up more computing resources of the host machine to transcode according to the load of the host machine.</p><h4>Queue Level Congestion Monitoring</h4><p>In order to achieve the high concurrency capability of asynchronous, our distributed transcoding system uses message queues to control between modules. Congestion monitoring of the queue is required. If some queues are congested, the upstream distribution rate is controlled. If the queue is unbalanced, the queue should be balanced as much as possible by preemption or politeness to avoid load unbalanced for some machine at downstream.</p><h4>Task Level Status Monitoring</h4><p>Each transcoding task undergoes multiple state transitions from the beginning to the end of the creation, and each state is recorded and monitored. Through these task status, we can monitor the status of all transcoding main tasks and their subtasks in real time, and then observe the status of the distributed transcoding system. At the same time, we also calculate the cost of each transcoding task in real time. Transcoding task status monitoring is necessary. In addition to manually viewing and resolving bugs, you can automatically retry some failed subtasks so that the entire transcoding task does not fail because of a subtask’s timeout or failure.</p><h4>Main Task Monitoring</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M-U6IIUuIyYAIAzYoMC6iw.jpeg" /><figcaption>Main Task Status Transition</figcaption></figure><p>For the transcoding main task, the following state transitions are experienced:</p><p><strong>Ready</strong>: The transcoding task has just been set up and is ready to start scheduling.</p><p><strong>Downloading</strong>: The file server preempts the transcoding task and starts downloading the video in the task. It will transfer to the Failed state if download failed.</p><p><strong>Downloaded</strong>: The file server downloads the video and prepares the transcoding compute unit to read the video fragment. It will transfer to the Failed state if download failed.</p><p><strong>Accepted</strong>: The transcoding task is received by the executor, the status is transferred to Accepted, and the transcoding main task is split into multiple transcoding subtasks, that is, one transcode subtask for each video segment.</p><p><strong>Running</strong>: Any transcode subtask starts running and the main task is marked as Running.</p><p><strong>Succeeded</strong>: All transcode subtasks are successful, and the main task is marked as Succeeded.</p><p><strong>Failed</strong>: Any transcode subtask eventually fails, and the main task is marked as Failed.</p><h4>Sub Task Monitoring</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SqKq6JK4MT-LgdjwGjl8KA.jpeg" /><figcaption>Sub Task Status Transition</figcaption></figure><p>For a transcode sub task, the following state transitions are experienced:</p><p><strong>Ready</strong>: The Ready status is split after the transcode subtask is split from the main task.</p><p><strong>CRFRunning</strong>: After being scheduled and executed by the transcoding compute unit, the video complexity based on CRF is calculated first.</p><p><strong>CRFSucceeded</strong>, <strong>CRFFailed</strong>, <strong>CRFTimeout</strong>: The value of complexity is saved if computed successfully, and the default value is used for failure or timeout.</p><p><strong>CRFReady</strong> (CRFFinished): Enter the CRFReady status before starting the official transcoding.</p><p><strong>Running</strong>: The subtask starts transcoding.</p><p><strong>Succeeded</strong>: Subtask transcoding was successful.</p><p><strong>Failed</strong>, <strong>Timeout</strong>: The transcoding failed or timeout twice, and moved to CRFReady, waiting to continue scheduling. If the subtask eventually fails or timeout, the main task will also be marked as failed.</p><h3>Low Cost Transcoding</h3><h4>AWS-LAMBDA</h4><p>The transcoding service mentioned here refers to the part that transcodes subtasks. The main transcoding task has been split into multiple small subtasks. These small subtasks have one feature: very much, very fast. For such transcoding subtasks, each subtask can be completed with a small computational resource. However, since transcoding is a CPU-intensive calculation, CPU resources are mainly required. It is the AWS-LAMBDA service that provides a large amount of low-cost CPU computing resources, which is much cheaper than using a dedicated AWS-EC2, because AWS is also using its idle computing resources to provide services, so each compute unit of AWS-LAMBDA has only a few minutes of execution time and is charged according to time.</p><h4>EC2-SLAVE</h4><p>But it’s not economical to use too much AWS-LAMBDA, so we developed our own AWS-LAMBDA-like module, which we named EC2-SLAVE. It can be deployed on almost all of MX’s regular AWS-EC2 machines, maximizing the free computing resources of the machine. It monitors the computing resources of the host machine in real time. If it finds that the computing resources are idle, it calculates the number of computing units available for transcoding and then obtains the appropriate number of transcoding subtasks to execute. Since the transcoding subtask is very fast, each computing unit will only take up less CPU time and will be released immediately. At the same time, in order to avoid a perceptible impact on the host, it will retain enough computing resources to the host machine as much as possible.</p><h3>Dispatching Control</h3><p>If AWS-LAMBDA and EC2-SLAVE are activated too much, it will cause a large number of access requests to the file server, which will make the file server response slower. On the one hand, the delay is increased, which causes the transcoding to become slower; on the other hand, the AWS-LAMBDA execution time becomes longer due to the longer reading time, which increases the cost unnecessarily. So we must ensure that the file server always runs in a high concurrency, low latency state. When we distribute the transcoding task to AWS-LAMBDA and EC2-SLAVE, we control the distribution rate based on the machine load reported by the file server. This explains why the file server mentioned above reports its load to the monitoring system.</p><h3>High scale ability</h3><p>File server and EC2 instances number all can be auto scaled upon the job task queue length, it is very easily to scale large or small number. This kind of architecture design can high fully meet various business needs.</p><h3>Summary</h3><p>In this article, I focused on how our distributed transcoding system stabilises high-concurrency transcoding services. It also illustrates how to save costs under the premise of ensuring stable and high concurrency. The cost savings here are mainly considered from the perspective of computing resources.</p><p>In my next article, I will talk about the bitrate optimisation method, that is, how to reduce the bitrate as much as possible under the premise of guaranteeing the quality of transcoding. The reduction in bitrate is significant – on the one hand, it saves us the bandwidth cost of being an online video service provider, and on the other hand allows users to watch smooth, high-quality videos while saving their traffic costs. Stay tuned. ~</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cdfff0d42294" width="1" height="1" alt=""><hr><p><a href="https://medium.com/mx-player/distributed-video-transcoding-system-cdfff0d42294">Distributed Video Transcoding System</a> was originally published in <a href="https://medium.com/mx-player">MX Player</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>