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
29
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
26
はじめてのPDFKit.pdf
shomakato
0
230
はじめてのPDFKit
shomakato
0
52
SwiftとC++を利用した画像処理プログラミング
shomakato
0
2.5k
Other Decks in Programming
See All in Programming
FDEが実現するAI駆動経営の現在地
gonta
2
190
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
820
Claude Team Plan導入・ガイド
tk3fftk
0
220
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
480
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
1.5k
Performance Engineering for Everyone
elenatanasoiu
0
270
継続モナドとリアクティブプログラミング
yukikurage
3
620
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
120
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
170
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
320
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
230
自作OSでスライド発表する
uyuki234
1
3.9k
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
How to build a perfect <img>
jonoalderson
1
5.8k
Visualization
eitanlees
152
17k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Pragmatic Product Professional
lauravandoore
37
7.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Prompt Engineering for Job Search
mfonobong
0
380
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
A designer walks into a library…
pauljervisheath
211
24k
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 ʢߴղ૾ԽͳͲʣ