• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# mediatool工具
2
3mediatool是一个轻量级的命令行工具集合,开发者可通过此工具操作媒体库资源。媒体库为图库提供和管理数据,媒体库中的图片视频会在图库界面呈现。
4
5mediatool工具为系统自带工具,不需要安装,内置在/bin文件夹中,可以通过hdc shell直接调用。
6
7## 前置条件
8
9- 正常连接设备
10- 系统设置中开启开发者模式
11- 使用hdc shell进入命令行执行模式
12
13## 命令行说明
14
15<!--Del-->
16
17### mediatool send
18
19```shell
20mediatool send <path-to-local-media-file> [-ts] [-tas] [-rf] [-urf]
21```
22
23该命令能够将设备`<path-to-local-media-file>`路径下的图片视频文件推入媒体库中保存。支持保存图片、视频和音频文件。文件在媒体库中会保留原有的名字。`<path-to-local-media-file>`可以为文件夹,mediatool会将文件夹里的所有文件置入媒体库中。保存成功后会打印成功置入的资源的uri。
24
25默认情况下,将媒体文件保存进媒体库是以同步方式创建缩略图,并且置入后```<path-to-local-media-file>```下的文件会被删除。
26
27  | 选项               | 说明             |
28| ---- |--------------- |
29| -ts | 保存图片视频时以同步方式创建缩略图。能够保证缩略图正常生成之后图片视频才会显示,但是会导致保存耗时较长。(默认) |
30| -tas | 保存图片视频时以异步方式创建缩略图。不能与-ts选项同时使用。图片视频保存后会立即显示,不会等待缩略图先生成。保存耗时较短。 |
31| -rf | 媒体文件置入后删除源文件。(默认) |
32| -urf | 媒体文件置入后不删除源文件。不能与-rf选项同时使用。 |
33
34**使用示例:**
35
36```shell
37> mediatool send /data/tmp/MyImage.jpg
38file://media/Photo/3/IMG_1721381297_001/MyImage.jpg # 推图成功,打印推入资源的uri
39```
40
41### mediatool list
42
43```shell
44mediatool list <resource-uri>
45```
46
47该命令能够将`<resource-uri>`指定uri对应的媒体库内资源信息以csv格式打印出来。
48例如媒体库内图片资源A的uri为file://media/Photo/3/IMG_1721381297_001/MyImage.jpg, `mediatool list file://media/Photo/3`或者`mediatool list file://media/Photo/3/IMG_1721381297_001/MyImage.jpg`都能成功打印出该资源信息。
49
50所打印信息包含:
51
52- uri: 媒体资源的uri。
53- display_name: 媒体资源的名字。
54- data: 媒体资源的源文件在设备中的物理路径。
55
56还可以将`<resource-uri>`指定为`all`。`mediatool list all`会将媒体库内所有资源的信息打印出来。
57
58**使用示例:**
59
60```shell
61# 使用存在的uri查询
62> mediatool list file://media/Photo/3
63Table Name: Photos
64uri, display_name, data
65"file://media/Photo/3/IMG_1721381297_001/MyImage.jpg", "MyImage.jpg", "/storage/cloud/100/files/Photo/2/IMG_1721381297_001.jpg"
66
67# 使用格式错误的uri查询
68> mediatool list file://media/Photo/
69[FAIL] uri invalid. uri:file://media/Photo/
70```
71
72<!--DelEnd-->
73
74### mediatool recv
75
76```shell
77mediatool recv <resource-uri> <dest-path>
78```
79
80该命令能够将`<resource-uri>`指定uri对应的媒体库资源的源文件内容导出到`<dest-path>`指定的设备路径下。
81
82`<dest-path>`可以指定为待创建文件路径或者文件夹路径,若为文件夹路径则会导出到该文件夹下,文件保留媒体库中的名字。
83
84当`<dest-path>`指定待创建文件路径时,不能是已经存在文件的路径。
85<!--Del-->
86`<dest-path>`需要指定有权限访问的路径。
87<!--DelEnd-->
88文件导出成功后会打印导出文件的路径。
89
90媒体库资源uri获取可参考[媒体库uri介绍/获取方式](#媒体库uri介绍获取方式)。
91
92将`<resource-uri>`指定为`all`则能够将所有媒体库资源的源文件导出。当`<resource-uri>`为`all`时,`<dest-path>`必须为文件夹路径。
93
94该命令无法导出隐藏相册内的媒体资产。
95<!--RP1--><!--RP1End-->
96
97**使用示例:**
98
99```shell
100> mediatool recv file://media/Photo/3 /data/local/tmp/out.jpg
101Table Name: Photos
102/data/local/tmp/out.jpg
103```
104
105### mediatool delete
106
107```shell
108mediatool delete <resource-uri>
109```
110
111该命令能够彻底删除`<resource-uri>`指定uri的媒体库资源。被删除的资源无法恢复,请谨慎执行。
112
113媒体库资源uri的获取可参考[媒体库uri介绍/获取方式](#媒体库uri介绍获取方式)。
114
115将`<resource-uri>`指定为`all`则指定删除所有媒体库资源,并重置媒体库的所有数据。
116
117**使用示例:**
118
119```shell
120> mediatool delete file://media/Photo/3
121[SUCCESS] delete success.
122
123> mediatool delete all # delete all 执行成功不会有任何打印
124```
125
126### mediatool query
127
128```shell
129mediatool query <display-name> [-p] [-u]
130```
131
132该命令能够查询出所有名字为`<display-name>`的媒体库资源,返回资源源文件真实路径或媒体资源uri。默认返回源文件真实路径。
133
134该命令无法查询出隐藏相册内的媒体资产。
135
136  | 选项               | 说明             |
137| ---- |--------------- |
138| -p | 返回媒体资源源文件在设备中的真实路径。(默认) |
139| -u | 返回媒体资源uri。不能与-p选项同时使用。 |
140
141**使用示例:**
142
143```shell
144# 所查询媒体资源存在
145> mediatool query MyImage.jpg
146find 1 result:
147path
148/storage/cloud/100/files/Photo/2/IMG_1721381297_001.jpg
149
150# 所查询媒体资源不存在
151> mediatool query non_exist.jpg
152find 0 result
153
154# 查询的名字格式不正确
155> mediatool query IMG_001
156find 0 result
157The displayName format is not correct!
158
159# 查询媒体资源源文件路径
160> mediatool query MyImage.jpg -p
161find 1 result:
162path
163/storage/cloud/100/files/Photo/2/IMG_1721381297_001.jpg
164
165# 查询媒体资源uri
166> mediatool query MyImage.jpg -u
167find 1 result:
168uri
169"file://media/Photo/2/IMG_1721381297_001/MyImage.jpg"
170```
171
172## 使用指导
173
174以下使用指导说明了一些常见的mediatool使用场景。
175
176### 导出特定媒体库资产
177
178示例导出图库中名字叫MyImage的jpg图片。
179
180```shell
181> hdc shell mediatool query -u MyImage.jpg
182find 1 result
183uri
184"file://media/Photo/1/IMG_1743078145_000/MyImage.jpg"
185
186> hdc shell mediatool recv file://media/Photo/1 /data/local/tmp/out.jpg
187Table Name: Photos
188/data/local/tmp/out.jpg
189
190> hdc file recv /data/local/tmp/out.jpg .
191FileTransfer finish, Size:10015455, File count = 1, time:679ms rate:14750.30kB/s
192```
193
194### 导出所有媒体库资产
195
196```shell
197> hdc shell mediatool recv all /data/local/tmp/media
198Table Name: Photos
199/data/local/tmp/media/MyImage.jpg
200
201Table Name: Audios
202
203> hdc shell tar -cvf /data/local/tmp/media.tar /data/local/tmp/media/*
204removing leading '/' from member names
205data/local/tmp/media/MyImage.jpg
206
207> hdc file recv /data/local/tmp/media.tar .
208FileTransfer finish, Size:10017280, File count = 1, time:664ms rate:15086.27kB/s
209```
210
211### 删除特定媒体库资产
212
213示例删除图库中名字叫MyImage的jpg图片。
214
215```shell
216> hdc shell mediatool query -u MyImage.jpg
217find 1 result
218uri
219"file://media/Photo/1/IMG_1743078145_000/MyImage.jpg"
220
221> hdc shell mediatool delete file://media/Photo/1/IMG_1743078145_000/MyImage.jpg
222[SUCCESS] delete success.
223```
224
225### 彻底重置媒体库数据库
226```shell
227> hdc shell mediatool delete all
228```
229
230## 媒体库uri介绍/获取方式
231
232uri是媒体库资产的唯一标识符,每个uri都对应一个媒体资产。mediatool使用uri来判断需要操作的媒体资产对象。
233
234可使用以下方式获取uri:
235* mediatool query 加上 -u 的选项可以返回对应媒体资产的uri。需要输入对应资产的显示名(在图库中展示的名字带后缀名)。
236<!--Del-->
237* mediatool list all可以获取到所有媒体库资产的uri列表,以及对应的资产的显示名。
238<!--DelEnd-->
239
240媒体库uri可以用于mediatool recv命令导出特定媒体库资产,也可以用于mediatool delete删除特定媒体库资产。
241
242uri样例:`file://media/Photo/1/IMG_1743078145_000/MyImage.jpg`。
243在mediatool操作中,需要使用以上uri时,无论使用`file://media/Photo/1/IMG_1743078145_000/MyImage.jpg`还是`file://media/Photo/1`都能够正确的定位到目标资产。