Crates.io | sm_motion_photo |
lib.rs | sm_motion_photo |
version | 0.1.5 |
source | src |
created_at | 2020-05-03 19:23:16.949621 |
updated_at | 2021-02-14 07:27:44.887431 |
description | Extract video from Samsung Motion Photo. Supports JPEG, HEIF/HEIC |
homepage | |
repository | https://github.com/g0ddest/sm_motion_photo |
max_upload_size | |
id | 237198 |
size | 13,468 |
This crate provides functions for extracting video from Motion Photos and getting meta-information from the video. It is a feature of Samsung phones, a JPEG file with a video file embedded.
This feature is available on Galaxy S20, S20+, S20 Ultra, Z Flip, Note10, Note10+, S10e, S10, S10+, Fold, Note9, S9, S9+, Note8, S8, S8+, S7, and S7 edge.
Supports photos saved in JPEG and HEIF (HEIC) format.
use std::fs::File;
use sm_motion_photo::SmMotion;
// open file
let photo_file = File::open("photo.jpg").unwrap();
let mut sm = SmMotion::with(&photo_file).unwrap();
println!("JPEG file contains video? {:?}", sm.has_video());
let mut video_file = File::create("video.mp4").unwrap();
// dump mp4 from jpeg
sm.dump_video_file(&mut video_file).unwrap();
// get video duration (no dump needed)
println!("{:?}", sm.get_video_file_duration());
// get MP4 file context
println!("{:?}", sm.find_video_context());
// You can also save index and use it afterwards
let mut sm_cached = SmMotion::with_precalculated(&photo_file, 3366251).unwrap();
println!("{:?}", sm_cached.get_video_file_duration());