PixiJS — 视频纹理

<!doctype html>
<html lang="zn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

    <style>
        button {
            display: inline-block;
            color: #fff;
            border-radius: 4px;
            border: none;
            cursor: pointer;
            outline: none;
            padding: 10px 20px;
            margin-bottom: 10px;
        }

        button:hover {
            color: #ddd;
        }

        #play {
            background-color: #ff0081;
            box-shadow: 0 2px 25px rgba(255, 0, 130, 0.5);
        }

        #pause {
            background-image: linear-gradient(to right, #4facfe 0%, #00f2fe 100%);
            margin-left: 20px;
            box-shadow: 0 2px 25px rgba(22, 217, 227, 0.5);
        }
    </style>
</head>

<body>
    <button id="play">播放</button>
    <button id="pause">暂停</button>
    <div id="px-render"></div>

    <script src="https://www.kkkk1000.com/js/pixi4.8.2.js"></script>
    <script>
        //创建一个 Pixi应用 需要的一些参数
        let option = {
            width: 426,
            height: 240,
            transparent: true,
        }
        let displayResolution = window.devicePixelRatio;
        console.log(displayResolution)
        //创建一个 Pixi应用
        let app = new PIXI.Application(option);
        //获取舞台
        let stage = app.stage;
        //获取渲染器
        let renderer = app.renderer;
        let playground = document.getElementById('px-render');
        //把 Pixi 创建的 canvas 添加到页面上
        playground.appendChild(renderer.view);

        //需要加载的图片的地址
        let videoUrl = "https://www.kkkk1000.com/lemall/media/123.mp4";
        //视频纹理
        let videoTexture;
        //需要用到的精灵 
        let videoSprite;
        //视频元素
        let videoSource;

        //加载视频纹理
        videoTexture = PIXI.Texture.fromVideo(videoUrl);
        //创建视频精灵
        videoSprite = new PIXI.Sprite(videoTexture);
        //设置视频精灵的宽度和高度
        videoSprite.width = option.width;
        videoSprite.height = option.height;
        //视频元素
        videoSource = videoTexture.baseTexture.source;

        //把视频精灵添加到舞台上
        stage.addChild(videoSprite);

        let pixiBtn = document.getElementById("play");
        let pauseBtn = document.getElementById("pause");

        pixiBtn.addEventListener("click", function () {
            videoSource.play();
        });
        pauseBtn.addEventListener("click", function () {
            videoSource.pause()
        });

    </script>
</body>

</html>

参考:https://blog.csdn.net/FE_dev/article/details/86584974

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取视频纹理,可以使用 AVPro Video 插件的 API。以下是一些示例代码: ```c# using UnityEngine; using RenderHeads.Media.AVProVideo; public class VideoFrameTexture : MonoBehaviour { public MediaPlayer mediaPlayer; public int videoTrackIndex = 0; private Texture2D texture; private void Start() { texture = new Texture2D(mediaPlayer.Info.GetVideoWidth(videoTrackIndex), mediaPlayer.Info.GetVideoHeight(videoTrackIndex), TextureFormat.RGB24, false); mediaPlayer.Control.SetTextureProperties(videoTrackIndex, texture.width, texture.height, TextureFormat.RGB24); mediaPlayer.Events.AddListener(OnVideoEvent); mediaPlayer.Control.Prepare(); } private void OnVideoEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) { if (et == MediaPlayerEvent.EventType.FinishedPlaying) { mediaPlayer.Control.Rewind(); mediaPlayer.Control.Play(); } else if (et == MediaPlayerEvent.EventType.Started) { mediaPlayer.Control.Play(); } } private void Update() { if (mediaPlayer.Control != null && mediaPlayer.Control.IsPlaying()) { mediaPlayer.ExtractFrame(videoTrackIndex, texture); } } private void OnGUI() { GUI.DrawTexture(new Rect(0, 0, texture.width, texture.height), texture); } } ``` 在这个示例代码中,我们使用了 AVPro Video 插件中的 MediaPlayer 类来播放视频,并且使用 ExtractFrame 方法从视频中提取帧纹理。需要注意的是,获取帧纹理的操作应该在 Update 函数中进行,以确保每一帧都能够获取到最新的视频帧。 另外,我们还要在 Start 函数中创建一个 Texture2D 对象,并设置其宽度、高度和格式,然后调用 SetTextureProperties 方法来将其设置为视频纹理。最后,在 OnGUI 函数中将纹理渲染到屏幕上。 当然,这只是一个简单的示例代码,你可以根据自己的需求对其进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值