You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Web上音频播放器的duration为null(Flutter)

在Web上,Flutter的音频播放器获取音频文件的duration(持续时间)时会返回null。这是因为Web音频API有与移动平台不同的Web Audio API

解决此问题的一种方法是使用Dart语言提供的js库“dart.js”,该库允许您使用JavaScript API来解决此问题。

以下是使用dart.js解决此问题的示例代码:

  1. 导入dart.js:

import 'dart:js' as js;

  1. 在需要使用duration的地方,使用以下代码:

final duration = js.context.callMethod('getDuration', [mediaUrl]);

其中,getDuration函数是自定义的JavaScript函数,它接受一个参数:音频文件的URL。该函数使用Web Audio API获取音频文件的duration并将其作为返回值返回。

  1. 在您的HTML文件中添加以下JavaScript代码:

<script> function getDuration(mediaUrl) { var audio = new Audio(); audio.src = mediaUrl; audio.addEventListener('loadedmetadata', function() { var duration = audio.duration; js.context.callMethod('setDuration', [duration]); }); } </script>

此JavaScript代码定义了一个名为“getDuration”的函数,该函数接受一个参数:音频文件的URL。该函数创建一个新的音频元素并将其源设置为所提供的URL。一旦音频元素的“loadedmetadata”事件被触发,它将获取音频元素的duration并使用setDuration函数将其传递回Dart代码。

  1. 在您的Dart代码中添加以下代码:

void setDuration(double duration) { setState(() { _duration = duration; }); }

函数将返回的duration值作为参数,并使用setState方法将其设置为Flutter音频播放器的持续时间。

通过使用dart.js库以及自定义的JavaScript函数,您可以在Web上解决Flutter音频播放器获取duration为null的问题。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

手把手教你实现一个FLV直播播放器

随着网络与流媒体的飞速发展,直播已经深入到我们每个人的生活中了。但是因为原生的`video` 元素只支持几种固定的格式,在web上实现直播变成了一个困难问题。随着HTML5 提出MSE(Media Source Extensions),让`video`元... let Reader = null;// 拉取const fetch = (url) => { window.fetch(url, { method: 'GET', mode: 'cors', }).then((res)=>{ Reader = res.body.getReader(); // 读取 rea...

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文

试想一下 Java 传统的 Null 处理无非是在调用之前加上空判断或卫语句,这种写法既繁琐,更容易遗漏。```javavoid function(Bean bean) { // Null check if (bean != null) { bean.doSometh(); ... Google 和 Jetbrains 就推出了 Flutter、KMM、Compose Multiplatform 三个技术,任何人都卷不过来的。我总结了几句四字短语,与你分享我的感受和态度:* **不可无视,适当了解,跟上形势**:保持关注,防止日后看不...

Enhancer-轻量化的字节码增强组件包|得物技术

T beforeMethod(` `// 接收动态传递过来的参数` `@PluginName String pluginName,` `// optional=true,表示this注解可以接收:构造方法或静态方法(会将this赋值为null),而不报错` `@Advice.This(optional =... [6.Flutter代码静态检查原理与应用|得物技术](http://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&mid=2247494802&idx=1&sn=39979715e674973658482e34455715a5&chksm=c161b9cdf61630dbe1b1302327df4fa8efda8738e0a...

记一次 ClickHouse 性能测试

COLLATE utf8mb4_unicode_ci DEFAULT NULL,`number` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`icao24` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`registration` varchar(255) COLLA... queryReqDurationNs 是累计查询时间,2次任务的时间相减就是耗时select queryReq,queryReqDurationNs/1000/1000,queryRespBytes from _internal."monitor".httpd order by time desc limit 10;-- 查询磁盘空间se...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Web上音频播放器的duration为null(Flutter) -优选内容

Flutter 平台高级功能使用说明
本文以自定义音频处理功能为例,详细介绍原生平台接口的调用方法。 API 调用时序图 注意: 调用 Native 端相关接口前,请先从 Flutter 端创建好 RTCVideo 实例。 请勿在 Native 端调用 destroy接口,否则会引起功能... 并调用需要使用的 Native 接口 java import androidx.annotation.NonNull;import com.ss.bytertc.engine.RTCVideo;import com.ss.bytertc.engine.flutter.base.RTCVideoManager;import java.util.Objects;import i...
客户端 SDK
音频处理 设置音频变声、变调、均衡、混响等效果。 SetVoiceChangerType SetLocalVoicePitch SetLocalVoiceEqualization SetLocalVoiceReverbParam EnableLocalVoiceReverb 3.57 (Flutter)该版本于 2024 年 2 月 ... 以适配特定播放器作为接收端时接收 SEI 信息。参看: 功能简述 Android iOS macOS Windows 设置合流转推 SEI 信息的 payload type setSeiPayloadType seiPayloadType seiPayloadType sei_payload_type 设置合流转推...
Web/JS SDK集成开发指南
一. 概述 「A/B 测试」 在 Web/H5/WAP 端不提供单独的SDK,而是依赖增长营销套件SDK 中的A/B Test 相关接口。增长营销套件 SDK 主要的和A/B Test 相关接口有两个: 实验组分流接口。 指标上报(事件埋点上报)接口。 和... 具体能力请参考全埋点文档 enable_stay_duration 否 布尔类型。默认false。 开启停留时长。 具体请参考停留时长文档 cross_subdomain 否 布尔类型。默认false。 是否自动跨子域名识别用户,设置为true时...
接口说明
Web 传 SDK 支持视频、图片、普通文件的上传。本文介绍 Web 传 SDK 的相关参数、方法、生命周期和错误码等内容。 配置 initConfig 在初始化 TTUploader 实例时,您可以通过 initConfig 进行初始化配置。 javascript const uploader = new TTUploader(initConfig);initConfig 支持的参数如下表所示。 参数 类型 是否必传 默认值 描述 userId String 是 null 用户 ID。用于进行单点追踪日志,定位某一个用户的日志,请设置一个...

Web上音频播放器的duration为null(Flutter) -相关内容

Flutter SDK 集成与埋点

1. 集成 增长营销套件 SDK 1.1 集成 Flutter 插件在 Flutter 项目的 pubspec.yaml 中添加 rangers_applog_flutter_plugin 依赖 yaml dependencies: ...... rangers_applog_flutter_plugin: ^1.4.0并安装插件 sh... dart import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';// 登出时设置uuid为nullRangersApplogFlutterPlugin.setUserUniqueId(null); 3.2 设置用户属性 3.2.1 profileSet设置...

Flutter SDK 集成与埋点

1. 集成 增长营销套件 SDK 1.1 集成 Flutter 插件在 Flutter 项目的 pubspec.yaml 中添加 rangers_applog_flutter_plugin 依赖 yaml dependencies: ...... rangers_applog_flutter_plugin: ^1.4.0并安装插件 sh... dart import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';// 登出时设置uuid为nullRangersApplogFlutterPlugin.setUserUniqueId(null); 3.2 设置用户属性 3.2.1 profileSet设置...

Flutter SDK 集成与埋点

1. 集成 增长营销套件 SDK 1.1 集成 Flutter 插件在 Flutter 项目的 pubspec.yaml 中添加 rangers_applog_flutter_plugin 依赖 yaml dependencies: ...... rangers_applog_flutter_plugin: ^1.4.0并安装插件 sh... dart import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';// 登出时设置uuid为nullRangersApplogFlutterPlugin.setUserUniqueId(null); 3.2 设置用户属性 3.2.1 profileSet设置...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

集成 Web 观播 SDK

国内域名:https://lf-cdn-tos.bytescm.com/obj/static最新版本:1.5.1 资源引入后, ByteLiveWebSDK 挂载在 window 下。您可以通过以下方式,将观播 SDK 集成到您的 Web 应用中,从而在观看页展示直播间或点播播放器。... duration: Number;} 点播视频(预告和回放)断点续播事件。点播视频播放过程中该事件的触发时机如下: PC 端:页面关闭时,SDK 触发该事件。 移动端:WebView 的 pagehide 事件触发时或用户手动拖动进度条时,SDK 触发该...

播放音效文件

需要使用音效播放器接口。一般来说,时长小于 20 s 的音频为音效,使用音效播放器接口。例如,掌声、欢呼声、口哨声等。多个音效可以叠加播放。 对于时长较长的音频或 PCM 数据,应使用音乐播放器接口,参考播放音乐文件... 播放器类。 如果你需要将音效发送到远端,还需要加入房间并发布音频流,参考 构建 RTC 应用 获取详细步骤。 java rtcVideo = RTCVideo.createRTCVideo(this, Constants.APP_ID, rtcVideoEventHandler, null, null);r...

播放器内核

属性播放器内核的属性大部分是只读类型的,某些属性还支持写入。以获取视频时长 duration 例,该属性是只读类型,不能通过 set 方式设置视频时长。而视频音量 volume 不仅支持播放器内核对象 get 方式获取,还支持 s... 通常是 videoElement/audioElement autoplay Boolean 可读可写 设置/返回 自动播放属性 buffered TimeRange 只读 返回当前已缓冲的时间范围 played TimeRange 只读 返回已经播放的音频/视频的时间范围 crossOrigin...

使用混音功能

需要使用音乐播放类。播放音乐指的是时长较长的音频或 PCM 数据,例如,伴奏、背景音乐等。同一时间,只能播放 4 个音乐文件。 一般来说,时长小于 20 s 的音频为音效,应使用音效播放器接口,参考 播放音效 。 前提条件... 如果你需要将音频发送到远端,还需要加入房间并发布音频流,参考 构建 RTC 应用 获取详细步骤。 java // 创建引擎rtcVideo = RTCVideo.createRTCVideo(this, Constants.APP_ID, rtcVideoEventHandler, null, null);...

用户分析 OpenAPI(私有化)

当前支持的类型枚举值如下: user_unique_id ssid web_id device_id true query_id str 查询id true 3.获取用户的用户信息、设备信息、用户标签与用户属性值 3.1 API 定义Path:openapi/v1/{app_id}/behavio... *上述信息如果不存在会用null或空串填充。 device_info object 设备信息,包含设备型号、操作系统、应用版本、应用渠道、小程序应用版本、设备品牌、浏览器、分辨率、语言、设备价格等。*saas版本中,设备信息仅从...

用户分析 OpenAPI(私有化)

当前支持的类型枚举值如下: user_unique_id ssid web_id device_id true query_id str 查询id true 3.获取用户的用户信息、设备信息、用户标签与用户属性值 3.1 API 定义Path:openapi/v1/{app_id}/behavio... *上述信息如果不存在会用null或空串填充。 device_info object 设备信息,包含设备型号、操作系统、应用版本、应用渠道、小程序应用版本、设备品牌、浏览器、分辨率、语言、设备价格等。*saas版本中,设备信息仅从...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询