我正在寻找一个工具或一组工具,它们组合起来可以从文件夹中递归读取并输出文件夹的名称、电影文件的名称、电影的分辨率和其他信息。
例如,它的输出将是:
(1997) Titanic, Titanicmovie, 1280x720, 720p
(2001) Matrix 2, Matrix2, 1280x1080, 1080p
(2012) Titan, Titanmovie, 1280x720, 720p
答案1
awk 和 grep + exiftool
http://www.sno.phy.queensu.ca/~phil/exiftool/
应该能够获得您需要的所有信息。
mp4:
$ exiftool big_buck_bunny_480p_surround-fix.avi
ExifTool Version Number : 9.02
File Name : big_buck_bunny_480p_surround-fix.avi
Directory : .
File Size : 210 MB
File Modification Date/Time : 2012:09:19 09:43:12-04:00
File Access Date/Time : 2012:09:19 09:43:22-04:00
File Permissions : rw-rw-r--
File Type : AVI
MIME Type : video/x-msvideo
Frame Rate : 24
Max Data Rate : 0 kB/s
Frame Count : 14315
Stream Count : 2
Stream Type : Video
Video Codec : FMP4
Video Frame Rate : 24
Video Frame Count : 14315
Quality : 0
Sample Size : Variable
Image Width : 854
Image Height : 480
Planes : 1
Bit Depth : 24
Compression : FMP4
Image Length : 1229760
Pixels Per Meter X : 0
Pixels Per Meter Y : 0
Num Colors : Use BitDepth
Num Important Colors : All
Audio Codec :
Audio Sample Rate : 56000
Audio Sample Count : 33401088
Encoding : FAST Multimedia DVM
Num Channels : 6
Sample Rate : 48000
Avg Bytes Per Sec : 56000
Bits Per Sample : 16
Duration : 0:09:56
Image Size : 854x480
影片
$ exiftool hddvd_demo_1080p.mkv
ExifTool Version Number : 9.02
File Name : hddvd_demo_1080p.mkv
Directory : .
File Size : 278 MB
File Modification Date/Time : 2012:09:19 10:09:51-04:00
File Access Date/Time : 2012:09:19 10:08:43-04:00
File Permissions : rw-rw-r--
File Type : MKV
MIME Type : video/x-matroska
Doc Type : matroska
Doc Type Version : 1
Doc Type Read Version : 1
Timecode Scale : 1 ms
Muxing App : libebml v0.7.7 + libmatroska v0.8.1
Writing App : mkvmerge v2.0.2 ('You're My Flame') built on Feb 21 2007 23:40:55
Duration : 0:02:01
Date/Time Original : 2007:04:07 03:28:47Z
Video Codec ID : V_MS/VFW/FOURCC
Image Width : 1920
Image Height : 1080
Video Scan Type : Progressive
Display Width : 1920
Display Height : 1080
Default Duration : 32 ms
Track Number : 3
Track Type : Audio
Track Used : Yes
Track Default : No
Track Forced : No
Track Timecode Scale : 1
Audio Codec ID : A_EAC3
Codec Decode All : Yes
Track Language : eng
Track Name : Dolby Digital Plus 5.1 640kbps
Audio Sample Rate : 48000
Audio Channels : 6
Image Size : 1920x1080
所以你可以这样做
find . -name "*.ogg" -o -name "*.avi" -exec exiftool {} \;
添加
-o -name "*.videoFormat"
每种附加视频格式。此外,这只是入门的基础。您还可以
exiftool ~/Videos
它会为每个文件打印出一张巨大的信息表。您需要将其转储到一个文件中,然后可以相应地使用 grep 和 awk。希望这能有所帮助。
答案2
电影列表脚本
更新:另一个更新是,当文件夹变量改变目录深度时,电影标题不会在使用剪切命令的过程中丢失。
#!/bin/bash
####################################################################
# Movie List Creator Script by Luis Alvarado
# Creates File with Movie Name, Resolution, File Type & Quality
# CONFIG Variables
# FOLDER Variable is where all your movies are
# NOTE: The name of the movies is extracted from the movie's folder,
# if the folder is called "..Movies/The Rabbit"
# the name of the movie in that folder will be "The Rabbit".
folder="/media/cyrex/xtreme/Movies"
# FINAL Variable is the name of the file you wish to create with the
# Movie List.
final="moviefinal.txt"
####################################################################
here=$(pwd)
clear
echo "Processing Movies..."
echo ""
percent=$(ls $folder/|wc -l| while read pipe; do echo "scale=3; 100/$pipe"; done|bc)
movies=1
rm tempmovies 2> /dev/null
for dir in $folder/*
do
(cd "$dir" && found=$(pwd) && echo ${found##/*/} |tr -s '\n' ', ' >> $here/tempmovies &&
exiftool -ext .mkv -ext .m4v -ext .mp4 -ext .avi -ext .mpg * -t -s3 -ImageSize -FileType|tr -s '\t' ',' >> $here/tempmovies )
base=$(echo "scale=3; $percent * $movies" | bc)
echo -ne " Total: $base% Done / $movies Movies Added!"\\r
let movies=movies+1
done
echo " "
echo " Detecting Movie Quality..."
echo " "
rm $final 2> /dev/null
cat tempmovies | while read MovieName;
do
echo "$MovieName" | cut -d ',' -f2 | cut -d 'x' -f2 | sort | uniq | while read MovieRes;
do
if (($MovieRes>=304 && $MovieRes<=370))
then
echo "$MovieName,LOW-RES DVD"
elif (($MovieRes>=241 && $MovieRes<=369))
then
echo "$MovieName,HI-RES DVD"
elif (($MovieRes>=371 && $MovieRes<=479))
then
echo "$MovieName, EDTV 480p"
elif (($MovieRes>=480 && $MovieRes<=760))
then
echo "$MovieName, HDTV 720p"
elif (($MovieRes>=761 && $MovieRes<=1200))
then
echo "$MovieName, HDTV 1080p"
else
echo "$MovieName,VCD"
fi >> $final
done
done
echo " "
echo "Summary: "
echo "----------------"
cat $final | cut -d ',' -f4| sort | uniq -c
echo "----------------"
echo " "
rm tempmovies 2> /dev/null
echo "File $final Created!"
为了使脚本运行,我们首先需要安装包中的 exiftool libimage-exiftool-perl
。所以很快sudo apt-get install libimage-exiftool-perl
就能完成。
该脚本需要在包含所有电影的电影文件夹之外运行(如果您将其保留原样)。它将收集所有电影标题(假设标题是文件夹的名称),它将收集视频的格式和分辨率(假设电影文件夹中只有视频文件(例如,不应有字幕)。最后,如果视频是 720p、1080p 等,它将给出质量的近似值...
另外,由于某种原因,使用 Handbrake 制作的 M4V 格式的电影无法正确读取,并会发出“大文件支持”警告。要解决此问题,请将文件保存为 MKV。如果您已经有 M4V,请使用 MKVMergeGUI,它比 Handbrake 更能快速完成更改。之后,exiftool 应该能够正确读取元数据。