爱意满满的作品展示区。
lson

做了个视频转实况照片的 App,一段视频挑多个结果一次导出, iPhone / iPad / Mac 同一个

  •  
  •   lson · 1 day ago · 825 views

    独立开发,上周刚过审上架,来分享一下。

    Beavery 做的事:演唱会、旅行只管录视频,回来在同一段视频里把想要的瞬间一个个挑出来,这段做实况照片、那段做 GIF 、再截一帧原画质照片,加进「待导出」,一次全部导出到相册。时间轴慢慢拖会放大到逐帧,封面任选一帧。

    几个技术上的点:

    • 实况照片的配对(图片里的 MakerApple 17 、视频里的 content identifier 、still-image-time 元数据轨)用 AVFoundation + ImageIO 自己写,视频样本直接从源文件拷贝不重编码,所以 HDR 、声音、拍摄时间地点都原样保留,画质和源视频一致。
    • 实况不限时长,拖多长就多长;新选区默认长度和相机拍的实况差不多,因为不少地方只播实况的前几秒。
    • Mac 版是原生 Mac App ,和 iPhone 共用 SwiftUI 代码,不是 Catalyst 也不是「专为 iPad 设计」。拖文件进窗口、方向键逐帧、⌘E 打开待导出。
    • 照片和视频在你的设备上处理,不上传,不用注册。

    收费:免费下载,一次导出一个结果免费,第一次批量导出也免费;之后一次导出多个要 Pro ,终身 ¥38 或年订阅 ¥22 ,iPhone / iPad / Mac 买一次通用。

    App Store: https://apps.apple.com/cn/app/id6826636404?ct=social-v2ex 官网: https://beavery.savetimefor.fun 30 秒演示: https://youtu.be/AGBc4EetiHU

    欢迎提意见,尤其是拖时间轴的手感。

    13 replies  •  2026-11-05 15:25:09 +08:00
    lson
    lson
    OP
    1 day ago
    1
    放 5 个 Pro 终身版兑换码,先到先得,App 里「设置 › Beavery Pro › 兑换优惠码」输入。用掉的麻烦回一声:
    MXAWH7WM87ARLAJMHR
    K7MAHKE767JJRLAW7F
    3ELFPW3PAXL8J47J63
    PMP8AE4XM4MXWNM4RA
    6EHYAX8473TN86F7NK
    Len669896
    Len669896
    1 day ago
    2
    6EHYAX8473TN86F7NK 已用,感谢佬
    snakelhb
    snakelhb
    1 day ago
    3
    3ELFPW3PAXL8J47J63 已用,试试看。
    lockheart
    lockheart
    1 day ago
    4
    都被用了,求个码体验下,感谢
    bG9ja2hlYXJ0QGR1Y2suY29t
    AiLinkLife2
    AiLinkLife2
    1 day ago
    5
    逐帧挑再批量导出这个交互挺顺。想问下实况照片的配对是走系统 API ,还是自己写 MakerApple 那些元数据?自己拼的话,导出到相册之后在 iOS 17 里编辑会不会丢配对——之前看别人做这块就卡在这儿,导出来系统不认那段视频。
    zhddd
    zhddd
    1 day ago
    6
    已用,已好评哈哈
    jinxing
    jinxing
    1 day ago via iPhone
    7
    已用,好评一个,不错
    lson
    lson
    OP
    1 day ago
    8
    @lockheart 谢谢支持~
    lson
    lson
    OP
    1 day ago
    9
    @AiLinkLife2
    谢谢!配对是两头都有:元数据自己写,存相册走系统 API 。

    写元数据:图片的 MakerApple 里写 17 号键( asset identifier )。MOV 里写同一个 com.apple.quicktime.content.identifier ,再补一条 still-image-time 元数据轨道,告诉系统封面在视频里是哪一帧。
    存相册之前:先用 PHLivePhoto.request(withResourceFileURLs:) 把这对文件加载一遍,系统能认成实况才继续。
    存相册:用 PHAssetCreationRequest ,图片作为 .photo 、视频作为 .pairedVideo ,同一个 request 一起提交。

    你说的「导出来系统不认那段视频」,我遇到的多半是三种情况:

    图片和视频的 identifier 对不上;
    少了 still-image-time 这条轨道;
    两个文件分两次存进相册,被当成一张照片加一段视频。

    这三处都对上,相册里就是一条实况。之后在「照片」里编辑,改的是相册自己记录的那一条,配对不会因为编辑断掉。

    另外,Beavery 最低支持 iOS 18 ,iOS 17 上的编辑我没测过,不敢打包票。
    lson
    lson
    OP
    1 day ago
    10
    @Len669896 谢谢支持~
    lson
    lson
    OP
    1 day ago
    11
    @snakelhb 谢谢支持~
    lson
    lson
    OP
    1 day ago
    12
    @zhddd 谢谢支持~
    lson
    lson
    OP
    1 day ago
    13
    @in211240520 谢谢支持~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4380 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 09:33 · PVG 17:33 · LAX 01:33 · JFK 04:33
    ♥ Do have faith in what you're doing.