AV Media Formats and Codecs

Applicable to: Built-in apps, Startup services, HTML5 applications

Video

Container/CodecExtensionAspect RatioResolution (Max.)
4K model
Resolution (Max.)
2K model
Bitrate (Max.)Frame rate
MP4 AVC.mp416:93840×21601920×108030 Mbps30, 60 fps
MP4 AVC/HEVC.mp416:93840×21601920×108030 Mbps30, 60 fps
MPEG TS AVC/MPEG2.m2ts16:93840×21601920×108030 Mbps30, 60 fps

* BRAVIA Signage Free, BRAVIA Signage (paid) : Duration (Max.)10 minutes/file.

Audio Streaming

ContainerAudioMIME type 
HTTP(S)MP4AAC-LC / HE-AACaudio/aac
HTTP(S)MP3MP3audio/mp3

Images

Container/CodecExtensionAspect RatioResolution (Max.)
4K model
Resolution (Max.)
2K model
JPEG.jpg, .jpeg16:93840×2160*1920×1080
BMP.bmp16:91920×10801920×1080
PNG.png16:91920×10801920×1080
GIF.gif16:91920×10801920×1080*

* HTML5 applications: For JPEG on 4K models, the maximum resolution of 3840×2160 is when using the High Quality Image feature (object tag extension).
The maximum resolution when using the tag is 1920×1080.

Audio Files

Container/CodecExtensionBitrate (Max.)Sampling rateChannel (Max.)
MP3.mp3320 kbps44.1 kHz, 48 kHz2 channels
AAC.m4a320 kbps44.1 kHz, 48 kHz2 channels

* BRAVIA Signage Free, BRAVIA Signage (paid): Duration (Max.) 10 minutes/file

Encoding Methods (Codec Specifications)

Container/CodecSupportedRemarks
MPEG4 part10*1
(AVC/H.264)
BP@L3, MP@L4, HP@L43D in top-and-bottom, side-by-side
MPEG4 part10 (4K)*BP@L4.2, MP@L4.2, HP@L4.23D is not supported
HEVC (4K)*MP@L5.1, M10@L5.13D is not supported
AAC-LC32k, 44.1k, 48k / 384kbps(max) / up to 5.1ch 
HE-AAC32k, 44.1k, 48k / (ISO/IEC 14496-3 compliant / profile level3) / up to 2ch 

* HHTML5 applications: The <video> tag supports a maximum frame rate of 3840×2160@60p and a bitrate of 75Mbps.
The multicast object tag supports a maximum frame rate of 1920×1080@30p and a bitrate of 10Mbps.

HTML5 Application Development Notes

1. Media Elements <video> and <audio>

BRAVIA Professional Displays support the <video> and <audio> elements defined in HTML5.

HTML
<video width="1920" height="1080">
  <source src="https://example.com/video.mp4" type="video/mp4"/>
</video>

Note:

Specify the media format by setting the type attribute on the<video> or <source> element. The type attribute takes a MIME type as its value.


Media Elements About the “playbackRate” attribute

  • Supported in WebAppRuntime v1.3.14 and later.
  • Playback rate range is 0.1 to 2.0.

The <video>tag supports a maximum frame rate of 3840×2160@60p and a bitrate of 75Mbps. The multicast object tag supports a maximum frame rate of 1920×1080@30p and a bitrate of 10Mbps.

2. Multicast Video Object Tag

BRAVIA Professional Displays can use RTP and Raw-UDP multicast video streaming in HTML5-compatible environments. The <object> element is used for video playback and supports the following media formats.

Supported Formats

  • The multicast object tag supports a maximum of 1920×1080@30p, 10Mbps.
  • For fast stream switching and smooth multicast streaming, IP-only configuration is used with shortened key frame intervals.
ContainerVideoAudioRemarks
MPEG TSAVC/HEVC/MPEG2AAC-LC/HE-AAC/MP1L2Multicast object element supports up to 1920×1080@30p framerate and 10Mbps bitrate.

Note:

  • Only one <object>element can be used simultaneously.
  • <audio>and<video>elements: Cannot be used together within the same window.。

Please note that frequently creating and deleting these elements may cause internal state changes and resource management issues.


show() Method

A method for changing and playing streams that can switch to and play multicast streams at the specified URL.
The monitor has a flexible design that can receive parameters in multiple formats for the show() method.

JavaScript
const object = document.getElementById('mcast');

// Simple Playback Start
object.show('udp://239.0.0.64:5004');

// Switch to another stream
object.show('rtp://239.1.1.100:8000');

jsonParam Option Specifications

The jsonParam option can process the following settings in JSON format.
Supported in WebAppRuntime v1.2.65.8 and later on the monitor.

JavaScript
object.show(url, jsonParam)
         ↑        ↑
       Mandatory  Optional (JSON string)
ParameterDescriptionDefault Value
prebuffer_ms再Buffer time required to start playback milliseconds)20ms
rebuffer_msBuffer time required to resume playback after rebuffering (milliseconds)50ms
hardware_av_syncEnable hardware audio-video synchronizationFALSE
sourceSpecify IGMPv3 source address
allow_render_to_mainAllow rendering to main frame
drm_key_idEnable Pro:Idiom M DRM (when “proidiom_standard” is specified)
blocking_modeSetting for DRM content usageFALSE
network_interfaceNetwork interface to use

Additional Methods for Multicast Objects

  • setWideMode(DOMString mode) Controls video aspect ratio display
  • setTextTrack(int index) Enables and selects DVB subtitles
  • getTextTrackList() Retrieves available DVB subtitle list
JavaScript
// 1. Quick switching (default settings)
object.show('udp://239.1.1.10:5004', 0);

// 2. Fixed settings (object format)
object.show('udp://239.1.1.11:5004', {
  prebuffer_ms: 2000,
  rebuffer_ms: 5000,
  hardware_av_sync: true
});

// 3. Dynamic settings (JSON string format)
const config = JSON.stringify({
  prebuffer_ms: networkQuality * 1000,
  rebuffer_ms: networkQuality * 2000
});
object.show('udp://239.1.1.12:5004', config);
HTML
<object id="mcast" type="application/x-multicast-video" width="960" height="540"></object>

Embedding multicast video streams is limited to one stream per page. To embed a multicast video window in your application, download the sample for reference. Implementation examples are provided below.

Example HTML

HTML
<object id="mcast" type="application/x-multicast-video" width="960" height="540"></object>

Example JavaScript

JavaScript
// return true on success, or false
function startMulticastPlayback() {
  var object = document.getElementById('mcast');

  if (object.open() != 0) {
    return false;
  }

  object.onshow = function(result) {
    if (result === 0) {
      console.log('multicast object is opened');
    }
  };

  object.onstatechange = function(state) {
    switch (state) {
    case object.STATE_CLOSE:
    case object.STATE_OPEN:
    case object.STATE_PREPARE_TO_PLAY:
    case object.STATE_SRC_CHANGING:
    case object.STATE_WAIT_FOR_DATA:
    case object.STATE_PLAYING:
    case object.STATE_CLOSING:
    default:
      console.log(state);
    }
  };

  return object.show('udp://239.0.0.64:5004') === 0;
}

// change streams
function changeStream(url) {
  var object = document.getElementById('mcast');
  object.show(url);

  // if need to configure buffer size, use below API.
  //   var jsonText = '{"prebuffer_ms":2000,"rebuffer_ms":5000}';
  //   var paramJson = JSON.parse(jsonText);
  //   object.show(url, paramJson);
}

// change streams with params
function changeStreamWithParams(url, paramJson) {
  var object = document.getElementById('mcast');
  object.show(url, paramJson);
}

// stop streams
function stopMulticastPlayback() {
  var object = document.getElementById('mcast');
  object.close();
}