{"_id":"expo-video-metadata","_rev":"10-8e03556a2cc3c4f9b80b21ba484aebfb","name":"expo-video-metadata","dist-tags":{"latest":"3.1.1"},"versions":{"0.1.0":{"name":"expo-video-metadata","version":"0.1.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi","email":"hm@nightstomp.com"},"license":"MIT","_id":"expo-video-metadata@0.1.0","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"20da5239dd38702a7a1d7f81548c794617dfa8cf","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-0.1.0.tgz","fileCount":34,"integrity":"sha512-e6DVrGHluEUm4MwH3BV9Ves5NerUT7izqVgQzrKBSLHUKH/z73OdlAPEsJ6lRAqtNRQ+SRravL0vFDmK7TBBBQ==","signatures":[{"sig":"MEUCIFQJL9AAeQCOHwT3jepV1G0rabA8bwIUkqRXFGD8CIjAAiEAhhJQZmvmh3+GHICzuewjp6YNhcorFqqHGwYWSg/Hu14=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30570},"main":"build/index.js","types":"build/index.d.ts","gitHead":"60f2ce00f364e0b2c76a9cc03a0874cf7334482c","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.1.0","description":"Module to retrieve informations from a video","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.0.25","expo-modules-core":"^1.5.11","expo-module-scripts":"^3.0.11"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_0.1.0_1703267408343_0.5764240448686018","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"expo-video-metadata","version":"1.0.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.0.0","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"3f63dce7f1d3a98adbfc1be8c965a966fc18f0f9","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.0.0.tgz","fileCount":34,"integrity":"sha512-/RDa7Vvk0dP3GRPuydrE1qDXqhU5MxGJ/ggj0tcKw0FGFDnpTiV6+yCoI2fLxMbBw05ZBbtOTyUZ2wIy2SVUPA==","signatures":[{"sig":"MEYCIQD/71ksxg+5NOHp1coNwYZ0xrm+dFwmywO8jkRtClYbEgIhAL/r/kkmtZqrxBJx1LKN78xDctosVFRXT5kufLrb7IUm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30974},"main":"build/index.js","types":"build/index.d.ts","gitHead":"d2c5215a81f6e1a59d3a5d5cf38f79395bb46f2f","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.1.0","description":"Module to retrieve metadata from a video with Expo and React Native","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.0.25","expo-modules-core":"^1.5.11","expo-module-scripts":"^3.0.11"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.0.0_1703269688925_0.5455541352831546","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"expo-video-metadata","version":"1.1.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.1.0","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"35c521ab72d25334a3a8e76cf30061547bbbaf0c","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.1.0.tgz","fileCount":35,"integrity":"sha512-uZTI77Z2bTQiIOZj4l6u+qRnC29FePDKyNd3Jd5iDmAIyIxRhCcFxPcYOaSr0KqvIFhK5aZZwqxfDX815F0/tg==","signatures":[{"sig":"MEQCIBEpHVZq1pM3K1NlkNUUkjVysh2E2BivpJWCsn1H2+I2AiAlXp2S1tdOaDMCpKcHCxQWnf4+UeHqtaRRCDy40GJTwQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53886},"main":"build/index.js","types":"build/index.d.ts","gitHead":"3d4d7fd35ab9a2a748aafaf41f87bde4a5530973","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.1.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"20.9.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.2.45","expo-modules-core":"^1.5.12","expo-module-scripts":"^3.1.0"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.1.0_1703337818906_0.1092315359545648","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"expo-video-metadata","version":"1.2.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.2.0","homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"67b429d9437b9c4249fabecd6b0000a4a1e2e1d2","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.2.0.tgz","fileCount":36,"integrity":"sha512-M9k5oOrW5MDhwAs31dd9IxawLYJX4aMwEcZ5gmeCXm3J633MI8qKLY2Iv1Jq1adQQgqK/afziC6MUC1MaIwTpg==","signatures":[{"sig":"MEYCIQCCdxk8Ex+sFU+EiK6jjeH00jOU1S3N+zNp/KLqPsL5fgIhAODOUWC6rJchxpmoYrp7vrYJaAoxFzoVRBpBI0aImkcf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52722},"main":"build/index.js","types":"build/index.d.ts","gitHead":"70858e43a328a2f8c7e0c3b3ec70922e9ea231c9","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.7.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"22.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.2.45","expo-modules-core":"^1.12.18","expo-module-scripts":"^3.5.2"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.2.0_1719694732125_0.43734846319773","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"expo-video-metadata","version":"1.2.1","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.2.1","homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"414b928477e3d254288a034ccfcfb387d5b1050d","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.2.1.tgz","fileCount":36,"integrity":"sha512-Begpy9DZYLTOv4/RcIWwL+BHAoRxnpEGaFem7IaHIHVNUaumm58vjRdgq1KzSbO5sUcLu6+xO5N4oU74pDeUyg==","signatures":[{"sig":"MEQCIEVhsTXsdxj94DwvpJ4UVV9WmrhOfd7QTGdpvgHH56AUAiBUXjOQoiEBUqPJCo4glRdFJfGD1IWxTEOTebk0mDMqhg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53464},"main":"build/index.js","types":"build/index.d.ts","gitHead":"70daed82a4d5dd3c154e40f11cd9f2743edcdc33","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.7.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"22.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.2.45","expo-modules-core":"^1.12.18","expo-module-scripts":"^3.5.2"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.2.1_1719696036466_0.5787490158802391","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"expo-video-metadata","version":"1.3.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.3.0","homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"abc785934135acda3c9a766fc034da1803de4aff","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.3.0.tgz","fileCount":36,"integrity":"sha512-WUtVUrwnF7JEBxMo9L+fiiwXTEXlL9zAtHlfAATKRkW4Xb0aTNpvVPTd2fE6swVwF9rjBcz0XKNwOp6JQteUTA==","signatures":[{"sig":"MEUCIFybL4l7Y0kJNAeWpwiCDQlaA1Rh+wmlDhScKuyPoR+eAiEA5xTxu0ZNgKQV9rHJpgVcSQdyLEmF0xdcAensZmjIi9I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58077},"main":"build/index.js","types":"build/index.d.ts","gitHead":"63212fea792e9667fb1dcc5302bc08770717364c","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.7.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"22.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.2.45","expo-modules-core":"^1.12.18","expo-module-scripts":"^3.5.2"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.3.0_1719776857570_0.6345919377070404","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"expo-video-metadata","version":"1.3.1","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.3.1","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"c324a0908586da00fdd7c3e8fd25e7927994e083","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.3.1.tgz","fileCount":36,"integrity":"sha512-u8EvBAR43EknylSthYTJpya6CtRmiFwn31b9gfQF24upbm307bu0Jcb6IW2HaLHaJ1dM3CcBRDw91Xcouw8rBA==","signatures":[{"sig":"MEUCIQDrsi7F4RfhpZn3n8NsFyt6yCX92t6K/7L4debiMinJFgIgEXrkTKK7BVO0L9wmQQJwrrFotwnOPmtuRaY1iP9wps8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59352},"main":"build/index.js","types":"build/index.d.ts","gitHead":"72d92a759d8ec4ae5cf8cf2fd5382e48629e2eac","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.7.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"22.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.2.45","expo-modules-core":"^1.12.18","expo-module-scripts":"^3.5.2"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.3.1_1725534300865_0.9576549752934753","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"expo-video-metadata","version":"1.4.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.4.0","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"089ff80ade4b8faa2848bff09fe9d3e0291389a3","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.4.0.tgz","fileCount":37,"integrity":"sha512-t4wNqdZyeaJr5QRU3Qo4ubi6F+gJljVehxp0WoFBsC9pJOuTBq9NVxyo3BByBHIiW1Xwz7wgaN4/vZkbt9AHyg==","signatures":[{"sig":"MEYCIQDx9f95ML98y/Ke5KGnWLFpvlhQDPS1ZGqeiBk2jxLsVQIhANe/KB4pjwJvZ2A+Vx2ObII3gk1N6umyQaxjuZ1Q1Slk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59369},"main":"build/index.js","types":"build/index.d.ts","gitHead":"700aa8006fce1bf68728e1385c3d1f269fcb2e8a","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.7.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"22.1.0","_hasShrinkwrap":false,"packageManager":"yarn@4.5.1","devDependencies":{"expo":"^52.0.0-preview.4","expo-module-scripts":"^3.5.2"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.4.0_1729967632473_0.7122077975543488","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"expo-video-metadata","version":"1.5.0","keywords":["react-native","expo","expo-video-metadata","ExpoVideoMetadata","react native","video module","video metadata","video","metadata"],"author":{"url":"https://github.com/hirbod","name":"Hirbod Mirjavadi"},"license":"MIT","_id":"expo-video-metadata@1.5.0","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"dist":{"shasum":"b0294b290a27dc20f753b93629ec5d9370f0aa43","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-1.5.0.tgz","fileCount":37,"integrity":"sha512-4KXa7NbeO3zQC56+/uRS7p6p/GS0NNf08jVPVT2ooSy35grGc8HkLw1aLe5QmT47QNMHcgUj5OpswuLXb3DmPQ==","signatures":[{"sig":"MEQCIB0QpydSlawr8uVkPsMQbEcw+d3Oum17WJ6AAy96ZyDTAiBPyVle4A9nAoBiqE2ppO38nY5aPyv+MvUPucFeAKCXQA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70645},"main":"build/index.js","types":"build/index.d.ts","gitHead":"8f61126abc65ae9ca143527c7b3b097e0174c743","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"hirbod","email":"web@hirbod.de"},"repository":{"url":"git+https://github.com/hirbod/expo-video-metadata.git","type":"git"},"_npmVersion":"10.7.0","description":"Module to retrieve metadata from a video with Web, Expo and React Native","directories":{},"_nodeVersion":"22.1.0","_hasShrinkwrap":false,"packageManager":"yarn@4.5.3","devDependencies":{"expo":"^52.0.23","expo-module-scripts":"^3.5.2"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/expo-video-metadata_1.5.0_1735246679973_0.16618802497060758","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"expo-video-metadata","version":"3.1.1","description":"Video metadata parser for Expo and React Native","keywords":["ExpoVideoMetadata","expo","expo-video-metadata","metadata","react native","react-native","video","video metadata","video module"],"homepage":"https://github.com/hirbod/expo-video-metadata#readme","bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"license":"MIT","author":{"name":"Hirbod Mirjavadi","url":"https://github.com/hirbod"},"repository":{"type":"git","url":"git+https://github.com/hirbod/expo-video-metadata.git"},"main":"build/index.js","types":"build/index.d.ts","scripts":{"build":"expo-module build","clean":"expo-module clean","lint":"oxlint --type-aware src example/App.tsx","lint:fix":"oxlint --type-aware --fix src example/App.tsx","format":"oxfmt","format:check":"oxfmt --check","typecheck":"tsgo -p tsconfig.json --noEmit && tsgo -p example/tsconfig.json --noEmit","test":"expo-module test","prepare":"expo-module prepare","prepublishOnly":"expo-module prepublishOnly","expo-module":"expo-module","open:ios":"open -a \"Xcode\" example/ios","open:android":"open -a \"Android Studio\" example/android"},"dependencies":{"expo-file-system":"^57.0.6","mediabunny":"^1.55.7"},"devDependencies":{"@typescript/native-preview":"^7.0.0-dev.20260707.2","expo":"^57.0.20","expo-module-scripts":"^56.0.3","oxfmt":"^0.66.0","oxlint":"^1.81.0","oxlint-tsgolint":"^7.0.2001","typescript":"~6.0.3"},"peerDependencies":{"expo":"*","react":"*","react-native":"*"},"packageManager":"yarn@4.15.0","gitHead":"1adae4e3b5f89863fba1a0b20cfba4aa3cd34c23","_id":"expo-video-metadata@3.1.1","_nodeVersion":"24.20.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-eqogVSTcPO4EFngDXwqFbgaqyvu5tF9f4F441QDNrDvYbOlhX2eKmMPDpTaEFCCJ4XI5vhOML95tlomjegKQ9w==","shasum":"0f8849e693d6cafd57796d7dcebfd49b01d397dd","tarball":"https://registry.npmjs.org/expo-video-metadata/-/expo-video-metadata-3.1.1.tgz","fileCount":47,"unpackedSize":96618,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-video-metadata@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBtW59ZkFJBCuBBWVGi2DTTp4b3U9oYbuQqmq1RHjxRDAiAYKoAqI3MFFF9IRn3zjSTbAQHDR9MgAYQVoeaD0TEeug=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7905a3ca-559b-4490-b3df-32a09bc806b6"}},"directories":{},"maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-video-metadata_3.1.1_1788791477006_0.3456490994764052"},"_hasShrinkwrap":false}},"time":{"created":"2023-12-22T17:50:08.342Z","modified":"2026-09-07T14:31:17.463Z","0.1.0":"2023-12-22T17:50:08.525Z","1.0.0":"2023-12-22T18:28:09.295Z","1.1.0":"2023-12-23T13:23:39.212Z","1.2.0":"2024-06-29T20:58:52.280Z","1.2.1":"2024-06-29T21:20:36.665Z","1.3.0":"2024-06-30T19:47:37.728Z","1.3.1":"2024-09-05T11:05:01.044Z","1.4.0":"2024-10-26T18:33:52.702Z","1.5.0":"2024-12-26T20:58:00.172Z","3.1.1":"2026-09-07T14:31:17.142Z"},"bugs":{"url":"https://github.com/hirbod/expo-video-metadata/issues"},"author":{"name":"Hirbod Mirjavadi","url":"https://github.com/hirbod"},"license":"MIT","homepage":"https://github.com/hirbod/expo-video-metadata#readme","keywords":["ExpoVideoMetadata","expo","expo-video-metadata","metadata","react native","react-native","video","video metadata","video module"],"repository":{"type":"git","url":"git+https://github.com/hirbod/expo-video-metadata.git"},"description":"Video metadata parser for Expo and React Native","maintainers":[{"name":"hirbod","email":"web@hirbod.de"}],"readme":"# expo-video-metadata\n\nVideo metadata for Expo apps, powered by [Mediabunny](https://mediabunny.dev) on iOS, Android, and web.\n\nThis package exposes Mediabunny-style metadata for Expo and React Native:\nformat, MIME type, start/end timestamps, per-track codecs, dimensions, rotation,\npixel aspect ratio, display dimensions, color space, packet statistics, audio\nproperties, metadata tags, embedded images, file size, and GPS location when the\nfile contains it.\n\nIt is currently maintained against **Expo SDK 57**.\n\n<img src=\"https://raw.githubusercontent.com/hirbod/expo-video-metadata/assets/preview_2026_mediabunny.png\" width=\"800\" />\n\n## Install\n\n```sh\nnpx expo install expo-video-metadata\n```\n\nThis package does not ship custom native code. It uses Mediabunny for parsing and `expo-file-system` for efficient local file reads on iOS and Android.\n\nFor bare React Native apps, install and configure Expo modules first:\n\nhttps://docs.expo.dev/bare/installing-expo-modules/\n\n## Platform Notes\n\n### iOS and Android\n\niOS and Android use Mediabunny through a small `expo-file-system` source adapter. Local `file://` and `content://` videos are read with byte-range file handle reads, so large videos do not need to be loaded fully into memory.\n\nRemote URLs are read through Mediabunny's URL source. Request headers can be passed through the `headers` option.\n\nOn iOS, picking videos with `expo-image-picker` is fastest when you keep the original asset representation:\n\n```ts\npreferredAssetRepresentationMode: ImagePicker.UIImagePickerPreferredAssetRepresentationMode.Current;\n```\n\nThat avoids unnecessary copying or transcoding before metadata is read.\n\n### Web\n\nWeb uses the same Mediabunny parser. It parses the media file in the browser instead of relying on `<video>` metadata events, which keeps the result shape aligned with iOS and Android.\n\nLocal web sources can be passed as `File`, `Blob`, `blob:` URLs, or `data:` URLs.\n\nRemote web sources are read with `fetch`, so browser rules apply:\n\n- The server must allow CORS, for example with `Access-Control-Allow-Origin`.\n- The server should support byte-range requests with `Accept-Ranges: bytes`.\n- If the video needs auth, pass headers through `VideoInfoOptions`.\n\nIf a remote URL works on iOS or Android but fails on web, it is usually a CORS issue. Native networking is not subject to browser CORS.\n\n## Usage\n\n```ts\nimport { getVideoInfoAsync } from \"expo-video-metadata\";\n\nconst info = await getVideoInfoAsync(videoUri);\n```\n\nWith headers for a remote file:\n\n```ts\nconst info = await getVideoInfoAsync(\"https://example.com/video.mp4\", {\n  headers: {\n    Authorization: \"Bearer token\",\n  },\n});\n```\n\nOn web, you can also pass a `File` or `Blob`:\n\n```ts\nconst info = await getVideoInfoAsync(file);\n```\n\nWhen using `expo-image-picker` on web, prefer the returned `asset.file` over\n`asset.uri`:\n\n```ts\nconst asset = result.assets[0];\nconst info = await getVideoInfoAsync(asset.file ?? asset.uri);\n```\n\nPassing the `File` lets Mediabunny read only the byte ranges it needs. Passing a\n`blob:` URL requires loading that URL back into a `Blob` first, which can be much\nslower for large videos.\n\n## API\n\n```ts\ngetVideoInfoAsync(\n  source: string | File | Blob,\n  options?: {\n    headers?: Record<string, string>;\n    exactDuration?: boolean;\n    packetStatsSampleCount?: number | null;\n    includeMetadataTags?: boolean;\n    includeVideoTracks?: boolean;\n    includeAudioTracks?: boolean;\n  }\n): Promise<VideoInfoResult>\n```\n\n`source` can be:\n\n- a local `file://` or `content://` URI on iOS and Android\n- a remote URL\n- a `File` or `Blob` on web\n- a `blob:` or `data:` URL on web\n\nBase64/data URLs work on web, but they are not ideal for large videos.\n\nBy default, durations are read from metadata when possible, video and audio\ntracks are included, packet statistics inspect the first 30 packets of each\ntrack, and metadata tags are skipped. Skipping tags avoids extra reads for title,\nartist, comments, embedded images, raw tags, and GPS location when you only need\ntechnical media metadata.\n\nUse `includeMetadataTags: true` when you need container tags or location data:\n\n```ts\nconst info = await getVideoInfoAsync(source, {\n  includeMetadataTags: true,\n});\n```\n\nIf you only need one media kind, disable the other one:\n\n```ts\nconst info = await getVideoInfoAsync(source, {\n  includeAudioTracks: false,\n});\n```\n\nTo match Mediabunny's metadata extraction demo more closely, use:\n\n```ts\nconst info = await getVideoInfoAsync(source, {\n  exactDuration: true,\n  includeMetadataTags: true,\n  packetStatsSampleCount: null,\n});\n```\n\nThose settings can scan much more of the file.\n\n## Result\n\n```ts\ntype VideoInfoResult = {\n  format: string;\n  mimeType: string | null;\n  start: number;\n  end: number;\n  tracks: MediaTrackInfo[];\n  metadataTags?: MetadataTagsInfo | null;\n  fileSize: number;\n\n  // Convenience fields derived from the primary video/audio tracks:\n  duration: number;\n  hasAudio: boolean;\n  isHDR: boolean | null;\n  width: number;\n  height: number;\n  fps: number;\n  bitRate: number;\n  codec: string;\n  orientation: \"Portrait\" | \"PortraitUpsideDown\" | \"Landscape\" | \"LandscapeRight\" | \"LandscapeLeft\";\n  naturalOrientation: \"Portrait\" | \"Landscape\";\n  aspectRatio: number;\n  is16_9: boolean;\n  audioSampleRate: number;\n  audioChannels: number;\n  audioCodec: string;\n  location: {\n    latitude: number;\n    longitude: number;\n    altitude?: number;\n  } | null;\n};\n\ntype MediaTrackInfo = {\n  type: string;\n  codec: string | null;\n  codecParameterString: string | null;\n  start: number;\n  end: number;\n  languageCode: string;\n  packetStats: {\n    packetCount: number;\n    averagePacketRate: number;\n    averageBitrate: number;\n  } | null;\n} & (\n  | {\n      type: \"video\";\n      codedWidth: number;\n      codedHeight: number;\n      rotation: number;\n      pixelAspectRatio: { num: number; den: number };\n      displayWidth: number;\n      displayHeight: number;\n      transparency: boolean;\n      colorSpace: {\n        primaries: string | null;\n        transfer: string | null;\n        matrix: string | null;\n        fullRange: boolean | null;\n        hdr: boolean | null;\n      };\n    }\n  | {\n      type: \"audio\";\n      numberOfChannels: number;\n      sampleRate: number;\n    }\n  | {}\n);\n\ntype MetadataTagsInfo = {\n  title?: string;\n  description?: string;\n  artist?: string;\n  album?: string;\n  albumArtist?: string;\n  trackNumber?: number;\n  tracksTotal?: number;\n  discNumber?: number;\n  discsTotal?: number;\n  genre?: string;\n  date?: string;\n  lyrics?: string;\n  comment?: string;\n  images?: {\n    mimeType: string;\n    data: Uint8Array;\n    size: number;\n  }[];\n  rawTagCount?: number;\n  raw?: Record<string, unknown>;\n};\n```\n\nSome fields depend on what the file actually exposes and what options you pass.\nFor example, `metadataTags` and `location` are only read when\n`includeMetadataTags` is `true`, and location is only returned when the video\ncontains a readable GPS tag.\n\nCodec values come directly from Mediabunny. Use `track.codec` for the short\ncodec identifier, such as `avc` or `aac`, and `track.codecParameterString` for\nthe full codec string, such as `avc1.640034` or `mp4a.40.2`. The legacy\nconvenience fields `codec` and `audioCodec` mirror the primary video and audio\ntrack `codec` values.\n\n## Example With Expo Image Picker\n\n```ts\nimport * as ImagePicker from \"expo-image-picker\";\nimport { getVideoInfoAsync } from \"expo-video-metadata\";\n\nconst result = await ImagePicker.launchImageLibraryAsync({\n  mediaTypes: \"videos\",\n  base64: false,\n  exif: true,\n  legacy: false,\n  videoQuality: ImagePicker.UIImagePickerControllerQualityType.High,\n  preferredAssetRepresentationMode:\n    ImagePicker.UIImagePickerPreferredAssetRepresentationMode.Current,\n});\n\nif (!result.canceled) {\n  const asset = result.assets[0];\n  const info = await getVideoInfoAsync(asset.file ?? asset.uri, {\n    includeMetadataTags: true,\n  });\n  console.log(info);\n}\n```\n\n`expo-image-picker` may not expose location data unless `legacy` is enabled, even when the original video contains it.\n","readmeFilename":"README.md"}