修改元数据(音视频/metadata/tag/标签)

Posted TDPConscious

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改元数据(音视频/metadata/tag/标签)相关的知识,希望对你有一定的参考价值。

这里写目录标题

本文用途

如何修改一个媒体文件的详细数据比如
标题、作者、艺术家、标记、备注等等

准备工具(exiftool)

能编辑几乎所有数据(讲道理翻外网帖子才看到,不然都不知道有这个工具)
下载地址

前置基础知识

会使用cmd
会编辑环境变量

使用方法

首先自行下载并配置环境变量,使其在cmd状态下可用。

MP4标签对照表

红色字:输入中文时可能会出现最后一个字消失的问题 或者有更多问题详情见备注。
绿色字:不可写或者个人原因没有研究使用方式。

标签对应中文标签名备注
标题ItemList:Title文本
副标题Microsoft:Subtitle文本
分级Microsoft:Rating1-99的整数(不可写)
标记Microsoft:Category文本组 用;分割
备注ItemList:Comment文本
参与创作的艺术家ItemList:Artist文本组 用;分割
ItemList:ContentCreateDate时间类型 只显示年 格式(YYYY:mm:dd HH:MM:SS)
流派ItemList:Genre文本组 用;分割
导演Microsoft:Director文本组 用;分割
制作人Microsoft:Producer文本组 输入中文的话由于吞字导致无法分割
创作人Microsoft:Writer文本组 输入中文的话由于吞字导致无法分割
发布者Microsoft:Publisher文本
内容提供商Microsoft:ContentDistributor写不进去 具体原因未知 用不上这个tag
创建媒体日期Quicktime:CreateDate是时间类型但写不进去 不用这个tag没研究
编码人员Microsoft:EncodedBy文本
作者URLMicrosoft:AuthorURL文本
促销URLMicrosoft:PromotionURL文本
版权Microsoft:Copyright不可写 且会报Warning
家长分级Microsoft:ParentalRating文本
父级分级原因Microsoft:ParentalRatingReason 不可写 且会报Warning
作曲者ItemList:Composer文本组 输入中文的话由于吞字导致无法分割
指挥者Microsoft:Conductor文本组 输入中文的话由于吞字导致无法分割
时期Microsoft:Period文本
氛围Microsoft:Mood文本
部分设置(Part of set)ItemList:DiskNumber整数
初始调性Microsoft:InitialKey文本
每分钟节拍数ItemList:BeatsPerMinute整数
保护Microsoft:IsProtected不可写 且会报Warning

使用样例

命令行代码
单行命令(不方便看)

exiftool -ItemList:Title=标题 -Microsoft:Subtitle=副标题 -Microsoft:Rating=50 -Microsoft:Category=标记1;标记2 -ItemList:Comment=备注 -ItemList:Artist=参与创作的艺术家1;参与创作的艺术家2 -ItemList:ContentCreateDate="1145:01:04 11:45:14" -ItemList:Genre=流派1;流派2 -Microsoft:Director=导演1;导演2 -Microsoft:Producer=制作人1;制作人2 -Microsoft:Writer=创作人1;创作人2 -Microsoft:Publisher=发布者 -Microsoft:ContentDistributor=内容提供商 -Quicktime:CreateDate="1145:01:04 11:45:14" -Microsoft:EncodedBy=编码人员 -Microsoft:AuthorURL=作者URL -Microsoft:PromotionURL=促销URL -Microsoft:Copyright=版权 -Microsoft:ParentalRating=家长分级 -Microsoft:Microsoft:ParentalRatingReason=父级分级原因 -ItemList:Composer=作曲者 -Microsoft:Conductor=指挥者 -Microsoft:Period=时期 -Microsoft:Mood=氛围 -ItemList:DiskNumber=1 -Microsoft:InitialKey=初始调性 -ItemList:BeatsPerMinute=1 -Microsoft:IsProtected=true %~1
pause

多行命令方便看和修改

exiftool ^
-ItemList:Title=标题 ^
-Microsoft:Subtitle=副标题 ^
-Microsoft:Rating=50 ^
-Microsoft:Category=标记1;标记2 ^
-ItemList:Comment=备注 ^
-ItemList:Artist=参与创作的艺术家1;参与创作的艺术家2 ^
-ItemList:ContentCreateDate="1145:01:04 11:45:14" ^
-ItemList:Genre=流派1;流派2 ^
-Microsoft:Director=导演1;导演2 ^
-Microsoft:Producer=制作人1;制作人2 ^
-Microsoft:Writer=创作人1;创作人2 ^
-Microsoft:Publisher=发布者 ^
-Microsoft:ContentDistributor=内容提供商 ^
-Quicktime:CreateDate="1145:01:04 11:45:14" ^
-Microsoft:EncodedBy=编码人员 ^
-Microsoft:AuthorURL=作者URL ^
-Microsoft:PromotionURL=促销URL ^
-Microsoft:Copyright=版权 ^
-Microsoft:ParentalRating=家长分级 ^
-Microsoft:Microsoft:ParentalRatingReason=父级分级原因 ^
-ItemList:Composer=作曲者 ^
-Microsoft:Conductor=指挥者 ^
-Microsoft:Period=时期 ^
-Microsoft:Mood=氛围 ^
-ItemList:DiskNumber=1 ^
-Microsoft:InitialKey=初始调性 ^
-ItemList:BeatsPerMinute=1 ^
-Microsoft:IsProtected=true ^
%~1
pause

使用后会自动生成后缀为original的备份 如果不想要这个备份添加-overwrite_original指令即可
至此为止你已经可以写入mp4的元数据了(虽然只能写入英文或者有限制的写入中文)

F&Q

我想改的格式不是mp4怎么办?

题外话 其实这个工具原本就是为了 修改图片的元数据而存在的,只是同时能修改mp4而已。
回到主题 你先右键属性 查看详细信息,就知道当前格式能不能修改(大多数都能这么判断 但不是所有),能改的你可以直接手动输入,本文工具是为了批处理。
确定好格式可以修改后,使用命令:

exiftool -a -s -g1 文件地址/文件.XXX >输出路径/信息文件名.txt

就可以在对应的路径生成一个txt,能在文件中看到所有信息,包括当前标签叫什么名字等。
可以通过手动修改元数据,然后导出信息文件来查看哪些标签是你需要的。

我就是想输入中文怎么办?

我也是这么想的,所以用C# 写了工具控制,控制方法来源于社区
工具Git源码

2023年1月10日更新
具体方法请参考社区,由于我自己的项目许久不维护已经非常不好用了,且需要反复读写本地文件也显得很睿智。
如果你会使用C# 请下载TagLib NuGet包,如果不会但还是需要该工具可以留言,也许会考虑出工具。

具体使用方法:

在command.txt写入命令 和cmd命令几乎相同,不同的是用回车分割元素而非空格,下面是具体示例:

-ItemList:Title=标题
-Microsoft:Subtitle=副标题
-Microsoft:Category=标记1;标记2
-ItemList:Comment=备注
-ItemList:Artist=参与创作的艺术家1;参与创作的艺术家2
-ItemList:ContentCreateDate="2000:01:01 11:45:14"
-ItemList:Genre=流派1;流派2
-Microsoft:Director=导演1;导演2
-Microsoft:Producer=制作人1;制作人2
-Microsoft:Writer=创作人1;创作人2
-Microsoft:Publisher=发布者
-Microsoft:ContentDistributor=内容提供商
-Quicktime:CreateDate="2000:01:01 11:45:14"
-Microsoft:EncodedBy=编码人员
-Microsoft:AuthorURL=作者URL
-Microsoft:PromotionURL=促销URL
-Microsoft:ParentalRating=家长分级
-ItemList:Composer=作曲者
-Microsoft:Conductor=指挥者
-Microsoft:Period=时期
-Microsoft:Mood=氛围
-ItemList:DiskNumber=1
-Microsoft:InitialKey=初始调性
-ItemList:BeatsPerMinute=1
%path%

使用%path%来替换mp4的路径,也可以直接指定路径,该功能适用于批处理。

然后运行ExifToolHelper,按照引导选择一个文件夹,然后输入扩展名,这样就会筛选该文件夹下所有以该扩展名结尾的文件,并将文件路径自动带入path,进行批处理。

不能翻墙的从这里下载示例,能翻墙的去git直接下载就行。 示例过旧

meta标签作用总结

  1.1 meta标签的定义

元数据(metadata)是关于数据的信息。

标签提供关于 HTML 文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。

典型的情况是,meta 元素被用于规定页面的描述、关键词、文档的作者、最后修改时间以及其他元数据。

标签始终位于 head 元素中。

元数据可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。

<meta> 标签提供关于 HTML 文档的元数据。它不会显示在页面上,但是对于机器是可读的。可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务

 

  1.2 meta分为必需属性和可选属性

  必需属性

  meta的必需属性是content,当然并不是说meta标签里一定要有content,而是当有http-equivname属性的时候,一定要有content属性对其进行说明;

  <meta name="keywords" content="HTML,ASP,PHP,SQL">  相当于一个键值对:{keywords: HTML,ASP,PHP,SQL}

  可选属性

  http-equiv:http-equiv属性是添加http头部内容

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  后面的content属性是用前面http-equiv的内容

  <meta http-equiv="Refresh" content="5;url=http://www.w3school.com.cn" />  还可以用来执行js重定向的功能

 

  1.3 meta作用笔记

  百度禁止转码

<meta http-equiv="Cache-Control" content="no-siteapp" />

  seo优化部分

<!-- 页面关键词 keywords -->
<meta name="keywords" content="your keywords">
<!-- 页面描述内容 description -->
<meta name="description" content="your description">
<!-- 定义网页作者 author -->
<meta name="author" content="author,email address">
<!-- 定义网页搜索引擎索引方式,robotterms 是一组使用英文逗号「,」分割的值,通常有如下几种取值:none,noindex,nofollow,all,index和follow。 -->
<meta name="robots" content="index,follow">

  移动端viewport

<meta name="viewport" content="width=device-width, initial-scale=1.0">
// content内容:

width viewport 宽度(数值/device-width)
height viewport 高度(数值/device-height)
initial-scale 初始缩放比例
maximum-scale 最大缩放比例
minimum-scale 最小缩放比例
user-scalable 是否允许用户缩放(yes/no)

  IE浏览器

<meta http-equiv="X-UA-Compatible" content="IE=7">  
#以上代码告诉IE浏览器,无论是否用DTD声明文档标准,IE8/9都会以IE7引擎来渲染页面。  
<meta http-equiv="X-UA-Compatible" content="IE=8">  
#以上代码告诉IE浏览器,IE8/9都会以IE8引擎来渲染页面。  
<meta http-equiv="X-UA-Compatible" content="IE=edge">  
#以上代码告诉IE浏览器,IE8/9及以后的版本都会以最高版本IE来渲染页面。  
<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9">  
<meta http-equiv="X-UA-Compatible" content="IE=7,9">  
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
#以上代码IE=edge告诉IE使用最新的引擎渲染网页,chrome=1则可以激活Chrome Frame.

  谷歌浏览器

<!-- 优先使用最新的chrome版本 -->
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<!-- 禁止自动翻译 -->
<meta name="google" value="notranslate">

  360浏览器

<!-- 选择使用的浏览器解析内核 -->
<meta name="renderer" content="webkit|ie-comp|ie-stand">

  UC手机浏览器

<!-- 将屏幕锁定在特定的方向 -->
<meta name="screen-orientation" content="landscape/portrait">
<!-- 全屏显示页面 -->
<meta name="full-screen" content="yes">
<!-- 强制图片显示,即使是"text mode" -->
<meta name="imagemode" content="force">
<!-- 应用模式,默认将全屏,禁止长按菜单,禁止手势,标准排版,强制图片显示。 -->
<meta name="browsermode" content="application">
<!-- 禁止夜间模式显示 -->
<meta name="nightmode" content="disable">
<!-- 使用适屏模式显示 -->
<meta name="layoutmode" content="fitscreen">
<!-- 当页面有太多文字时禁止缩放 -->
<meta name="wap-font-scale" content="no">

  QQ手机浏览器

<!-- 锁定屏幕在特定方向 -->
<meta name="x5-orientation" content="landscape/portrait">
<!-- 全屏显示 -->
<meta name="x5-fullscreen" content="true">
<!-- 页面将以应用模式显示 -->
<meta name="x5-page-mode" content="app">

  IOS 移动端

<meta name="theme-color" content="#E64545">
<!-- 添加到主屏 -->
<meta name="mobile-web-app-capable" content="yes">
<!-- More info: https://developer.chrome.com/multidevice/android/installtohomescreen -->

  safari浏览器

<!-- Smart App Banner -->
<meta name="apple-itunes-app" content="app-id=APP_ID,affiliate-data=AFFILIATE_ID,app-argument=SOME_TEXT">


<!-- 禁止自动探测并格式化手机号码 -->
<meta name="format-detection" content="telephone=no">


<!-- Add to Home Screen添加到主屏 -->
<!-- 是否启用 WebApp 全屏模式 -->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- 设置状态栏的背景颜色,只有在 “apple-mobile-web-app-capable” content=”yes” 时生效 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- 添加到主屏后的标题 -->
<meta name="apple-mobile-web-app-title" content="App Title">

  安卓手机浏览器

<meta name="theme-color" content="#E64545">
<!-- 添加到主屏 -->
<meta name="mobile-web-app-capable" content="yes">
<!-- More info: https://developer.chrome.com/multidevice/android/installtohomescreen -->

  移动端常用meta

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="format-detection"content="telephone=no, email=no" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" /><!-- 删除苹果默认的工具栏和菜单栏 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black" /><!-- 设置苹果工具栏颜色 -->
<meta name="format-detection" content="telphone=no, email=no" /><!-- 忽略页面中的数字识别为电话,忽略email识别 -->
<!-- 启用360浏览器的极速模式(webkit) -->
<meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
<meta name="HandheldFriendly" content="true">
<!-- 微软的老式浏览器 -->
<meta name="MobileOptimized" content="320">
<!-- uc强制竖屏 -->
<meta name="screen-orientation" content="portrait">
<!-- QQ强制竖屏 -->
<meta name="x5-orientation" content="portrait">
<!-- UC强制全屏 -->
<meta name="full-screen" content="yes">
<!-- QQ强制全屏 -->
<meta name="x5-fullscreen" content="true">
<!-- UC应用模式 -->
<meta name="browsermode" content="application">
<!-- QQ应用模式 -->
<meta name="x5-page-mode" content="app">
<!-- windows phone 点击无高光 -->
<meta name="msapplication-tap-highlight" content="no">
<!-- 适应移动端end -->

 







以上是关于修改元数据(音视频/metadata/tag/标签)的主要内容,如果未能解决你的问题,请参考以下文章

meta标签作用总结

使用 Ffmpeg 设置视频流元数据

meta标签的作用及整理

是否有使用 Scala 或 Java 编辑 MP4 元数据的库? [关闭]

一次性弄懂 meta 标签,看这篇就够了

音视频开发第一课-使用C语言开发视频播放器 650元IT外包开发全程记录