We have released a new Android player app, version 4.4.85 (not official version, yet).
The new version has a new power feature which was requested by many partners and customers: this is support for video input/capture, also known as PIP (Picture in Picture). This is available only in our Android app.
The feature allows you to display video from external source, such as a built-in or USB camera and HDMI-IN port (which is different than most HDMI ports, which are generally OUT port). We have tested the feature on 3 Android media players which have HDMI-IN port (Qbic BXP-301 and an IAdea XMP-6400) and on a Samsung tablet and smartphone (for the camera capture).
Currently, there is no dedicated widget for the PIP. For using PIP, you need to use the web image widget.
All you have to do is to type the following line in the “Image URL” property of the webimage widget: http://static.onsignage.com/playerapp/capture/input
This will open the first camera or input device and display what comes in. For smartphones, this will display a camera view; for devices with video capture support through camera API, the input will be displayed.
You can set the properties of the capturing, by adding parameters after that URL (see the examples: you need to add question mark after the URL and then put the parameters; if more than one parameter, then add “&” between them):
source=x [the default is 0; the digit starting from 0 and up represents the input source ID]
- To select a source other than the default: for example, switch front/rear camera or use other input (i.e. USB camera or HDMI stick), use http://static.onsignage.com/playerapp/capture/input?source=x where x is the camera/device number (starting from 0 and not from 1). If heterogeneous URL support is required across different devices, we might need to later add local device mapping in player settings.
res= auto [the default is auto; it can also be WidthxHeight resolution]
- Sets the input resolution.
auto – For camera, the capture resolution will be selected automatically from camera supported resolutions, best matching the widget dimensions and aspect ratio. For the Qbic BXP-301, the resolution will match the HDMI source resolution. Other unimplemented devices exposed to the camera API are handled as camera. Note, for unimplemented HDMI input it may be completely wrong as most devices report all possible input resolutions as supported. In this case the resolution must be set explicitly.
WidthxHeight – Sets explicit input resolution width x height, i.e. res=1280×720
To detect automatically HDMI input, we need to implement for each device (as there is no standard). Hence, at the moment, the only the implemented support is for Qbic BXP-301. So for all other capture devices that report multiple resolutions, this may need to be set explicitly matching the actual input resolution.
showDebugInfo=0 [default is 0, means no debug; 1 is for debug]
- Displays a text with current resolution / input details.
Note that Qbic BXP-301 HDMI disconnect detection is not reliable, frequently showing connected even if input is powered off or disconnected from other side (is not reliable on hardware level, not NoviSign’s code). Connect should be handled properly though.
IMPORTANT: In most cases of new Android OS, you will need to grant full permissions to the NoviSign app, since the app will try to access one of the Android unit’s resources (i.e. the HDMI-IN port or the built-in camera) – and that requires a permission. So, to be on the safe side, just access the Android OS settings, go to “Apps”. Find the NoviSign app and click “Permissions”. Then turn on all the available permissions there.
If “Keep content aspect ratio” is checked on the widget (the default), the display will fit the bounds and center inside the widget, keeping the aspect ratio of the camera or input. If unchecked, it will be stretched to the widget bounds.
If you’re getting an error like “Failed to connect to camera service“, go to the Android settings of the unit (under “Apps”, probably) and ensure that the camera permission is on (new phones don’t grant it by default). Also, ensure that no other app is active accessing the same input or camera.
For HDMI or other capture input, it is desirable to adjust the resolution of the connected source to be closer to the widget size. If you display 1080p on a small widget, it will be scaled and may appear not very sharp. 720p may display better. Some quality loss will be in any case, unless the exact resolution is used, i.e. 720p source in a widget taking 66.66% of the 1080p screen.
Use camera 0, auto detect resolution
Use camera 0, auto detect resolution (identical to no parameters)
Use camera 1, auto detect resolution, display debug status
Use input 0, force capture resolution 1080p or 720p
This will fail if the given resolution is not supported on the device.
For HDMI, the resolution may be supported (i.e. no error) but still display incorrectly, if not matching the actual input source resolution (again, with res=auto, only Qbic BXP-301 can detect automatically).