#jpeg #heif #heic #samsung-motion-photo #motion-photo

sm_motion_photo

从三星动态照片中提取视频。支持JPEG、HEIF/HEIC

6个版本

0.1.5 2021年2月14日
0.1.4 2020年10月27日
0.1.2 2020年5月6日

#653 in 图像

Download history 5/week @ 2024-03-29 19/week @ 2024-05-24 80/week @ 2024-05-31 35/week @ 2024-06-07 56/week @ 2024-06-14 46/week @ 2024-06-21 7/week @ 2024-06-28

每月 153次下载

MIT 许可证

9KB
103 代码行

SM动态照片

Build Status codecov docs crates

此crate提供从动态照片中提取视频和获取视频元信息的函数。它是三星手机的一项功能,一个嵌入视频文件的JPEG文件。

此功能适用于Galaxy S20、S20+、S20 Ultra、Z Flip、Note10、Note10+、S10e、S10、S10+、Fold、Note9、S9、S9+、Note8、S8、S8+、S7和S7 edge。

支持保存为JPEG和HEIF (HEIC)格式的照片。

用法

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());

依赖项

~0.7–1MB
~17K SLoC