Coder Social home page Coder Social logo

gani1969 / juvoplayer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from samsungdforum/juvoplayer

0.0 0.0 0.0 113.5 MB

The reference for developers of streaming live TV and VOD Tizen .Net applications.

License: Other

C# 96.21% Shell 0.05% Python 0.80% JavaScript 2.95%

juvoplayer's Introduction

JuvoPlayer

The reference for developers of streaming live TV and VOD Tizen .Net applications. The GUIs (alternative) are built on XamarinForms framework and Tizen Native with OpenGL or React Native. This sample illustrates how to utilize the elementary streams data source API (demuxed audio and video). The DRMed (MS PlayReady by CENC interface) and clean content can be played. MPEG DASH and RTP/RTSP content delivery protocols clients are integrated with the app (no TV platform dependency). The HLS protocol and demuxing of the streams are handled by the FFMPEG library incorporated as .so binaries.

Dependencies

  1. FFmpeg 3.3.6 'Hilbert' - library (binaries) acting:
  • HLS protocol scenario's downloader and demuxer
  • RTP/RTSP protocol based scenario's demuxer.
  • MPEG DASH protocol based scenario's demuxer.
  1. https://github.com/ngraziano/SharpRTSP . (RTSP module, 23rd December 2018) - RTP/RTSP protocol scenarios downloader
  1. Samsung TV firmware for 2019 TVs (integrated with the Tizen 5.0 TV emulator included in SDK 3.2)
  2. Video content URLs embeded in videoclips.json files. See in the project tree:
  • Resources\videoclips.json
  1. React Native Tizen (https://github.com/Samsung/react-native-tizen-dotnet) based on react-native 0.42 and react-native-windows 0.42.

    Important

    The Nodejs versions higher than 12.10 were affected by regular expression issue (facebook/react-native#26598) which impacts the React Native Tizen dependencies update (npm or yarn command). If it happens in Your case try downgrade Nodejs to version 12.10.

Setup instructions

  1. Download .zip or clone the repository to your HDD.
  2. Open the JuvoPlayer solution with Microsoft Visual Studio. See the articles regarding Tizen .Net TV environment setup here: https://developer.samsung.com/tv/tizen-net-tv
  1. Setup the nuget packages repository for the solution (restore NuGet packages)
  2. Set one of the GUI projects as startup. Choose one of the following:
  • XamarinPlayer
  • JuvoPlayer.OpenGL
  • JuvoReactNative
  • SimplePlayer

Important

Due to it's 'hybrid' nature, The JuvoReactNative projects requires additinal step. Before the first build or any JS part modifications it needs creation of the bundles to be included in the Tizen .NET shared\res folder. See the 'React Native bundle preparation' for details.

React Native bundle preparation

  • Make sure Nodejs and Yarn have been succesfully instaled in Your system.
  • Go to the JuvoReactNative root directory in the command line window.
  • Type the yarn command without any parameters. Wait untill all the dependencies have been installed.
  • Release mode
  • Debug mode
    • Follow the 'Release mode' instructions but replace the first step with: yarn bundle --dev command.

Application launch

  1. Connect with a TV set (or emulator) using the Device Manager tool (member of SDK) installed together with the Tizen Tools (SDK) see more in https://developer.samsung.com/tv/tizen-net-tv
  2. Start the select in Visual Studio solution tree GUI project by pressing F5 (debug) or ctrl+F5 (release). The app requires Partner Level privilege generated widh the Certificate Manager tool (member of SDK). Before the first launch please, make sure that you have created one and have sent it by 'Permit to install' command using the Device Manager tool.

Important

Every phisical Tizen .NET TV device being used for JuvoPlayer application development needs a set of electronic signatures (keys). To get the keys a developer has to contact Samsung Content Manager (CM) person in his country of residence. The CM can request the signatures from Samsung R&D. This step is mandatory since the JuvoPlayer uses sensitive API's (native binaries and DRM access). There is no need to make such a request in case launching the JuvoPlayer on the TV emulator. In this case however, it is not possible to playback any DRM'ed contents (PlayReady, Widevine). Moreover, the consequence of the clean video playback in resolutions highier then 640ร—480 (VGA) is significant video playback fluency degradation. The reason of this latter phenomena is limited performance of the TV emulator. This drawback do not appear on the phisical TV set units.

Live coding React Native Tizen application

It is possible to launch and work on the JuvoReactNative GUI using facebook 'hot module reloading' engine (https://facebook.github.io/react-native/blog/2016/03/24/introducing-hot-reloading.html). To configure it follow the below guide:

Emulator TV 2019 (Tizen 5.0)

  1. Launch TV emulator.

JuvoReactNative application contains complementary binaries for ARM and x86. They are located in subfolders with the appropriate names. The React native Tizen applications based on the default template do not follow this rule. Launching it on emulator needs actions mentioned here: https://github.com/Samsung/react-native-tizen-dotnet/issues/18#issuecomment-521515750

  1. Set the port redirection in 'Emulator control panel->Network' menu:
    • Source (Local host) port = 9998 (can be any free value but the same as in the "config"->"tvip" port)
    • to destination (10.0.2.15) port = 8081 (npm server port)

Important

Step 2. needs to be repeated every time the TV emulator reboots.

  1. Edit package.json in the application root folder writting:
"config": {
  "tvip": "127.0.0.1:9998",
  "mode": "Debug"
},
  1. Type yarn bundle --dev command (assuming current is the React Native Tizen application root folder).
  2. Delete the redundant assets folder (see the 'Setup instructions' section).
  3. Switch to 'Debug' build mode of tizen .NET project (here it is named JuvoReactNative).
  4. Start build (using MS Visual Studio)
  5. Type command npm run server
  6. Launch the application. You may use PC ctrl+F5 keys in MS Visual Studio or TV remote control keys. The latter case does make sense only in the TV set or TV emulator menu if the former (PC) launching have happened at least once.
  7. Press 'red' button on the remote control to open the configuration menu. Select (one by one) the 'Enable hot module reloading', 'Enable live reload', 'Set host ip' (enter the IP address of Your host PC) and 'Reload JavaScript' options. Each option selection closes the menu, so You need to reopen it with the 'red' button on the remote controller per option.

There is one more item: 'Start JS Remote debugging' with Chrome on the host PC. Selecting it from the menu triggers the application's button press event, so working with it may be confusing.

From now on You can modify JavaScript part of the application code and see the update result right after saving it on the PC.

TV set unit

  1. Switch on the TV set
  2. Edit package.json in the application root folder writting:
"config": {
  "tvip": "192.168.137.4",  
  "mode": "Debug"
},

The "tvip": "192.168.137.4" needs to be replaced with the actual IP address of the TV set.

  1. Includes all the steps from 4. to 10. described previously in the 'Launch TV emulator' section.

Release notes

JuvoPlayer 1.5.3 (beta)

1. Features:

  • All features of the JuvoPlayer 1.5.1
  • Support for Tizen.Sdk version up to 1.0.9
  • Xamarin UI and OpenGL: Common resources (tiles, videoclips.json) excluded to a separate project.
  • JuvoPlayerOpenGL
    • Animated focused video clip tiles added
  • JuvoReactNative GUI
    • Playback settings view presents default values.
    • Resume playback after switching to another application and back (support for multitasking).
    • Incorporating NavigationExperimental component. Changed the way of handling the remote control events in 'views'.
  • JuvoPlayerXamarin GUI
    • XamarinForms library version up to "4.4.0.991640"
  • JuvoPlayer backend
    • DASH representation change during segment download
    • Stability improvements in switching to another application and back (multitasking).
    • Fix for the issue: 'FFW and REW operations on the sample 4K HEVC video does not end'.

2. Known issues:

  • Switching to another application and back (multitasking) does not work with playback over RTSP.
  • Right after the finishing seek in HLS streams there is a short video pause until the audio catch up. It is a result of FFmpeg 'seek' function specific.
  • The playback start operation results in the app crash run on 2020 TV emulator (Tizen 5.5). Issue discovered in the TV platform API. It does not appear on actual 2020 TV set hardware. Fix is expected with the next Tizen SDK release.

JuvoPlayer 1.5.1 (beta)

1. Features:

  • All features of the JuvoPlayer 1.5.0
  • JuvoReactNative GUI
    • Smart Hub preview deeplinks launching
    • Tizen 5.0 emulator runtime support
  • JuvoPlayerXamarin GUI
    • FFW and REW progress bar frame preview added
    • Animating focused video clip tiles added
    • Rounded corners of the tiles on the list of videos
  • JuvoPlayer backend
    • Buffering event notification issue fix
    • Missing seek completion signaling issue fix
    • Switching off the MPEG DASH adaptive streaming when run on the TV emulator. It makes playback stick to the lowest quality representation but improves comfort of testing on the emulator.

2. Known issues:

  • Right after the finishing seek in HLS streams there is a short video pause until the audio catch up. It is a result of FFmpeg 'seek' function specific.
  • JuvoReactNative GUI playback settings view does not support setting default values (limitation of the React Native Tizen's Picker component).
  • JuvoReactNative GUI does not resume playback after switching from another app (no support for multitasking).
  • The FFW and REW operations on the sample 4K HEVC video does not end.
  • The FFW and REW operations on MPEG DASH sample videos result in app crash on the 2020 TV emulator (Tizen 5.5).

JuvoPlayer 1.5.0 (beta)

1. Features:

  • All features of the JuvoPlayer 1.4.9
  • JuvoReactNative GUI - based on React Native Tizen project https://github.com/Samsung/react-native-tizen-dotnet
  • JuvoPlayerXamarin JuvoPlayerOpenGL animation and picture loading performance improvements.
  • Bixby (voice control) basic playback functions (JuvoPlayerXamarin, JuvoPlayerOpenGL, JuvoReactNative )
  • JuvoPlayer backend stability and performance improvements

2. Known issues:

  • Right after the finishing seek in HLS streams there is a short video pause until the audio catch up. It is a result of FFmpeg 'seek' function specific.
  • JuvoReactNative seek in HLS, HTTP streams does not hide the activity indicator (missing seek completion signaling).
  • JuvoReactNative GUI does not support deeplinked shortcuts for SmartHub preview feature.
  • JuvoReactNative GUI playback settings view does not support setting default values (limitation of the React Native Tizen's Picker component).
  • JuvoReactNative GUI does not resume playback after switching from another app (no multitasking).

JuvoPlayer 1.4.9 (beta)

1. Features:

  • All features of the JuvoPlayer 1.4.8
  • JuvoPlayer backend stability improvements

2. Known issues:

  • Right after the finishing seek in HLS streams there is a short video pause until the audio catch up. It is a result of FFmpeg 'seek' function specific.

JuvoPlayer 1.4.8 (beta)

1. Features:

  • All features of the JuvoPlayer 1.4.7
  • JuvoPlayer backend stability improvements
  • Multitasking issue solved (see known issues in v1.4.7)
  • HLS and MP4 over HTTP seek in stream (FFW, REW) function implementation.

2. Known issues:

  • Right after the finishing seek in HLS streams there is a short video pause until the audio catch up. It is a result of FFmpeg 'seek' function specific.

JuvoPlayer 1.4.7 (beta)

1. Features:

  • All features of the JuvoPlayer 1.4.6
  • Static splash screens for Open GL and Xamarin GUIs
  • JuvoPlayer backend stability improvements

2. Known issues:

  • Multitasking - switching between runing apps - video sometimes do not recover

JuvoPlayer 1.4.6 (beta)

1. Features:

  • All features of the JuvoPlayer 1.4.5
  • Update - sync with the original GitHub project - of the RTSP module code (see dependencies)
  • Memory management optimizations (stability improvements)
  • Support for x86 processors architecture (TV emulator)
  • SimplePlayer GUI project added for illustrating simple playback scenario

2. Known issues:

  • Multitasking - switching between runing apps - video sometimes do not recover

JuvoPlayer 1.4.5 (beta)

1. Features:

  • All features of the JuvoPlayer 1.4.4
  • The FFW and REW 'in progress' on screen notification
  • Live Stream sample change to 'Big Buck Bunny' video clip

2. Known issues:

  • RTP/RTSP playback does not start (regresion)
  • Not enoght memory for UHD Widevine DRMed video (Tears of steel)
  • Multitasking - switching between runing apps - video sometimes do not recover

JuvoPlayer 1.4.4 (beta)

1. Features:

2. Known issues:

  • RTP/RTSP playback does not start (regresion)
  • Not enoght memory for UHD Widevine DRMed video (Tears of steel)
  • Multitasking - switching between runing apps - video sometimes do not recover

JuvoPlayer 1.4.3 (beta) includes:

  1. Xamarin Forms and Tizen OpenGL Native based user interface capable to:
  • Select video clip from a list
  • Start of selected video playback
  • Pause of video playback
  • Stop of video playback
  • Fast Forward & Rewind (MPEG-DASH only)
  1. MPEG DASH streaming protocol - fragmented and chunked mp4 (byte range) containers support.
  2. MPEG DASH + PlayReady DRM decryption and playbackof FHD and UHD content.
  3. MP4 over HTTP protocol (download and demuxing by FFMPEG lib)
  4. HLS (downloading and demuxing by FFMPEG)
  5. RTP/RTSP (download by third party RTP library demuxing with FFMPEG)
  6. SRT subtitles rendered in the clean HD, FHD, UHD VOD content streamed over MPEG-DASH protocol.
  7. Web VTT subtitles rendered in the clean HD, FHD, UHD VOD content streamed over MPEG-DASH protocol.
  8. Picture quality manual selection on VOD content streamed over the MPEG-DASH protocol.
  9. Live MPEG DASH streams playback
  10. Adaptive playback quality depending on the available bandwidth
  11. The Smart Hub Preview including deeplink launch

juvoplayer's People

Contributors

ppaneksamsung avatar pbsamsung avatar msavvik avatar gtea3 avatar pgalisz avatar m-zdun avatar polboo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.