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`都能够正确的定位到目标资产。