作為超級APP,微信已經成了移動互聯網的入口。而我們也早已習慣通過微信收發圖片與視頻等多媒體文件。身為一名屌絲通信狗,經常出差海外,跟家人的溝通方式主要就靠微信了,每當累了或抑郁了,打開微信看看媳婦兒和孩子的視頻照片,就覺得開心多了。最終,微信變得越來越臃腫,視頻與圖片也必須早點保存到手機或者電腦。但是最終導出的文件命名是讓人相當崩潰的。。。
是能忍 孰不能忍,作為一名有(xia)抱(zhe)負(teng)的屌絲,是絕不能容忍這么雜亂的文件命名的,也絕不可能因此就對這些文件逐一手動重命名的。
1. 使用自動化利器Python
作為批量處理文件的利器,當然非Python莫屬了,而且有一堆優質庫可供調用,基本搜索一下能解決90%需求。對于這個需求初始想法是直接通過os庫獲取文件的創始時間,依此來重新命名文件,可是最終發現os庫獲取的是文件第一次拷貝到系統的時間,并非文件的初始創建時間。比如,2016-09-10日19:00:23拷貝2016-06-16日10:00:00拍攝的視頻文件到系統硬盤,系統就記錄其時間為2016-09-10日19:00:23,并非6月16日。
上網搜了很久,發現使用exif與ffmpeg可以分別對照片與視頻提取初始創建時間:
1.1 exif工具
Exif是用來存儲數碼照片的屬性信息與拍攝數據的,可以附加于JPEG、TIFF、RIFF等文件之中,為其增加有關數碼相機拍攝信息的內容和索引圖或圖像處理軟件的版本信息。
使用exif工具查詢當前目錄下的pic1.png文件可以得到如下信息:
MacBook:BaiduYun meixuhong$ exif -i pic1.png
EXIF tags in 'pic1.png' ('Motorola' byte order):
------+------------------------------------------------------------------------
Tag |Value
------+------------------------------------------------------------------------
0x010f|Apple
0x0110|iPhone 6s
0x0112|Right-top
0x011a|72
0x011b|72
0x0128|Inch
0x0131|9.2.1
0x0132|2016:03:08 21:22:46
顯然獲取到照片拍攝時間為2016:03:08 21:22:46。
1.2 ffmpeg工具
ffmpeg自然不用多說,一款開源的牛逼哄哄的絕大多數開發者與公司都在用的音頻解碼軟件。使用它解析視頻文件自然也不在話下。如使用它解析1.mov文件,則會輸出如下信息:
MacBook:BaiduYun meixuhong$ ffmpeg -i 1.mov
ffmpeg version 3.1.3 Copyright (c) 2000-2016 the FFmpeg developers
#略去若干字
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2016-07-10 09:36:54
com.apple.quicktime.location.ISO6709: +30.2216+115.9852-244.943/
com.apple.quicktime.make: Apple
com.apple.quicktime.model: iPhone 6s
com.apple.quicktime.software: 9.3.2
com.apple.quicktime.creationdate: 2016-07-10T17:36:54+0800
Duration: 00:01:05.95, start: 0.000000, bitrate: 8559 kb/s
#略去若干字
獲取到視頻文件拍攝于2016-07-10 09:36:54。
這倆工具當然無懈可擊,可是要想用python解析的話就得使用進程調用它們,而且只能將輸出結果保存在文本中,那如果有300個文件就得要輸出300個文本文件,很復雜,顯然不是我要的結果,需要換思路。
1.3 殺雞焉用牛刀 - 小巧的Hachoir
Hachoir is a Python library to view and edit a binary stream field by field. In other words, Hachoir allows you to “browse” any binary stream just like you browse directories and files.
即是說使用Hachoir可以直接查看文件的二進制文件,提取文件的metadata即可獲取到數碼照片與視頻的初始創建時間了。
實現過程到還是到我的項目主頁Github一覽吧。
執行完Python腳本,再來看各個文件名,以具體拍照時間格式嚴格命名并排序,感覺整個世界瞬間變得美好了。