Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
動画エフェクトに関する新技術の紹介
Search
shoma.kato
July 06, 2025
Programming
34
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
29
はじめてのPDFKit.pdf
shomakato
0
250
はじめてのPDFKit
shomakato
0
60
SwiftとC++を利用した画像処理プログラミング
shomakato
0
2.5k
Other Decks in Programming
See All in Programming
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
350
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
490
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
690
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.3k
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
140
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
160
すこし踏み込む CancellationToken
htkym
2
1.7k
sbt 2.0: takeoff
eed3si9n
0
110
AWSに止められる覚悟してますか?
morizo_1984
2
520
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.1k
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
420
Marketing to machines
jonoalderson
1
5.9k
What's in a price? How to price your products and services
michaelherold
247
13k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Music & Morning Musume
bryan
48
7.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
How to train your dragon (web standard)
notwaldorf
96
6.9k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
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 ʢߴղ૾ԽͳͲʣ