Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
動画エフェクトに関する新技術の紹介
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shoma.kato
July 06, 2025
Programming
28
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
動画エフェクトに関する新技術の紹介
shoma.kato
July 06, 2025
More Decks by shoma.kato
See All by shoma.kato
体験!SwiftChartsの世界
shomakato
0
24
はじめてのPDFKit.pdf
shomakato
0
220
はじめてのPDFKit
shomakato
0
45
SwiftとC++を利用した画像処理プログラミング
shomakato
0
2.4k
Other Decks in Programming
See All in Programming
CSC307 Lecture 17
javiergs
PRO
0
320
3Dシーンの圧縮
fadis
1
770
Contextとはなにか
chiroruxx
1
320
New "Type" system on PicoRuby
pocke
1
920
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
500
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
550
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
780
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
770
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
320
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
390
GraphQLとの向き合い方2022年版
quramy
50
15k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Tell your own story through comics
letsgokoyo
1
950
Are puppies a ranking factor?
jonoalderson
1
3.5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
How GitHub (no longer) Works
holman
316
150k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Producing Creativity
orderedlist
PRO
348
40k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
Transcript
Copyright © ZOZO, Inc. ಈըΤϑΣΫτʹؔ͢Δ ৽ٕज़ͷհ גࣜձࣾZOZO ϒϥϯυιϦϡʔγϣϯ։ൃຊ෦ FAANS෦ ϑϩϯτΤϯυϒϩοΫ
Ճ౻ ਅ @shoma10170806
© ZOZO, Inc. 2 גࣜձࣾZOZO ϒϥϯυιϦϡʔγϣϯ։ൃຊ෦ FAANS෦ ϑϩϯτΤϯυϒϩοΫ Ճ౻ ਅ
• X: @shoma10170806 • γϣοϓελοϑͷൢചαϙʔτπʔϧ ʮFAANSʯͷiOSΞϓϦΛ։ൃ • ത࢜ޙظ՝ఔʹࡏֶதɹը૾ॲཧͳͲͷݚڀʹैࣄ
© ZOZO, Inc. 3 FAANSͷಈըػೳ ϑΝογϣϯಈը
© ZOZO, Inc. 4 FAANSͷಈըػೳ ϑΝογϣϯಈը 88%$ ಈըΤϑΣΫτͷ৽ٕज़
© ZOZO, Inc. 5 ಈըΤϑΣΫτͷηογϣϯ l&OIBODFZPVSBQQXJUINBDIJOFMFBSOJOHCBTFEWJEFPF ff FDUTz 7JEFP5PPMCPYGSBNFXPSL ϑϨʔϜϨʔτͷม
ϒϥʔʢ΅͔͠ʣͷద༻ ղ૾ʢߴղ૾Խʣ
© ZOZO, Inc. 6 l&OIBODFZPVSBQQXJUINBDIJOFMFBSOJOHCBTFEWJEFPF ff FDUTz 7JEFP5PPMCPYGSBNFXPSL ϑϨʔϜϨʔτͷม ϒϥʔʢ΅͔͠ʣͷద༻
ղ૾ʢߴղ૾Խʣ ಈըΤϑΣΫτͷηογϣϯ
© ZOZO, Inc. 7 ϑϨʔϜϨʔτͷมͱ ඵͰຕ T
© ZOZO, Inc. 8 ϑϨʔϜϨʔτͷมͱ ඵͰຕ ඵͰຕ T T ө૾Β͔ʹʂ
© ZOZO, Inc. 9 ϑϨʔϜϨʔτมྫʢ+ εϩʔʣ ݩಈը Tຕ εϩʔ εϩʔ
ʴ ม
© ZOZO, Inc. 10 ϑϨʔϜϨʔτมྫʢ+ εϩʔʣ ݩಈը Tຕ εϩʔ εϩʔ
ʴ ม εϩʔͷΈ Tຕ ϑϨʔϜϨʔτม Tຕ
© ZOZO, Inc. 11 ࣮ͷྲྀΕ ɾ75'SBNF3BUF$POWFSTJPO$PO fi HVSBUJPOͷఆٛ ɾ75'SBNF1SPDFTTPSͷఆٛ ɾόοϑΝͷׂΓͯ
ɾϑϨʔϜϨʔτͷมॲཧ
© ZOZO, Inc. 12 ࣮ͷྲྀΕ ɾ75'SBNF3BUF$POWFSTJPO$PO fi HVSBUJPOͷఆٛ ɾ75'SBNF1SPDFTTPSͷఆٛ ɾόοϑΝͷׂΓͯ
ɾϑϨʔϜϨʔτͷมॲཧ
© ZOZO, Inc. 13 VTFrameRateConversionConfigurationͷఆٛ ᶃ75'SBNF3BUF$POWFSTJPO$PO fi HVSBUJPOͱ ϑϨʔϜϨʔτมͷॳظߏͷఆٛ ᶄར༻Մೳͳ04
J04 ɺJ1BE04ɺNBD04
© ZOZO, Inc. 14 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =
VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ}
© ZOZO, Inc. 15 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =
VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ಈըͷ෯ɺߴ͞
© ZOZO, Inc. 16 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =
VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ಈըͷ෯ɺߴ͞ ಛྔͷܭࢉํ๏
© ZOZO, Inc. 17 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =
VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ग़ྗͷ࣭ ಈըͷ෯ɺߴ͞ ಛྔͷܭࢉํ๏
© ZOZO, Inc. 18 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =
VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ग़ྗͷ࣭ ΞϧΰϦζϜͷઃఆ ಈըͷ෯ɺߴ͞ ը૾ಛͷܭࢉํ๏
© ZOZO, Inc. 19 ࣮ͷྲྀΕ ɾ75'SBNF3BUF$POWFSTJPO$PO fi ɾ75'SBNF1SPDFTTPSͷఆٛ ɾόοϑΝͷׂΓͯ ɾϑϨʔϜϨʔτͷมॲཧ
© ZOZO, Inc. 20 VTFrameProcessorͷఆٛ ᶃ75'SBNF1SPDFTTPSͱ ߴͳө૾ॲཧΛߦ͏Ϋϥε ᶄϓϩάϥϜ let frameProcessor
= VTFrameProcessor() try frameProcessor.startSession(configuration: configuration) ઌ΄Ͳͷ 75'SBNF3BUF$POWFSTJPO$PO fi HVSBUJPO
© ZOZO, Inc. 21 ࣮ͷྲྀΕ ɾ75'SBNF3BUF$POWFSTJPO$PO fi ɾ75'SBNF1SPDFTTPSͷఆٛ ɾόοϑΝͷׂΓͯ ɾϑϨʔϜϨʔτͷมॲཧ
© ZOZO, Inc. 22 όοϑΝͷׂΓͯ ᶃʜͷલʹϑϨʔϜϨʔτมͷΠϝʔδʢը૾ഒʣ
© ZOZO, Inc. 23 όοϑΝͷׂΓͯ ᶃʜͷલʹϑϨʔϜϨʔτมͷΠϝʔδʢϑϨʔϜϨʔτഒʣ
͜͜Λੜ
© ZOZO, Inc. 24 όοϑΝͷׂΓͯ let sourceFrame = VTFrameProcessorFrame( buffer:
pixelBuffer, presentationTimeStamp: sourcePTS ) let nextFrame = VTFrameProcessorFrame( buffer: pixelBuffer, presentationTimeStamp: nextPTS ) var intervals: [Float] = [0.25, 0.5, 0.75] let destinationFrames = try framesBetween( firstPTS: sourcePTS, lastPTS: nextPTS, interpolationIntervals: intervals ) ᶄϓϩάϥϜ
© ZOZO, Inc. 25 όοϑΝͷׂΓͯ let sourceFrame = VTFrameProcessorFrame( buffer:
pixelBuffer, presentationTimeStamp: sourcePTS ) let nextFrame = VTFrameProcessorFrame( buffer: pixelBuffer, presentationTimeStamp: nextPTS ) var intervals: [Float] = [0.25, 0.5, 0.75] let destinationFrames = try framesBetween( firstPTS: sourcePTS, lastPTS: nextPTS, interpolationIntervals: intervals ) ᶄϓϩάϥϜ
© ZOZO, Inc. 26 όοϑΝͷׂΓͯ let sourceFrame = VTFrameProcessorFrame( buffer:
pixelBuffer, presentationTimeStamp: sourcePTS ) let nextFrame = VTFrameProcessorFrame( buffer: pixelBuffer, presentationTimeStamp: nextPTS ) var intervals: [Float] = [0.25, 0.5, 0.75] let destinationFrames = try framesBetween( firstPTS: sourcePTS, lastPTS: nextPTS, interpolationIntervals: intervals ) ᶄϓϩάϥϜ
© ZOZO, Inc. 27 όοϑΝͷׂΓͯ let sourceFrame = VTFrameProcessorFrame( buffer:
pixelBuffer, presentationTimeStamp: sourcePTS ) let nextFrame = VTFrameProcessorFrame( buffer: pixelBuffer, presentationTimeStamp: nextPTS ) var intervals: [Float] = [0.25, 0.5, 0.75] let destinationFrames = try framesBetween( firstPTS: sourcePTS, lastPTS: nextPTS, interpolationIntervals: intervals ) ᶄϓϩάϥϜ
© ZOZO, Inc. 28 όοϑΝͷׂΓͯ let sourceFrame = VTFrameProcessorFrame( buffer:
pixelBuffer, presentationTimeStamp: sourcePTS ) let nextFrame = VTFrameProcessorFrame( buffer: pixelBuffer, presentationTimeStamp: nextPTS ) var intervals: [Float] = [0.25, 0.5, 0.75] let destinationFrames = try framesBetween( firstPTS: sourcePTS, lastPTS: nextPTS, interpolationIntervals: intervals ) ᶄϓϩάϥϜ
© ZOZO, Inc. 29 ϑϨʔϜϨʔτͷมॲཧ ग़ྗύϥϝʔλͷઃఆॲཧͷ࣮ߦ guard let parameters =
VTFrameRateConversionParameters( sourceFrame: sourceFrame, nextFrame: nextFrame, opticalFlow: nil, interpolationPhase: intervalArray, submissionMode: .sequential, destinationFrames: destinationFrames ) else {ɹthrow Fault.failedToCreateFRCParametersɹ} try await frameProcessor.process(parameters: parameters)
© ZOZO, Inc. 30 ϑϨʔϜϨʔτͷมॲཧ ग़ྗύϥϝʔλͷઃఆॲཧͷ࣮ߦ guard let parameters =
VTFrameRateConversionParameters( sourceFrame: sourceFrame, nextFrame: nextFrame, opticalFlow: nil, interpolationPhase: intervalArray, submissionMode: .sequential, destinationFrames: destinationFrames ) else {ɹthrow Fault.failedToCreateFRCParametersɹ} try await frameProcessor.process(parameters: parameters) ϑϨʔϜมͷग़ྗύϥϝʔλ
© ZOZO, Inc. 31 ϑϨʔϜϨʔτͷมॲཧ ग़ྗύϥϝʔλͷઃఆॲཧͷ࣮ߦ guard let parameters =
VTFrameRateConversionParameters( sourceFrame: sourceFrame, nextFrame: nextFrame, opticalFlow: nil, interpolationPhase: intervalArray, submissionMode: .sequential, destinationFrames: destinationFrames ) else {ɹthrow Fault.failedToCreateFRCParametersɹ} try await frameProcessor.process(parameters: parameters) ϑϨʔϜมͷೖग़ྗύϥϝʔλ όοϑΝͷೖྗ
© ZOZO, Inc. 32 ϑϨʔϜϨʔτͷมॲཧ ग़ྗύϥϝʔλͷઃఆॲཧͷ࣮ߦ guard let parameters =
VTFrameRateConversionParameters( sourceFrame: sourceFrame, nextFrame: nextFrame, opticalFlow: nil, interpolationPhase: intervalArray, submissionMode: .sequential, destinationFrames: destinationFrames ) else {ɹthrow Fault.failedToCreateFRCParametersɹ} try await frameProcessor.process(parameters: parameters) ϑϨʔϜมͷೖग़ྗύϥϝʔλ όοϑΝͷೖྗ ग़ྗͷ֨ೲઌ
© ZOZO, Inc. 33 ϑϨʔϜϨʔτͷมॲཧ ग़ྗύϥϝʔλͷઃఆॲཧͷ࣮ߦ guard let parameters =
VTFrameRateConversionParameters( sourceFrame: sourceFrame, nextFrame: nextFrame, opticalFlow: nil, interpolationPhase: intervalArray, submissionMode: .sequential, destinationFrames: destinationFrames ) else {ɹthrow Fault.failedToCreateFRCParametersɹ} try await frameProcessor.process(parameters: parameters) ϑϨʔϜมͷೖग़ྗύϥϝʔλ όοϑΝͷೖྗ ग़ྗͷ֨ೲઌ มͷ࣮ߦ
© ZOZO, Inc. 34 ϑϨʔϜϨʔτͷม݁Ռ ೖྗ ग़ྗ
© ZOZO, Inc. 35 ·ͱΊ 75'SBNF1SPDFTTPSͳͲ৽ٕज़Λ༻͍ͨ ಈըΤϑΣΫτͷద༻ํ๏ͷհ ଞͷΤϑΣΫτ໘ന͍ͷͰɺ ͥͻ৭ʑ৮ͬͯΈ͍ͯͩ͘͞ʂ
None
© ZOZO, Inc. 37 ࠷ޙʹαϥοͱ͍͑ͨ͜ͱ ᶃ 75'SBNF1SPDFTTPSͷग़ྗಈըͷܗࣜͰͳ͍ ᶄ ॲཧ࣌ؒTʢڥ"QQMF.1SPɺಈըඵʣ ᶅ
Ұ෦ͷΤϑΣΫτNBD04 ʢߴղ૾ԽͳͲʣ