Upgrade to Pro — share decks privately, control downloads, hide ads and more …

動画エフェクトに関する新技術の紹介

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 動画エフェクトに関する新技術の紹介

Avatar for shoma.kato

shoma.kato

July 06, 2025
Tweet

More Decks by shoma.kato

Other Decks in Programming

Transcript

  1. © ZOZO, Inc. 2 גࣜձࣾZOZO ϒϥϯυιϦϡʔγϣϯ։ൃຊ෦ FAANS෦ ϑϩϯτΤϯυϒϩοΫ Ճ౻ ঵ਅ

    • X: @shoma10170806 • γϣοϓελοϑͷൢചαϙʔτπʔϧ
 ʮFAANSʯͷiOSΞϓϦΛ։ൃ • ത࢜ޙظ՝ఔʹࡏֶதɹը૾ॲཧͳͲͷݚڀʹैࣄ
  2. © ZOZO, Inc. 10 ϑϨʔϜϨʔτม׵ྫʢ+ εϩʔʣ ݩಈը Tຕ εϩʔ εϩʔ

    ʴ ม׵ εϩʔͷΈ Tຕ ϑϨʔϜϨʔτม׵ Tຕ
  3. © ZOZO, Inc. 14 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =

    VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ}
  4. © ZOZO, Inc. 15 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =

    VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ಈըͷ෯ɺߴ͞
  5. © ZOZO, Inc. 16 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =

    VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ಈըͷ෯ɺߴ͞ ಛ௃ྔͷܭࢉํ๏
  6. © ZOZO, Inc. 17 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =

    VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ग़ྗͷ඼࣭ ಈըͷ෯ɺߴ͞ ಛ௃ྔͷܭࢉํ๏
  7. © ZOZO, Inc. 18 VTFrameRateConversionConfigurationͷఆٛ ᶅϓϩάϥϜ guard let configuration =

    VTFrameRateConversionConfiguration( ɹɹɹɹframeWidth: width, ɹɹɹɹframeHeight: height, ɹɹɹɹusePrecomputedFlow: false, ɹɹɹɹqualityPrioritization: .normal, ɹɹɹɹrevision: .revision1 ) else {ɹthrow Fault.failedToCreateFRCConfigurationɹ} ग़ྗͷ඼࣭ ΞϧΰϦζϜͷઃఆ ಈըͷ෯ɺߴ͞ ը૾ಛ௃ͷܭࢉํ๏
  8. © ZOZO, Inc. 20 VTFrameProcessorͷఆٛ ᶃ75'SBNF1SPDFTTPSͱ͸ ߴ౓ͳө૾ॲཧΛߦ͏Ϋϥε ᶄϓϩάϥϜ let frameProcessor

    = VTFrameProcessor() try frameProcessor.startSession(configuration: configuration) ઌ΄Ͳͷ 75'SBNF3BUF$POWFSTJPO$PO fi HVSBUJPO
  9. © 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 ) ᶄϓϩάϥϜ     
  10. © 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 ) ᶄϓϩάϥϜ     
  11. © 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 ) ᶄϓϩάϥϜ     
  12. © 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 ) ᶄϓϩάϥϜ     
  13. © 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 ) ᶄϓϩάϥϜ     
  14. © 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)
  15. © 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) ϑϨʔϜม׵ͷग़ྗύϥϝʔλ
  16. © 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) ϑϨʔϜม׵ͷೖग़ྗύϥϝʔλ όοϑΝͷೖྗ
  17. © 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) ϑϨʔϜม׵ͷೖग़ྗύϥϝʔλ όοϑΝͷೖྗ ग़ྗͷ֨ೲઌ
  18. © 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) ϑϨʔϜม׵ͷೖग़ྗύϥϝʔλ όοϑΝͷೖྗ ग़ྗͷ֨ೲઌ ม׵ͷ࣮ߦ