在 vscode 扩展中的 previewHtml 命令上显示 HTML5 <video>

Sér*_*pes 4 video visual-studio-code vscode-extensions

我正在尝试编写一个新的简单扩展,它使用<video>. vscode似乎支持视频播放,因为我可以完美地观看YouTube视频。

但我不能让我自己的 mp4 工作。它根本不玩。

我怀疑这与跨源请求有关。但是我不知道如何在 vscode html 预览中调试网络请求。或者它可能完全不同。


中的代码extension.ts非常简单:

'use strict';
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    let uri = vscode.Uri.parse('video-player://authority/play');

    class TextDocumentContentProvider implements vscode.TextDocumentContentProvider {
        private _onDidChange = new vscode.EventEmitter<vscode.Uri>();

        public provideTextDocumentContent(uri: vscode.Uri): string {
            return `
                <video crossorigin="anonymous" controls src="https://example.com/video.mp4"></video>
                `;
        }

        get onDidChange(): vscode.Event<vscode.Uri> {
            return this._onDidChange.event;
        }

        public update(uri: vscode.Uri) {
            this._onDidChange.fire(uri);
        }

    }

    let provider = new TextDocumentContentProvider();
    let registration = vscode.workspace.registerTextDocumentContentProvider('video-player', provider);

    let disposable = vscode.commands.registerCommand('extension.playVideo', () => {
        return vscode.commands.executeCommand('vscode.previewHtml', uri, vscode.ViewColumn.Two, 'Video Player').then((success) => {
        }, (reason) => {
            vscode.window.showErrorMessage(reason);
        });
    });

    context.subscriptions.push(disposable, registration);
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ner 9

这是不可能的,因为 VS Code 使用不包含 ffmpeg 的电子版本。这意味着在 vscode 或其 webviews 中不支持播放许多常见的媒体格式。没有计划改变这一点。(我是vscode的webview API的开发者)

您可以尝试查找支持的格式(例如短片的 gif 或 mjpeg),或使用库在软件中播放内容。

(PS. 不要使用vscode.previewHtml; 使用正确的webview API )