给mp4文件加入自定义metadata

开始想着ffmpeg应该可以,最后试验ffmpeg只支持mkv, 不支持mp4写入

FFmpeg's Matroska muxer allows random tags, so

ffmpeg -i input -c copy
       -metadata key1=value1
       -metadata:s:v key2=value2
       -metadata:s:a:0 key3=value3
out.mkv

mkv就可以写成功:

ffmpeg -i in-black.mp4 -metadata custom_meta=1 -codec copy in-black.mkv

mp4确实写不进去:

ffmpeg -i 1106211062.mp4 -metadata:s:v custom_meta=1 1106211062-out.mp4
ffmpeg -i in-black.mp4 -metadata custom_meta=1 -codec copy in-black-out.mp4

最后没有其他办法,想到了在用的jcodec支持meta写入,jcodec是一个lisence为FreeBSD的jar,用org.jcodec.movtool.MetadataEditor就可以,代码如下:

String file = "/storage/emulated/0/DCIM/Camera/VID_20190927_193230.mp4";
try {               
    MetadataEditor metadataEdit = MetadataEditor.createFrom(new File(file));
    Map<String, MetaValue> keyedMeta = metadataEdit.getKeyedMeta();
    keyedMeta.put("custom-meta", MetaValue.createInt(1));
    keyedMeta.put("custom-meta-2", MetaValue.createInt(2));
    keyedMeta.put("custom-meta-3", MetaValue.createInt(3));
    metadataEdit.save(true);

} catch (Exception e) {
    Log.w(TAG, "error \n", e);
}                   

在手机的小demo上运行,然后pull出来,确实是可以的:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2019-09-27T11:32:43.000000Z
    com.android.version: 9
    custom-meta     : 1
    custom-meta-2   : 2
    custom-meta-3   : 3
  Duration: 00:00:11.81, start: 0.000000, bitrate: 20460 kb/s```
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值