Known Issues: Studio, Brightcove Player, APIs and SDKs

Product(s)
Video Cloud
Brightcove Player
Role(s)
Studio User
Player Developer
API Developer
Device SDK Developer
Topic(s)
General Info

This topic lists the known issues with Studio, Brightcove Player, APIs and the SDKs.

Identified known issues include:

Studio

No reported issues.

Media Module

Preview Player

Live, HLS-only remote asset videos are not playable in the preview player.

Source file name containing double byte characters

Source file name containing double byte characters gets garbled after retranscoding in the media module.

Media Sharing

When sharing large numbers of videos, Brightcove recommends sharing at most two pages of videos at a time. Sharing a large number of videos at once may cause a timeout error.

Adding captions to a video that was shared which already contains captions is not supported.

Media sharing will fail for videos created by clipping Live streams.

    Scheduled Videos

    Because the Playback API and Catalog cache videos for up to 10-15 minutes, a player requesting a video scheduled to become available during the next few minutes (up to 20), may not be able to get a playable video until the cache refreshes.

    Players Module

    Preload setting

    Due to a bug in Internet Explorer, the preload setting may be ignored when using IE.

    Access Data Sources Across Domains setting

    If this Internet Explorer policy setting is enabled for a domain-restricted Brightcove player, the player will not load in Internet Explorer 11. This appears to be a bug in IE, and there is no known workaround. Turn this setting off if you want domain-restricted players to work in IE 11.

    Live Video

    Brightcove Player counting video views for finished live events

    The Brightcove player accounts for video_view every time a remote asset is loaded, even if it's a finished live event with an empty or no longer retrievable HLS playlist. Workaround: deactivate, unschedule, or delete the video.

     

    Analytics

    Custom Reports Displaying 0 bytes_delivered for some Videos

    Videos that were ingested using a Dynamic Delivery ingest profile will display 0 bytes_delivered on custom reports.

    Custom Reports using Multiple Filters

    When using multiple filters, an AND operation will be used. For example, if you add two filters, video tag and player, only videos with the specified tags and viewed in the specified player will be returned.

    Custom Reports using the Filter by Video Tag functionality

    When creating a custom report, there is a limitation when using the Filter by Video Tag functionality. It only takes into consideration up to 2,000 videos in your library with that specific tag. If the amount of videos with a specific tag is greater than that, we recommend to get an unfiltered report which includes the tags and perform the filtering locally with your spreadsheet software.

    "Other/Third Party" Appears in Performance Report

    When a video that is not your Video Cloud library is played in a Video Cloud player (e.g a remote asset), Other/Third Party will be displayed with no associated video ID.

    Updated Video Names not Reflected in Analytics

    The only time Analytics learns about the title of a video is when the player sends it to Analytics as part of the playback beacon. If a video title is changed, analytics will not have the new video title until there has been a video playback. This can result in a scenario where a video name is updated and if there are no playbacks recorded, the old video name will be reflected in the Analytics reports. Data for time periods before March 2013 suffer from this issue often, and will show metadata that is only a number. For example, a video title might display as 1230123012. This is because data from this period was captured in the old analytics system.

    Video Names and Player Names Displaying ??????? in Analytics UI

    For the month of October 2013, the metadata (video names and player names) may look like a bunch of ?????s. This issue impacts publishers whose metadata has double byte characters and had video views in October 2013. This issue was related to the way that we were capturing the metadata for display in the Analytics UI. Starting in November 2013, the Analytics system has additional safeguards in place to prevent metadata sent with the event metrics from being corrupted.

    Reporting Time Zone

    The reporting time zone is used to calculate day boundaries for reporting data. Changing the reporting time zone setting only affects data going forward, and changes are not applied retroactively. If you change this setting, you may see a flat spot or a spike in your data when looking at day boundaries where the change was applied. Updates to this setting may not take effect immediately, and analytics data may continue to refer to the old setting until the system processes the changes.

    Engagement data are stored in daily granularity

    Engagement data are stored in daily granularity using UTC time and might sometimes include 2 full days of data in the "Audience at x%" table in the Engagement Report.

    Internet Explorer Support

    The Analytics module requires Internet Explorer 9 or later.

    High number of "other" results for Device Manufacturer

    In some cases, you may see a high number of "other" results for the Device Manufacturer This occurs when the Data Collector does not recognize the user_agent delivered to it with analytics data. The most common cause that we have identified for this is a custom user_agent string created by Instagram, but there are probably others.

    Audience

    Internet Explorer Support

    Audience lead forms require Internet Explorer 9 or newer.

    Social

    Ghostery browser plugin may interfere with the Social module

    The Ghostery browser plugin may interfere with the Social module preventing it from loading properly.

    Workaround: Add Studio to the whitelist for Ghostery.

    Upload module / Dynamic ingestion

    Uploads via the upload module fail if the clock on the device doesn't match the actual time

    Uploads are authorized for a certain amount of time. If your clock time varies from the actual time by more than 15 minutes, you will receive errors when uploading.

    Retranscoding via Dynamic Ingestion updates the video activation date

    When you retranscode a video using Dynamic Ingestion, the activation date for the video is updated to the current date. If you use Smart Playlists ordered by activation date, this will affect the order of the videos in the playlist.

    File names

    Video file names (including the extension) must not exceed 120 single-byte (60 double-byte) characters. If it does, the video will be ingested successfully, but you will not be able to retranscode it later.

    Brightcove Player

    Check the Brightcove Player Release Notes to see if a past known issue has been corrected by a recent release.

    Videos without poster or thumbnail images

    Videos without thumbnail / poster images may cause an error to appear in the player when it loads. This affects mobile SDK players in a way that may crash the player.

    Internet Explorer always resets its playback rate to 1.0 whenever playback is paused.

    IE11 images for audio only content not displaying

    When playing only audio content in IE11, the video still image will not be displayed, only a black screen is seen. The image can be retained with the following code:

    .vjs-has-started .vjs-poster {
    display: block;
    }
    
    

    Auto-Advance Playlist on Safari

    For Safari, if the playlist is visible, and the player has the pre-load setting set to none , automatic playback of the of the next video will fail silently.

    Context Menu

    When right-clicking a video close to the right or bottom edges of a player, the player context menu displays off-screen.

    Using different sized multiple players with the same player_id on a page

    If multiple players have the same id on one page and specify different size inside <video> tag using width and height attributes, the player CSS from the last player is applied to all players.

    Workarounds

    • Use players with a different player ids if you want them to have different sizes or styling/li>
    • Define a classes for the players that provide the player sizing using CSS, and add the classes to the video tags for the different players

    FastClick.js results in incorrect event handling

    Using the FastClick.js results in incorrect event handling within our custom control bar. This may result in not being able to use our control bar on mobile devices.

    Videos display greyish on Chrome and Firefox

    When using Chrome and Firefox, videos in the Brightcove Player may display with a greyish color. This can be due to hardware acceleration and/or NVIDIA driver settings.

    Workaround: Open the NVIDIA Control Panel. Under Video select Adjust video color settings. Under How do you make color adjustments select With the NVIDIA settings. Under Advanced make sure Dynamic Range is Full (0-255) not Limited (16-235). Dynamic contrast enhancement should be unchecked. This issue has been reported on the Google Chrome Help Forum.

    Using emulators

    Whether you are using Chrome Device Mode or other emulators to test video playback, be aware that emulators do not accurately represent how an actual device will perform. While you can use emulators for initial testing during development, it is best practice to use real devices for accurate results.

    When testing playback with Chrome Device Mode, you may see this message: "The use of Chrome in device mode simply renders the viewport and user agent string of that device in Chrome, which is not an accurate representation of how the actual device will perform."

    Using data-setup

    You should NOT use data-setup with Brightcove Player. You may see use of data-setup in the API documentation, but this is because that documentation is generated directly from the Video.js player source code, and you MAY use that attribute with the video tag with pure Video.js. The attribute sends configuration information to the player, but Brightcove Player uses a different method to perform this task, which makes data-setup unreliable.

    Protocol-aware source selection and DASH

    Protocol-aware source selection is not available when using DASH content. It is only available for HLS and MP4 content

    Console error thrown when using iframe player implementation in Safari

    When using the iframe implementation of Brightcove Player in Safari you will see the following error message in the console: Blocked a frame with origin "http://players.brightcove.net" from accessing a frame with origin "#DOMAIN NAME#". Protocols, domains, and ports must match. The reported error does not affect playback.

    "Unknown" is displayed in the captions menu in Safari.

    This is a Safari/Apple limitation. Newer versions of the Brightcove Player use native captioning capabilities built into Safari and this is the standard behavior. This is documented by Apple: https://developer.apple.com/library/ios/qa/qa1801/_index.html

    Fullscreen in non-Flash environments

    In environments where Flash is disabled or Flash-based HLS is disabled for the player, and the player is explicitly sized using a style attribute on the video tag, fullscreen viewing may not function in some browsers.

    Workaround: remove the style attribute from the video tag, and instead create a rule in page stylesheet like this:

    .video-js{
    width:640px;
    height:360px;
    }
    
    

    Social Sharing

    On desktops, the social sharing button will not be visible during ads.

    HTTPS

    On most desktop browsers, the Brightcove Player will only play HLS on HTTPS web sites when both the manifest and the video segments are served over HTTPS connections. This is due to recent changes to several browsers that more severely restrict non-SSL content. This affects users of Chrome, Firefox and Internet Explorer on desktop computers. It does not affect Safari users or mobile browsers, and it does not affect playback of MP4 renditions.

    We are in the process of addressing this limitation for Video Cloud-managed assets; if you manage your own CDN and transcoding (remote assets), you must configure your CDN to support HTTPS delivery of both manifest and video content.

    Full screen display

    In newer browsers that support the fullscreen API, it's necessary to apply in-page CSS rules to ensure the player is scaled to 100% when switching to fullscreen. Otherwise, the player will appear at the original size within the fullscreen display. For details, see the Fullscreen display topic in the Size the Player document.

    For IE10 and earlier, with no fullscreen API support, a new window will open, but the player will not be sized to fill the window. This is because no styles have been applied to resize the player. Since the window cannot be scrolled, you may only see a section of the website, with no player at all.

    Multiple videos are published on a single page with HapYak chapters

    When multiple videos are published on a single page with HapYak chapters, an incorrect chapter could be displayed.

    Workaround

    Use this script: https://github.com/brightcove/gallery-in-page-snippets/blob/master/snippets/hapyakFix.js. However, Flash playback (IE11/Win7) cannot avoid this issue, so the HTML5 fallback needs to be implemented in case of IE11/Win7.

    Akamai HD and HDS

    Brightcove Player does not support video delivery via the Akamai HD or HDS delivery methods.

    Error: d.off is not a function

    This error, caused by a known bug, can occur when switching between different formats, for instance MP4 and HLS, in a player. Until the bug is fixed, you can simply retry the code that is causing the issue. The following code is an example that corrected the error in an app:

    try {
    myPlayer.catalog.load(video);
    } catch (e) {
    myPlayer.catalog.load(video);
    }
    myPlayer.play();
    
    

    HLS Video Durations

    It is possible that the duration shown in the controlbar may change from initial display. Once all HLS segments are loaded the duration may update.

    RequireJS

    If you are using RequireJS you MAY have to use the bc() method to instantiate the player. The need to use the method will be determined by how/when the player assets are loaded. See the RequireJS and Brightcove Player document for more information.

    referrer_url vs. description_url

    The referrer_url value may have different values between iOS and Android devices. Because of this, it is recommended to use the description_url value instead. This value is consistent across all platforms and devices.

    loop attribute on Safari

    The loop attribute does not work correctly on Safari. You can use the solution detailed in the Brightcove Player Sample: Creating a Video Loop document.

    Using an HTML element id named global

    You should not nest your advanced (in-page embed) player implementation code in a parent <div> tag with an id assigned the value global . This causes issues with Brightcove Player.

    Player version 5 icon issue

    Brightcove Player version 5 uses the same icon for both chapters and subtitles. Since version 5 is in maintenance mode, and this being a cosmetic issue, it is doubtful the issue will be addressed.

    Brightcove Player Plugins

    You will be linked to the particular plugin document so see the known issues for a plugin. Since version 5 is in maintenance mode, and this is a cosmetic issue, it will not be fixed.

    Android

    • On devices, the progress bar may not be in sync for HLS videos, since HLS does not work very well on Android. The total duration of the video may also incorrectly show up as 0:01.
    • There are multiple accessibility issues with the native browser on both phones and tablets for all versions of Android. Talkback does not provide audio and vibration feedback for any of the player controls. (This issue does not apply to the add-on Chrome browser on Android devices, only to the native browser.
    • Captions cannot be enabled on Android 2.3 devices.
    • On devices, the tap events for error messages do not bubble up to the parent video element. This means that you can not close an error message once it appears.
    • On Android devices, when navigating the player menus in the controlbar, such as captions or quality selection, the menu can get "stuck" in the open state following a long press on an item in the menu. This is because Chrome adds the :hover pseudo-class. Another long press elsewhere on the player will typically close the menu.

    Learn how to create Android apps that utilize the Brightcove Player SDK for Android.

    iOS

    iPhone

    • Social sharing will not work on iPhones. Since iOS phones switch to fullscreen native, you can't share a video from an iPhone.
    • On iPhones, the tap events for error messages do not bubble up to the parent video element. This means that you can not close an error message once it appears.

    Learn how to create iOS apps that utilize the Brightcove Player SDK for iOS.

    Windows 8

    • Companion ads are not supported.
    • On Windows 8 tablets, seeking does not work for standard HTML/MP4 playback. It works correctly for HLS tech.
    • On Windows 8 tablets, ads work but companions causes browser to crash.
    • On Windows 8 tablets, HLS, Flash, Live and embed types all supported.
    • On Windows 8 phone, plays MP4, but no Flash or HLS support.
    • On Windows 8 phone, regardless of whether the embed type is iframe or inline, once you hit play, playback will always occur in fullscreen. This means that the overlays do not show up once playback begins.
    • Captions cannot be enabled.

    Chrome

    • Issue with renditions that have a low audio bitrate

      Due to a bug on MSE on Chrome browser implementation documented here:

      https://bugs.chromium.org/p/chromium/issues/detail?id=534301

      Playback on that browser for version 5 and above of BC player will fail (showing MEDIA_ERR_DECODE) if the audio profile of the rendition being attempted is different from AAC-LC.

      To avoid this happening on new ingested content, customers need to make sure they either

      • use an audio bitrate equals or greater than 48kbps
      • include the following setting on their DI profile: "max_aac_profile": "aac-lc"

      To avoid this happening on existing content, options are:

      • retranscoding following the above recommendations
    • A request for an HTMl5 video may stay pending and the video never loads. See Google's document on the issue.

    Firefox

    • Firefox Browser for Android: Not officially supported, but will try to address bugs if possible.
    • It has been reported Firefox version 42 may have playback issues with Brightcove Player. The issue seems related to the settings of the Firefox Use Hardware Acceleration settings. When this is checked (enabled), the video player will playback the audio only, and will show a still image only. The solution to this problem is to disable this option as follows: Options -> Advanced -> General -> (UNCHECK) Use Hardware Acceleration When Available

    Internet Explorer

    • Captions set to automatically display on the video (checking the "default" setting for a caption in the Media Module) do not work with IE11
    • Videos with audio above 48khz will fail during playback on Edge and IE11 on Windows 8 and Windows 10. This is a Microsoft limitation. See this Microsoft document for more details.
    • IMA3 Flash ads work better on IE. Google IMA3 does not supports Flash and HTML ads on IE, but in our testing, we have found that the Flash SDK is much more robust at this time.

    Safari

    • No known issues

    IMA3

    • When using Google IMA3 skippable ads the Skip ad buttons do not have tab indices, so keyboard navigation to those buttons is not possible. Hence, viewers who depend on keyboard navigation will not be able to skip the ad.

    Brightcove Live

    • When the h264_profile is set to baseline or the h264_profile is not added to the Job request, it causes an issue on Windows 10 using Firefox v57.
    • When the end of a live stream is reached, the player may display a PLAYER_ERR_TIMEOUT error.

    Native Player SDKs

    Using emulators

    Whether you are using the Android Studio emulator or the Xcode simulator to test video playback, be aware that emulators do not accurately represent how an actual device will perform. While you can use emulators for initial testing during development, it is best practice to use real devices for accurate results.

    Third-party frameworks

    Brightcove does not test or provide support for integrating the Brightcove Native SDKs with third-party development frameworks such as Xamarin, React Native and Titanium. Contact your framework provider for integration support. Here are some issues you may run into:

    • When using the Brightcove Native SDK for Android with the Titanium framework, you may experience playback errors with DRM content. This is because the Titanium framework overrides the default Java.net.ResponseCache with its own TiResponseCache .

    Native Player SDK for Android

    Offline playback

    • With Android 8.0 Oreo, when Background Activity is switched off, a download is started, and the app is put in the background, the download stops and does not continue when the app is reopened. The notification bar displays a status of Downloading...
    • When using Widevine with Android 8.0 Oreo, you may notice that on some devices the rental license acquired is already expired. This is a known issue with Google's ExoPlayer, but it has been fixed with Android 8.1.0 on most devices. Unfortunately, there is no workaround for Android 8.0.
    • Observed only with Android 5.x devices: When releasing the Widevine license by calling the OfflineLicenseManager.releaseLicense method, a MediaDrmStateException error is thrown.
    • In the OfflinePlaybackSampleApp, there are two Widevine license expiration periods.

      • absoluteExpiration is an expiration date of the license to start playback of downloaded video
      • playDuration is how long the video can be played
       

      When playDuration becomes less than 60 seconds, the Widevine CDM handles the license as expired and throws a Failed to get key request error. Playback will not start with this Widevine license exception.

      With the Brightcove Native SDK for Android v6.1.0+, you can try calling AbstractOfflineCatalog.requestRentalLicense(Video, Date, long, EventListener) or AbstractOfflineCatalog.requestPurchaseLicense(Video, EventListener) to retrieve a new license. Note: The device must be online to acquire a new license.

    360° videos

    • If you do not use the BrightcovePlayer class, your 360° video will play, but the app may crash when pausing and resuming it. To learn more about using this class, see the Understanding the BrightcovePlayer class document.
    • You may experience some video drift after rotating the device. The problem is related to how the device gyroscope is calibrated, and this can affect performance. It is not associated with specific device makes and models, but instead on the motion sensor hardware installed on the device. The newer Android OS's have more sophisticated filter algorithms to correct the problem. A simple fix is to turn off the device and turn it on while it is lying on a flat, stable surface.

    Subtitles

    • The CC button will not appear in the control bar and the player will not load text tracks if you assign text tracks to a video in Video Cloud Studio and set the KIND field value to Subtitles. The work-around is to set the KIND field value to Close Captions when you assign text tracks in Studio.

    Playing local videos

    • You will receive an exception error if you try to play MP4 videos stored in the application resource folder (/res/raw). The work-around is to move your MP4 videos to the application asset folder if you want to play local videos.

    Version 4.11.0: Known Issues

    • When playing IMA ads on a Fire TV, you may experience a 5 to 10 second delay between the end of one ad playback and the beginning of the next ad. This is especially noticeable when playing multiple ads in an Ad Break. This may be an issue with the Fire TV, since this does not happen on the Nexus player.

    Live streams

    • The Native Player SDK does not support DASH Live streams, nor does it support ads with HLS Live streams.

    Version 4.10.0: Known Issues

    • With the release of Android TV, there is a known issue when playing Widevine content on the Asus Nexus player. The content appears with several trash pixels. This issue is resolved by updating the Nexus player to Android N (7.0). All research points to a hardware issue. Widevine content plays fine on the Nvidia Shield TV (which has Android TV on it).
    • When the captions/audio settings exceed the space provided to display the full list, the list is not scrollable on Android TV. The list is scrollable on Android phones and tablets.

    Native Player SDK for iOS

    Offline playback

    • With iOS 12, the didProgress event may stop firing when your app is resumed from background to foreground while downloading. You will notice that the downloading status is no longer updated. This problem has been reported to Apple.
    • When playback is attempted for the same offline video two times in a row, the user may experience unexpected network activity. The AVPlayer may switch to playing the online version of the video. A bug report has been submitted to Apple. For work-around steps, see the Playing the Same Offline Video Twice section of the reference document.
    • If your app is targeting iOS 11.0 - 11.2, we don't recommend concurrent downloads because pause and resume behavior is unreliable with multiple simultaneous downloads. The problem has been fixed with iOS 11.3.

    Live streams

    • The Native Player SDK does not support ads with HLS Live streams.

    Analytics API

    Requesting video or player fields in the fields without requesting them as dimensions

    If you use video or player fields (such a video , video_name , player or player_name ) in the fields to return but do not include them in the dimensions in the dimensions , the response items will include irrelevant values for those items and should be ignored. Other values in the items will be valid

    Workaround: Do not include video or player fields in the response fields unless you also include them as dimensions .

    High number of "other" results for device_manufacturer

    In some cases, you may see a high number of "other" results for the device_manufacturer field. This occurs when the Data Collector does not recognize the user_agent delivered to it with analytics data. The most common cause that we have identified for this is a custom user_agent string created by Instagram, but there are probably others.

    CMS API

    In certain cases, the original_filename gets corrupted

    In some cases, the original_filename field for videos gets corrupted and will not contain the real filename.

    Tags may not contain commas

    If you attempt to add a tag to a video that contains a comma (e.g. "SomeCo, Inc") the request will fail with an "illegal tag" error

    Scheduled Videos

    Because the Playback API and Catalog cache videos for up to 10-15 minutes, a player requesting a video scheduled to become available during the next few minutes (up to 20), may not be able to get a playable video until the cache refreshes.

    has_digital_master

    If you are using this field to test whether a video can be retranscoded, it is not reliable for shared videos, as it will be true if the original video has a master, but still cannot be retranscoded by the affiliate account.

    Workaround: If videos are shared to the account, you need to test for both has_digital_master = true and sharing.by_external_account = false . Sample code (JavaScript):

    var video={some_video_object}
    if (video.sharing !== null) {
      if (video.sharing.by_external_account === false) {
        if (video.has_digital_master) {
        // video can be retranscoded
        }
      }
    }
    
    

    Dynamic Ingest API

    No known issues at this time.