AV媒体格式
AV媒体格式和编解码器
适用于:内置应用、启动服务、HTML5应用
视频
| 容器/编解码器 | 扩展名 | 宽高比 | 分辨率(最大) 4K型号 | 分辨率(最大) 2K型号 | 比特率(最大) | 帧率 |
|---|---|---|---|---|---|---|
| MP4 AVC | .mp4 | 16:9 | 3840×2160 | 1920×1080 | 30 Mbps | 30, 60 fps |
| MP4 AVC/HEVC | .mp4 | 16:9 | 3840×2160 | 1920×1080 | 30 Mbps | 30, 60 fps |
| MPEG TS AVC/MPEG2 | .m2ts | 16:9 | 3840×2160 | 1920×1080 | 30 Mbps | 30, 60 fps |
※ BRAVIA Signage Free, BRAVIA Signage(付费版):时长(最大)10分钟/文件
注意: BZ40P / BZ35P / BZ30P
以下播放功能在HTML5应用中不受支持:
・同时播放多个视频
・4K竖屏视频的旋转
音频流媒体
| 容器 | 音频 | MIME type | |
|---|---|---|---|
| HTTP(S) | MP4 | AAC-LC / HE-AAC | audio/aac |
| HTTP(S) | MP3 | MP3 | audio/mp3 |
图像
| 容器/编解码器 | 扩展名 | 宽高比 | 分辨率(最大) 4K型号 | 分辨率(最大) 2K型号 |
|---|---|---|---|---|
| JPEG | .jpg, .jpeg | 16:9 | 3840×2160* | 1920×1080 |
| BMP | .bmp | 16:9 | 1920×1080 | 1920×1080 |
| PNG | .png | 16:9 | 1920×1080 | 1920×1080 |
| GIF | .gif | 16:9 | 1920×1080 | 1920×1080* |
* TML5应用:对于4K型号的JPEG,最大分辨率3840×2160是使用高质量图像功能(object标签扩展功能)时的分辨率。使用标签时的最大分辨率为1920×1080。
音频文件
| 容器/编解码器 | 扩展名 | 比特率(最大) | 采样率 | 声道(最大) |
|---|---|---|---|---|
| MP3 | .mp3 | 320 kbps | 44.1 kHz, 48 kHz | 2 channels |
| AAC | .m4a | 320 kbps | 44.1 kHz, 48 kHz | 2 channels |
* BRAVIA Signage Free、BRAVIA Signage(付费版):时长(最大)10分钟/文件
编码方法(编解码器规格)
| 容器/编解码器 | 支持 | 备注 |
|---|---|---|
| MPEG4 part10*1 (AVC/H.264) | BP@L3, MP@L4, HP@L4 | 3D in top-and-bottom, side-by-side |
| MPEG4 part10 (4K)* | BP@L4.2, MP@L4.2, HP@L4.2 | 3D is not supported |
| HEVC (4K)* | MP@L5.1, M10@L5.1 | 3D is not supported |
| AAC-LC | 32k, 44.1k, 48k / 384kbps(max) / up to 5.1ch | |
| HE-AAC | 32k, 44.1k, 48k / (ISO/IEC 14496-3 compliant / profile level3) / up to 2ch |
* HTML5应用: <video> 标签支持最大3840×2160@60p的帧率和75Mbps的比特率。多播对象标签支持最大1920×1080@30p的帧率和10Mbps的比特率。
播对象标签支持最大1920×1080@30p的帧率和10Mbps的比特率。
HTML5应用开发备注
1.关于媒体元素 <video>和<audio>
BRAVIA商用显示器支持HTML5中定义的<video>和<audio>元素。
<video width="1920" height="1080">
<source src="https://example.com/video.mp4" type="video/mp4"/>
</video>注意:
通过在<video>元素或 <source>元素上指定type属性来指示媒体格式。type属性的值为MIME类型。
媒体元素 关于”playbackRate”属性
- WebAppRuntime v1.3.14及更高版本支持。
- 播放速率范围为0.1~2.0。
<video> 标签支持最大3840×2160@60p的帧率和75Mbps的比特率。多播对象标签支持最大1920×1080@30p的帧率和10Mbps的比特率。
2.关于多播视频对象标签
BRAVIA商用显示器可在兼容HTML5的环境中使用RTP和Raw-UDP多播视频流。使用<object>元素进行视频播放,支持以下媒体格式。
支持的格式
- 多播对象标签支持最大1920×1080@30p、10Mbps。
- 为了实现快速流切换和流畅的多播传输,采用仅IP配置,缩短了关键帧间隔。
| 容器 | 视频 | 音频 | 备注 |
|---|---|---|---|
| MPEG TS | AVC/HEVC/MPEG2 | AAC-LC/HE-AAC/MP1L2 | Multicast object element supports up to 1920×1080@30p framerate and 10Mbps bitrate. |
注意:
- <object>元素同时只能使用一个。
- <audio>和<video>元素:不能在同一窗口内同时使用。
请注意,频繁创建和删除这些元素可能会导致内部状态变更和资源管理问题。
show()方法
用于更改和播放流的方法,可以切换到指定URL的多播流并进行播放。
显示器采用灵活设计,可以接收show()方法的多种格式参数。
const object = document.getElementById('mcast');
// 简单播放开始
object.show('udp://239.0.0.64:5004');
// 切换到另一个流
object.show('rtp://239.1.1.100:8000');
jsonParam 选项规格
jsonParam选项可以以JSON格式处理以下设置项。显示器在WebAppRuntime v1.2.65.8及更高版本中支持。
object.show(url, jsonParam)
↑ ↑
必需 可选(JSON字符串)| 参数 | 说明 | 默认值 |
|---|---|---|
| prebuffer_ms | 开始播放所需的缓冲时间(毫秒) | 20ms |
| rebuffer_ms | 重新缓冲后恢复播放所需的缓冲时间(毫秒) | 50ms |
| hardware_av_sync | 启用硬件音视频同步 | FALSE |
| source | 指定IGMPv3源地址 | – |
| allow_render_to_main | 允许渲染到主帧 | – |
| drm_key_id | 启用Pro:Idiom M DRM(指定”proidiom_standard”时) | – |
| blocking_mode | 使用DRM内容时的设置 | FALSE |
| network_interface | 使用的网络接口 | – |
多播对象的附加方法
- setWideMode(DOMString mode) 控制视频宽高比显示
- setTextTrack(int index) 启用并选择DVB字幕
- getTextTrackList() 获取可用的DVB字幕列表
// 1. 快速切换(默认设置)
object.show('udp://239.1.1.10:5004', 0);
// 2. 固定设置(对象格式)
object.show('udp://239.1.1.11:5004', {
prebuffer_ms: 2000,
rebuffer_ms: 5000,
hardware_av_sync: true
});
// 3. 动态设置(JSON字符串格式)
const config = JSON.stringify({
prebuffer_ms: networkQuality * 1000,
rebuffer_ms: networkQuality * 2000
});
object.show('udp://239.1.1.12:5004', config);<object id="mcast" type="application/x-multicast-video" width="960" height="540"></object>嵌入多播视频流限制为每页一个流。要在应用中嵌入多播视频窗口,请下载示例参考。以下提供实现示例。
示例 HTML
<object id="mcast" type="application/x-multicast-video" width="960" height="540"></object>示例 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();
}