@@ -321,6 +353,15 @@ const isPlaying = ref(false);
const hasVideoError = ref(false);
const videoStatus = ref('点击"播放视频流"按钮开始查看实时视频');
+// 分辨率相关状态
+const changingResolution = ref(false);
+const loadingResolutions = ref(false);
+const selectedResolution = ref({ width: 640, height: 480 });
+const supportedResolutions = ref([
+ { width: 640, height: 480 },
+ { width: 1280, height: 720 }
+]);
+
// 数据
const statusInfo = ref({
isRunning: false,
@@ -549,6 +590,69 @@ const startStream = async () => {
}
};
+// 分辨率相关方法
+// 获取支持的分辨率列表
+const refreshResolutions = async () => {
+ loadingResolutions.value = true;
+ try {
+ addLog("info", "正在获取支持的分辨率列表...");
+ const resolutions = await videoClient.getSupportedResolutions();
+ supportedResolutions.value = resolutions;
+
+ // 获取当前分辨率
+ const currentRes = await videoClient.getCurrentResolution();
+ selectedResolution.value = currentRes;
+
+ addLog("success", "分辨率列表获取成功");
+ } catch (error) {
+ addLog("error", `获取分辨率列表失败: ${error}`);
+ console.error("获取分辨率列表失败:", error);
+ } finally {
+ loadingResolutions.value = false;
+ }
+};
+
+// 切换分辨率
+const changeResolution = async () => {
+ if (!selectedResolution.value) return;
+
+ changingResolution.value = true;
+ const wasPlaying = isPlaying.value;
+
+ try {
+ addLog("info", `正在切换分辨率到 ${selectedResolution.value.width}×${selectedResolution.value.height}...`);
+
+ // 如果正在播放,先停止视频流
+ if (wasPlaying) {
+ stopStream();
+ await new Promise(resolve => setTimeout(resolve, 1000)); // 等待1秒
+ }
+
+ // 设置新分辨率
+ const success = await videoClient.setResolution(selectedResolution.value.width, selectedResolution.value.height);
+
+ if (success) {
+ // 刷新流信息
+ await refreshStatus();
+
+ // 如果之前在播放,重新启动视频流
+ if (wasPlaying) {
+ await new Promise(resolve => setTimeout(resolve, 500)); // 短暂延迟
+ await startStream();
+ }
+
+ addLog("success", `分辨率已切换到 ${selectedResolution.value.width}×${selectedResolution.value.height}`);
+ } else {
+ addLog("error", "分辨率切换失败");
+ }
+ } catch (error) {
+ addLog("error", `分辨率切换失败: ${error}`);
+ console.error("分辨率切换失败:", error);
+ } finally {
+ changingResolution.value = false;
+ }
+};
+
// 停止视频流
const stopStream = () => {
try {
@@ -574,6 +678,7 @@ const stopStream = () => {
onMounted(async () => {
addLog("info", "HTTP 视频流页面已加载");
await refreshStatus();
+ await refreshResolutions(); // 初始化分辨率信息
});
onUnmounted(() => {