Slide 1

Slide 1 text

67$ 64#WJEFPDMBTT ͱ ϚϧνϓϥοτϑΥʔϜ 67$TVQQPSUCZ"QQMFNVMUJQMBUGPSN ೳొཁ !OPUPSPJE J1IPOFΞϓϦ։ൃऀ೥݄೔

Slide 2

Slide 2 text

࿩͢಺༰ w ϚϧνϓϥοτϑΥʔϜͰͷ֎෦ΧϝϥσόΠε΁ͷΞΫηε w ϚϧνϓϥοτϑΥʔϜͰͷϓϨϏϡʔͷ࣮૷ w ϓϨϏϡʔͷճసରԠ

Slide 3

Slide 3 text

࿩͞ͳ͍಺༰ w ֎෦σόΠεͷ੾அݕ஌ w ΩϟϓνϟʔσόΠεͷࣗಈ઀ଓ w Ի੠ͷύεεϧʔػೳ

Slide 4

Slide 4 text

͓୊໨ w "QQMF੡඼ΛήʔϜ༻σΟεϓϨΠʹ͍ͨ͠ w 67$ 64#WJEFPDMBTT ͱ"QQMF੡඼ w "QQMFͷηογϣϯΛௐ΂Δ w σϞϯετϨʔγϣϯ w ·ͱΊ

Slide 5

Slide 5 text

ࣗݾ঺հ w J1IPOFΞϓϦ։ൃऀ 9!OPUPSPJE w ΞϓϦ։ൃऀྺ ʙ w ΞϓϦ࡞࢛ͬͯ൒ੈل ೥౸ୡ w झຯ͸ήʔϜ ൓ࣹਆܦ͕ਰ͑ͱ໨ͷർΕ͕ൈ͚ͳ͍

Slide 6

Slide 6 text

"QQMF੡඼Λ ήʔϜ༻σΟεϓϨΠʹ͍ͨ͠

Slide 7

Slide 7 text

਺ʑͷ৽ػೳ w ελϯόΠϞʔυ w ετϨʔδ΁ͷಈը࿥ը J1IPOF QSP w ͜Ε͸ͱ͍ͬͨػೳ͸๡͔͔ͬͨ͠ ΋ʜ w ϓϩάϥϛϯάपΓ ಺෦త ͷڧԽ w 6*पΓͷॆ࣮ "OJNBUJPO 8JEHFU w 0CTFSWBUJPOGSBNFXPSL J04ϦϦʔε͞Ε·ͨ͠ IUUQTEFWFMPQFSBQQMFDPNXXED UJNF

Slide 8

Slide 8 text

64#पลػثʹ67$௥Ճ w 64#7JEFP$MBTTʹରԠ w 64#͕౥ࡌ͞ΕͨσόΠεʹ ରԠ J1BE1SP J1BE04΋ϦϦʔε IUUQTEFWFMPQFSBQQMFDPNXXED UJNF

Slide 9

Slide 9 text

ήʔϜσΟεϓϨΠԽΛ঺հ͢Δ ಈը഑৴ऀଟ਺ɻ J1BE04ͷ৽ػೳ͕๡͍͠ͷͰϏσΦΩϟϓνϟʔ͙Β͍͔͠࿩୊ ͕ͳ͍ͱ͍͏ͷ͕ਖ਼௚ͳͱ͜Ζ

Slide 10

Slide 10 text

ήʔϜσΟεϓϨΠԽΛ ΍ͬͯΈ͍ͨ

Slide 11

Slide 11 text

झຯͱ࣮ӹ΋૬·ͬͨJ1BEͷ ήʔϜσΟεϓϨΠԽʹऔΓ૊Ή

Slide 12

Slide 12 text

67$ 64#WJEFPDMBTT ͱ "QQMF੡඼

Slide 13

Slide 13 text

67$ 64#WJEFPDMBTT ͱ͸ 64#࢓༷ࡦఆஂମʹΑΔϏσΦΩϟϓνϟσόΠεͷ࢓༷ w υϥΠόʔෆཁ w ֤छσόΠε w 64#ΧϜ w ϏσΦΩϟϓνϟʔσόΠε w )%.*εΠονϟʔ

Slide 14

Slide 14 text

"QQMF.౥ࡌ.BDͰಈ͘΋ͷΛ ୳͢ͱJ1BEͰ΋ಈ࡞͢Δ

Slide 15

Slide 15 text

ྫ&MHBUPࣾͷήʔϜΩϟϓνϟʔσόΠε ͭ͸ݟͨ໨͸ಉ͕ͩ͡Ұํ͸67$͸αϙʔτ͍ͯ͠ͳ͍ &MHBUP(BNF$BQUVSF)%4 &MHBUP(BNF$BQUVSF)%4 "QQMF.ରԠ *OUFM$16ͷΈ

Slide 16

Slide 16 text

w ࣮੷ͷ͋Δ67$σόΠεΛೖख ͢Δ "QQMF.Ҏ߱ରԠ w 0#4ରԠͷ67$σόΠεΛೖख ͢Δ J1BEʹରԠͨ͠67$ σόΠεͷೖख IUUQTEFWFMPQFSBQQMFDPNXXED UJNF

Slide 17

Slide 17 text

"QQMFۘ੡ηογϣϯͱαϯϓϧ

Slide 18

Slide 18 text

88%$TFTTJPO w %FWFMPQFSΞϓϦͰFYUFSOBMͰ ݕࡧ w IUUQTEFWFMPQFSBQQMFDPN XXED w ೔ຊޠ຋༁͋Γ w αϯϓϧίʔυ͋Γ w "7$BNͰݕࡧ J1BE04Ͱ֎෦ΧϝϥΛαϙʔτ

Slide 19

Slide 19 text

ηογϣϯJ1BE04Ͱ֎෦ΧϝϥΛαϙʔτ 4VQQPSUFYUFSOBMDBNFSBTJOZPVSJ1BE04BQQ w J1BEͰͷσόοάํ๏ w ֎෦σόΠεͱ಺ଂΧϝϥͷ૒ํΛαϙʔτ͢ΔػೳΛ௥Ճ w J1BEճస࣌ͷϓϨϏϡʔө૾ॻ͖ग़͠αϙʔτػೳ w ࣗಈతʹΧϝϥΛ੾Γସ͑ػೳ w ֎෦σόΠεͷ੾அݕ஌

Slide 20

Slide 20 text

ηογϣϯJ1BE04Ͱ֎෦ΧϝϥΛαϙʔτ 4VQQPSUFYUFSOBMDBNFSBTJOZPVSJ1BE04BQQ w "7'PVOEBUJPOGSBNFXPSLʹ͍ͭͯઆ໌ w J1BEͰͷσόοάํ๏ w ֎෦σόΠεͱ಺ଂΧϝϥͷ૒ํΛαϙʔτ͢ΔػೳΛ௥Ճ w J1BEճస࣌ͷϓϨϏϡʔө૾ॻ͖ग़͠αϙʔτػೳ w ࣗಈతʹΧϝϥΛ੾Γସ͑ػೳ w ֎෦σόΠεͷ੾அݕ஌ "QQMF͸ίϛϡχέʔγϣϯ༻ө૾Λॏཁࢹ

Slide 21

Slide 21 text

"7'PVOEBUJPOΛը໘ʹϓϨϏϡʔΛදࣔ͢Δ

Slide 22

Slide 22 text

ᶃೖྗσόΠε *OQVU Λݕࡧ͢Δ ᶄηογϣϯʹ*OQVUΛܨ͛Δ ᶅηογϣϯ͔ΒϓϨϏϡʔ 0VUQVU ΁ܨ͛Δ "7'PVOEBUJPOΛը໘ʹϓϨϏϡʔΛදࣔ͢Δ

Slide 23

Slide 23 text

αϯϓϧ"7$BN w ө૾ͷϓϨϏϡʔͱ࿥ըػೳͷαϯϓϧ w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOBWGPVOEBUJPO DBQUVSF@TFUVQBWDBN@CVJMEJOH@B@DBNFSB@BQQ w J04J1BE04༻ w ಺ଂσόΠε͓Αͼ֎෦σόΠεͷ੾Γସ͑ʹରԠ w "7'PVOEBUJPOGSBNFXPSLͷػೳ໢ཏΛ໨ࢦͨ͠αϯϓϧ w Մಡੑѱ͠ ߦ௒͑ͷιʔείʔυ͋Γ

Slide 24

Slide 24 text

αϯϓϧίʔυ͸༗೉͍͕

Slide 25

Slide 25 text

ήʔϜը໘ग़͢ʹ͸৑௕͗͢Δ

Slide 26

Slide 26 text

J1BENBD04Ͱಈ͘ ؆ܿͳαϯϓϧίʔυ͕ཉ͍͠

Slide 27

Slide 27 text

ͳΒ͹ࣗ෼Ͱ࡞Δ͔͠ͳ͍

Slide 28

Slide 28 text

σϞϯετϨʔγϣϯ

Slide 29

Slide 29 text

αϯϓϧίʔυ J1BE04ʙ 4JNQMF(BNF.POJUPS HJUIVCDPNOPUPSPJE4JNQMF(BNF.POJUPS

Slide 30

Slide 30 text

4JNQMF(BNF.POJUPS IUUQTHJUIVCDPNOPUPSPJE4JNQMF(BNF.POJUPS w OPUPSPJE4JNQMF(BNF.POJUPSͰݕࡧ w 67$σόΠεͷ಺༰Λදࣔ ࿥ըػೳͳ͠ w J1BE04NBD04ରԠ w ը໘ճసରԠ w ιʔείʔυϑΝΠϧͷߦ਺࠷େߦ

Slide 31

Slide 31 text

4JNQMF(BNF.POJUPS IUUQTHJUIVCDPNOPUPSPJE4JNQMF(BNF.POJUPS w OPUPSPJE4JNQMF(BNF.POJUPSͰݕࡧ w 67$σόΠεͷ಺༰Λදࣔ ࿥ըػೳͳ͠ w J1BE04NBD04ରԠ w ը໘ճసରԠ w ιʔείʔυϑΝΠϧͷߦ਺࠷େߦ

Slide 32

Slide 32 text

4JNQMF(BNF.POJUPS IUUQTHJUIVCDPNOPUPSPJE4JNQMF(BNF.POJUPS w Ͱ͖ͳ͍͜ͱ w ֎෦Ωϟϓνϟʔͷ੾அݕ஌ w ΦʔσΟΦ࠶ੜ

Slide 33

Slide 33 text

4JNQMF(BNF.POJUPS IUUQTHJUIVCDPNOPUPSPJE4JNQMF(BNF.POJUPS w ϓϩδΣΫτઃఆϙΠϯτ w J1BE04NBD04ͱ΋ʹ1SJWBDZ $BNFSB6TBHF%FTDSJQUJPO͕ඞཁ w *OGPͰઃఆ w NBD04͸αϯυϘοΫεͰ64#ɺ $BNFSBΛࢦఆ w 4JHOJOH$BQBCJMJUJFT"QQ 4BOECPY

Slide 34

Slide 34 text

4JNQMF(BNF.POJUPS IUUQTHJUIVCDPNOPUPSPJE4JNQMF(BNF.POJUPS w J04ͱNBD04ͷࠩҟΛٵऩ͢Δ w J04NBD04ͷίʔυΛJGPT ʙFOEJGͰͦΕͧΕهड़ w 6*7JFX3FQSFTFOUBCMF w /47JFX3FQSFTFOUBCMF w ඳըΛ୲౰͢Δ$"-BZFS ͱ೿ੜΫϥε͸ڞ௨ w $"-BZFSͷѻ͍ํ͸J04ͱNBD04ͰҟͳΔ #if os(iOS) import UIKit #elseif os(macOS) import AppKit #endif

Slide 35

Slide 35 text

4JNQMF(BNF.POJUPSᶃ ֎෦σόΠεΛݟ͚ͭΔ // external guard let captureDevice = AVCaptureDevice.default(AVCaptureDevice.DeviceType.external, for: .video, position: .unspecified) else { teardownAVCapture() return } let session = AVCaptureSession() guard session.canSetSessionPreset(.hd1920x1080) else { teardownAVCapture() return } session.sessionPreset = .hd1920x1080 $BQUVSF.BOBHFSTXJGU ֎෦ FYUFSOBM σόΠεΛ)%ը࣭Ͱѻ͏

Slide 36

Slide 36 text

4JNQMF(BNF.POJUPSᶄ ֎෦σόΠεΛηογϣϯ΁௥Ճ $BQUVSF.BOBHFSTXJGU let deviceInput = try AVCaptureDeviceInput(device: captureDevice) if session.canAddInput(deviceInput) { session.addInput(deviceInput) print("added session") } else { print("not add session") } ηογϣϯ΁ͷ௥Ճ͸಺ଂΧϝϥͱมΘΓͳ͠

Slide 37

Slide 37 text

4JNQMF(BNF.POJUPSᶅ ϓϨϏϡʔΛ༻ҙ $BQUVSF.BOBHFSTXJGU ηογϣϯܦ༝ͰϓϨϏϡʔͱͯ͠දࣔ͢Δө૾Λ౉͢ previewLayer = AVCaptureVideoPreviewLayer(session:session) if let previewLayer { previewLayer.backgroundColor = CGColor(gray: 0.5, alpha: 1.0) previewLayer.videoGravity = .resizeAspect } self.session = session DispatchQueue.global(qos: .background).async { session.startRunning() }

Slide 38

Slide 38 text

4JNQMF(BNF.POJUPSᶆ ֎෦಺ଂؚΊͨճసΛ੍ޚ $BQUVSF.BOBHFSTXJGU "QQMF͕༻ҙͨ͠"7$BQUVSF%FWJDF3PUBUJPO$PPSEJOBUPS͕J1BEͷճసͱ֎෦σό Πεճసͷ൥ࡶͳॲཧΛҾ͖ड͚Δ let rotationCoordinator = AVCaptureDevice.RotationCoordinator(device: captureDevice, previewLayer: previewLayer) previewLayer.connection?.videoRotationAngle = rotationCoordinator.videoRotationAngleForHorizonLevelPreview

Slide 39

Slide 39 text

4JNQMF(BNF.POJUPSᶆ ϏσΦϛϥʔϦϯά͸8FCΧϜ͕σϑΥϧτ $BQUVSF.BOBHFSTXJGU ࣗಈϛϥʔϦϯάઃఆΛղআ্ͨ͠ͰɺϛϥʔϦϯάΛແޮʹ͢Δඞཁ͋Γ // disable mirroring previewLayer.connection?.automaticallyAdjustsVideoMirroring = false previewLayer.connection?.isVideoMirrored = false

Slide 40

Slide 40 text

·ͱΊ wJ1BE04Ͱ67$ ϏσΦΩϟϓνϟσόΠε ʹରԠ͠·ͨ͠ w67$σόΠεͷબఆ͕ϋʔυϧ͕ߴ͍Ͱ͢ w"QQMF͸ίϛϡχέʔγϣϯө૾޲͚ͷར༻Λ૝ఆ͍ͯ͠·͢ wήʔϜϞχλʔͱͯ͠ѻ͏ʹ͸σϑΥϧτઃఆΛมߋ͢Δඞཁ͋Γ wJ1BE04NBD04ڞ௨͕ͩ04͝ͱʹهड़͢΂͖Օॴ͋Γ·͕͢ଟ͘͸ ͋Γ·ͤΜ wJ1BENBD04ͰήʔϜϥΠϑΛָ͠Έ·͠ΐ͏

Slide 41

Slide 41 text

ࢀߟ w 4VQQPSUFYUFSOBMDBNFSBTJOZPVSJ1BE04 BQQ88%$7JEFPT"QQMF%FWFMPQFS w IUUQTEFWFMPQFSBQQMFDPN XXED w "7$BN#VJMEJOHB$BNFSB"QQc"QQMF %FWFMPQFS%PDVNFOUBUJPO w IUUQTEFWFMPQFSBQQMFDPN EPDVNFOUBUJPOBWGPVOEBUJPO DBQUVSF@TFUVQ BWDBN@CVJMEJOH@B@DBNFSB@BQQ w .BD04ͷγϯάϧ΢Οϯυ΢ΞϓϦέʔγϣ ϯΛ࡞Δͱ͖ʹ΍͓ͬͯ͘͜ͱ w IUUQT[FOOEFWPIOBNJBSUJDMFT CEBEBCB w OPUPSPJE4JNQMF(BNF.POJUPSFYUFSOBM WJEFPEFWJDFQSFWJFXTBNQMFDPEFGPS BQQMFNVMUJQMBUGPSN J1BE04 NBD04 w IUUQTHJUIVCDPNOPUPSPJE 4JNQMF(BNF.POJUPS w 4XJGU6*Ή͚ʹ੔ཧ͞Εͨঢ়ଶ؂ࢹ 0CTFSWBUJPO4QFBLFS%FDL w IUUQTTQFBLFSEFDLDPNOPUPSPJE TXJGUVJNVLFOJ[IFOHMJTBSFUB[IVBOHUBJ KJBOTIJPCTFSWBUJPO