Pixi.js: videoTexture.source.play ()๋Š” IOS์—์„œ ์ „์ฒด ํ™”๋ฉด์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 10์›” 14์ผ  ยท  25์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pixijs/pixi.js

# 2873์—์„œ ์–ด์ œ convo์˜ @englercj
์ด๊ฒƒ์€ #dev ๋ธŒ๋žœ์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค.
ํŽ˜์ด์ง€์— ์ˆจ๊ฒจ์ง„ ๋น„๋””์˜ค ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ž๋™ ์žฌ์ƒ ๋˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

์บ”๋ฒ„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ฐ์Šคํฌํ†ฑ / ์•ˆ๋“œ๋กœ์ด๋“œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

videoTexture.source.play ()๋ฅผ ๋ˆ„๋ฅด๋ฉด ios 9์—์„œ FS๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์š”์ฒญ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ๋น„๋””์˜ค๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด pixijs๋กœ ๊ตฌํ˜„๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ.

๐Ÿ‘ Not A Bug ๐Ÿ’พ v4.x (Legacy) ๐Ÿ“ข Accepting PRs ๐Ÿ•ท Bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

omfg ๋ฏฟ์„ ์ˆ˜ ์—†์–ด! ๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. fml. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  25 ๋Œ“๊ธ€

์ด์ œ ์ด์Šˆ ๋ชฉ๋ก์„ ์‚ดํŽด ๋ดค๋Š”๋ฐ # 3078๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๊นŒ?

3066์ด ๋” ์ •ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์œ„ํ•ด (https://github.com/bfred-it/iphone-inline-video) ๋น„๋””์˜ค๋ฅผ iOS 9์—์„œ ์ธ๋ผ์ธ์œผ๋กœ ์žฌ์ƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€๋งŒ videoTexture๊ฐ€ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค ios9์˜ ํ”„๋ ˆ์ž„. ํ•ด๋‹น lib๋Š” requestanimationframe ํ˜ธ์ถœ์„ ๋งŒ๋“ค๊ณ  ํ”„๋ ˆ์ž„๋ณ„๋กœ ๋น„๋””์˜ค๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ , ํฅ๋ฏธ ๋กญ๊ตฐ์š”. iOS ์žฅ์น˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ํž˜๋“  ์ผ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด ๊ณง์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

@ pr1ntr ์ด์— ๋Œ€ํ•œ ์ด์ „ ์Šค๋ ˆ๋“œ์—์„œ ios9 ์ดํ•˜๊ฐ€ ์ „์ฒด ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ ๋Š” ๋น„๋””์˜ค๋ฅผ ์žฌ์ƒํ•  ์ˆ˜์—†๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Apple์ด ๋””์ž์ธ ํ•œ ๋ฐฉ์‹์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

์ด์ œ์ด ๋™์ž‘์„ ์‹ค์ œ๋กœ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์˜๋ฆฌํ•œ ํ—›์†Œ๋ฆฌ๋ฅผํ•˜๋Š” ์จ๋“œ ํŒŒํ‹ฐ ํด๋ฆฌ ํ•„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฏฟ๋Š” ๊ฒƒ์€ PIXI์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด ๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— PIXI ์ž์ฒด์— ํฌํ•จ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ .... ๋‹ค์–‘ํ•œ OS ๋ฒ„์ „์˜ iPhone์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ๊ณ ,์ด lib์™€ ํ•จ๊ป˜ ํ”Œ๋ ˆ์ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค์‹œ ์—ฐ๋ฝ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์•ˆ๋…•ํ•˜์„ธ์š”, ์กฐ์‚ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ฐพ์€ ๋™์ž‘์€ ๋น„๋””์˜ค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํ…์Šค์ฒ˜์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํด๋ฆฌ ํ•„์€ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋™์˜์ƒ์„ ์ง„ํ–‰ํ•  ์ˆ˜์žˆ๋Š” ์ž์ฒด ๋ถ€๋‘ requestAnimationFrame ํ‹ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. <video> ํƒœ๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์ „์ฒด ํ™”๋ฉด์ด ์•„๋‹ˆ๋ผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋“ฃ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ถœ์ฒ˜๋ฅผ ์กฐ์‚ฌํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ๊ทธ๋‹ค์ง€ ๋งŽ์€ ์‹œ๊ฐ„ ๋ฐ / ๋˜๋Š” ์ฐธ์กฐ ํ”„๋ ˆ์ž„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋™์ž‘์„ ๋‚˜ํƒ€ ๋‚ด๊ธฐ ์œ„ํ•ด codepen์—์„œ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋ ๊นŒ์š”?

๋ช‡ ๋ถ„ ๋” ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๋‹จ!

var renderer = PIXI.autoDetectRenderer(window.innerWidth, window.innerHeight, { transparent: true });
document.body.appendChild(renderer.view);

// create the root of the scene graph
var stage = new PIXI.Container();

// create a video texture from a path
var texture = PIXI.Texture.fromVideo('video.mp4');
texture.baseTexture.autoPlay = false;
makeVideoPlayableInline(texture.baseTexture.source, false);

window.document.addEventListener( 'mousedown', function() {
    texture.baseTexture.source.play();
});

window.document.addEventListener( 'touchstart', function() {
    texture.baseTexture.source.play();
});

var videoSprite = new PIXI.Sprite(texture);
videoSprite.width = renderer.width;
videoSprite.height = renderer.height;
stage.addChild(videoSprite);

animate();

function animate(){
    requestAnimationFrame(animate);

    // render the stage
    renderer.render(stage);
}

๋”ฐ๋ผ์„œ ์œ„์˜ ๋‚ด์šฉ์€ ios8 ๋ฐ ios9์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. 'makeVideoPlayableInline'์„ ํ˜ธ์ถœ ํ•  ๋•Œ 'false'๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋น„๋””์˜ค์— ์†Œ๋ฆฌ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด์ด ํƒ€์‚ฌ ํด๋ฆฌ ํ•„์„ ์‚ฌ์šฉํ•˜์—ฌ PIXI์™€ ์ธ๋ผ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ํ—ˆ์šฉ๋˜๋Š” ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„์ž…๋‹ˆ๋‹ค!

ํ•ต์‹ฌ์€ ์˜ค๋””์˜ค๊ฐ€ ์ „ํ˜€์—†๋Š” ๋น„๋””์˜ค ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฑฐ์ง“์„ ์ œ๊ณตํ–ˆ์ง€๋งŒ ๋น„๋””์˜ค์— ์˜ค๋””์˜ค ํŠธ๋ž™์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋””์˜ค๊ฐ€์žˆ๋Š” ํ…Œ์ŠคํŠธ ๋น„๋””์˜ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ณ ์žˆ๋Š” ์•ฑ์˜ ์‹ค์ œ ๋™์˜์ƒ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ธ์ฝ”๋”ฉ์„ ์‹œ๋„ํ•˜๊ณ  ๋‹ค์‹œ๋ณด๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋น„๋””์˜ค๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ์—์„œ ๋น„๋””์˜ค์— ์˜ค๋””์˜ค๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 'makeVideoPlayableInline'์— 'false'๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋™์˜์ƒ์ด ์ธ๋ผ์ธ์œผ๋กœ ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋งž์•„ ๋‚˜๋Š” ๊ฑฐ์ง“์„ ์ „๋‹ฌํ•˜๊ณ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋น„๋””์˜ค๋ฅผ ํฌ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ œ ๋น„๋””์˜ค ์ปดํฌ๋„ŒํŠธ _Warning_ React์ž…๋‹ˆ๋‹ค.
https://gist.github.com/pr1ntr/8511ede7068eac180f515a18ddf75a89#file -connectvideo-js-L52
์ธ๋ผ์ธ ํด๋ฆฌ ํ•„์„ ์‹คํ–‰ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค (๋ผ์ธ 52).
60 ํ–‰์€ ๋ถ€๋ชจ์—๊ฒŒ PixiVideoWrapper ๋ฅผ ๋ Œ๋”๋งํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ready ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์ž…๋‹ˆ๋‹ค :
https://gist.github.com/pr1ntr/57032704841e471c3a145308072f3ee2#file -game-js-L37

๊ทธ๋Ÿฐ ๋‹ค์Œ PixiVideoWrapper๊ฐ€ ๋งˆ์šดํŠธ๋˜๋ฉด ๋น„๋””์˜ค ํ…์Šค์ฒ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
https://gist.github.com/pr1ntr/3a44f327406d5d5a97824c47d6194484#file -pixivideowrapper-js-L118

๋”ฐ๋ผ์„œ Game.js์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํƒญํ•œ ๊ฒฝ์šฐ PixiVideoWrapper 81 ํ–‰์—์„œ 121 ํ–‰ componentWillReceiveProps ํ†ตํ•ด ์žฌ์ƒํ•˜๋„๋ก ๋น„๋””์˜ค์— ์ง€์‹œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

display:none ์ œ๊ฑฐํ•˜๋ฉด ์ธ๋ผ์ธ ๋น„๋””์˜ค ์žฌ์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ตœ์‹  #dev๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์˜™

์ตœ์‹  ๊ฐœ๋ฐœ์ž ์ด์ „์˜ ๋ชจ๋“  ๊ฒƒ์€ ๊ธฐ๋ณธ ๋น„๋””์˜ค ํ…์Šค์ฒ˜๋ฅผ๋กœ๋“œํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ios10์— ํ•„์š”ํ•œ ๋น„๋””์˜ค์— ๋Œ€ํ•œ ์ธ๋ผ์ธ ํƒœ๊ทธ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๊ทธ๋ž˜์„œ ๋‹น์‹ ์˜ ๋ชจ๋ฒ”์ด ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ DOM์—์„œ ๋น„๋””์˜ค๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? HOOK DIV๋ผ๊ณ ํ•˜๋Š”์ด ๋ฒ„ํŠผ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฑด ์ด์ƒํ•ด. ๋™์˜์ƒ์ด ์ด๋ฏธ ํŽ˜์ด์ง€์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์™œ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค๊นŒ์š”?

basevideotexture๋ฅผ ๋งŒ๋“ค ๋•Œ ์†Œ์Šค๊ฐ€ ์ง์ ‘ ๋น„๋””์˜ค์ด๋ฉด html ๋น„๋””์˜ค ํƒœ๊ทธ ์ž์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์ด ์ฐจ์ด์ ์ด์žˆ๋Š” ๊ณณ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๋ชฉ์š”์ผ๊นŒ์ง€ iOS ๊ธฐ๊ธฐ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†์–ด์„œ ๋‹ค์‹œ ํ”Œ๋ ˆ์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ์‹ค์ œ ๊ธฐ๊ธฐ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”
์ž์‹ ์˜ ๋น„๋””์˜ค ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ios9์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜์œผ๋ฉฐ ์†Œ์Šค๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ œ๊ณต ํ•œ ์˜ˆ์ œ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

import inlineVideo from 'iphone-inline-video';

var video = document.createElement('video');
video.setAttribute('playsinline','');
video.setAttribute('webkit-playsinline','');

var src = document.createElement('source');
src.setAttribute('src', vidUrl);
src.setAttribute('type', 'video/mp4');

video.appendChild(src);

console.log(video);

// create the root of the scene graph
var stage = new PIXI.Container();

// create a video texture from a path
var texture = PIXI.Texture.fromVideo(video);
texture.baseTexture.autoPlay = false;
inlineVideo(texture.baseTexture.source, false);

window.document.addEventListener( 'mousedown', function() {
    texture.baseTexture.source.play();
});

window.document.addEventListener( 'touchstart', function() {
    texture.baseTexture.source.play();
});

var videoSprite = new PIXI.Sprite(texture);
videoSprite.width = renderer.width;
videoSprite.height = renderer.height;
stage.addChild(videoSprite);

animate();

function animate(){
    requestAnimationFrame(animate);

    // render the stage
    renderer.render(stage);
}

PIXI์˜ ์†Œ์Šค์—์„œ ์ฐจ์ด์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฏธ์ณ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ์ ์€ PIXI๊ฐ€ ๋ฌธ์ž์—ด URL์—์„œ ์ž์ฒด ๋น„๋””์˜ค ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋„๋กํ•˜๋ฉด ๋‹ค์Œ์„ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
video.load();
๋ฐ”๋กœ ํ›„ ์‹œ๋„
video.appendChild(src);

omfg ๋ฏฟ์„ ์ˆ˜ ์—†์–ด! ๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. fml. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰