首页 > 其他分享 >Webview2动态设置页面video的Blob进行播放

Webview2动态设置页面video的Blob进行播放

时间:2025-01-14 09:54:29浏览次数:1  
标签:byteCharacters Webview2 byteNumbers video Blob var new

Webview2动态设置页面video的Blob进行播放

 

<Window
    x:Class="WpfApp2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WpfApp2"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:webview2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
      mc:Ignorable="d"
      Title="MainWindow" Height="720" Width="1280">
    <Grid>
        <webview2:WebView2 x:Name="webview" 
          Source="https://www.baidu.com" Margin="0,272,0,0"></webview2:WebView2>
        <Button VerticalAlignment="Top" Height="148" Margin="235,0,579,0" Click="Button_Click">Play</Button>
    </Grid>
</Window>

  

 

 

 



 public MainWindow()
 {
     InitializeComponent();
     webview.Source = new Uri("http://localhost/play.html");
 }



void testPlay() {


     // 读取视频文件为字节数组
     byte[] videoData = File.ReadAllBytes("111.MP4");

     // 将字节数组转换为 Base64 字符串
     string base64Video = Convert.ToBase64String(videoData);

     // 构建 Blob URL
     string script = $@"
             var byteCharacters = atob('{base64Video}');
             var byteNumbers = new Array(byteCharacters.length);
             for (var i = 0; i < byteCharacters.length; i++) {{
                 byteNumbers[i] = byteCharacters.charCodeAt(i);
             }}
             var byteArray = new Uint8Array(byteNumbers);
             var blob = new Blob([byteArray], {{ type: 'video/mp4' }});
             var video = document.getElementById('myVideo');
             video.src = URL.createObjectURL(blob);
             video.play();
         ";

     // 执行 JavaScript
     webview.ExecuteScriptAsync(script);





 }

  

标签:byteCharacters,Webview2,byteNumbers,video,Blob,var,new
From: https://www.cnblogs.com/wgscd/p/18670168

相关文章

  • RewardedVideoAd.onClose
    RewardedVideoAd.onClose(functionlistener)小程序插件:不支持功能描述监听用户点击关闭广告按钮的事件。参数functionlistener用户点击关闭广告按钮的事件的监听函数参数Objectres属性类型说明最低版本isEndedboolean视频是否是在用户完整观看的情......
  • wx.createRewardedVideoAd
    RewardedVideoAdwx.createRewardedVideoAd(Objectobject)基础库2.0.4开始支持,低版本需做兼容处理。小程序插件:支持,需要小程序基础库版本不低于2.8.1功能描述创建激励视频广告组件。请通过wx.getSystemInfoSync()返回对象的SDKVersion判断基础库版本号后再使用该......
  • 计算机视觉实战——视频分析(Video Analysis)
        ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨  ✨个人主页欢迎您的访问 ✨期待您的三连✨  ​​​​​​​​​​​​​​​​​​​​​​​视频分析是计算机视觉中的一个重要领域,旨在从视频数据中提取有用的......
  • VideoPlayer插件的功能和用法
    文章目录1.概念介绍2.使用方法2.1实现步骤2.2具体细节3.示例代码4.内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起TalkFlutter吧。1.概念介绍播放视频是我们常用的功能,不过Flutt......
  • 攻防世界 - Misc - Level 2 | funny_video
    关注这个靶场的其它相关笔记:攻防世界(XCTF)——靶场笔记合集-CSDN博客0x01:考点速览本题的考察的是MISC中的音频隐写,要想过此关,你需要知道以下知识点:使用MKVToolNix查看非默认声道并导出。(xxx.mp3)使用Audacity查看音频的“频谱图”。0x02:WriteUP将附件从靶......
  • wx.addVideoToFavorites
    wx.addVideoToFavorites(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。以Promise风格调用:支持小程序插件:不支持功能描述收藏视频参数Objectobject属性类型默认值必填说明videoPathstring是要收藏的视频地址,必须为本地路径或临时路径......
  • VideoDecoder.start
    PromiseVideoDecoder.start(Objectobject)基础库2.11.0开始支持,低版本需做兼容处理。小程序插件:支持功能描述开始解码参数Objectobject属性类型默认值必填说明最低版本sourcestring是需要解码的视频源文件。基础库2.13.0以下的版本只支持本地......
  • VideoDecoder.on
    VideoDecoder.on(stringeventName,functioncallback)基础库2.11.0开始支持,低版本需做兼容处理。小程序插件:支持功能描述注册监听录制事件的回调函数。当对应事件触发时,回调函数会被执行参数stringeventName事件名eventName的合法值值说明最低版本st......
  • VideoDecoder.seek
    PromiseVideoDecoder.seek(numberposition)基础库2.11.0开始支持,低版本需做兼容处理。小程序插件:支持功能描述跳到某个时间点解码参数numberposition跳转的解码位置,单位ms返回值Promise基础库2.16.1开始支持,低版本需做兼容处理。......
  • Luogu P3041 USACO12JAN Video Game G 题解 [ 紫 ] [ AC 自动机 ] [ 动态规划 ]
    VideoGamesG:弱智紫题,30min切了,dp思路非常板。多模式串一看肯定就是要建出AC自动机,然后在fail树里下传标记,预处理每个节点到达后的得分。然后设计\(dp_{i,j}\)表示第\(i\)个字符,AC自动机里匹配节点在\(j\)的最大答案,刷表法转移即可:\[dp_{i+1,ch_{j,c}}\gets\ma......