gpt4 book ai didi

linux - 从多个视频中提取元数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:11 26 4
gpt4 key购买 nike

我面临着一个需要 bash 多个方面的挑战。我在 Linux(确切地说是 Debian Stretch)中工作。这是情况(对于我现在考虑的解决方案中写下的所有要点/问题,但我对其他想法持开放态度):

  • 我有各种类型的视频(以及各种大小写),例如 .mp4、.mov、.MOV、.MP4、.avi...,它们位于目录中(并分布在几乎非结构化的目录树中)。为了找到所有我尝试使用 find命令

  • 对于每个视频,我需要提取一些元数据(即文件名、视频时长、文件大小和创建/上次修改日期)。包裹mediainfo产生(以及许多其他内容)所需的字段。mediainfo的输出是一长串字段,格式为:<Tag>\t : <value> 。我需要提取字段的值完整名称持续时间文件大小编码日期

  • 因此,有了所有这些信息,我必须过滤所需的字段值并将它们放入 CSV 文件中。我考虑过使用 sed .

我的目标是通过脚本或少量单独的命令来完成所有这些任务。

想法代码(这段代码是错误的,但你可以得到一个想法):

find . -type f -name "*.[mp4|MP4|mov|MOV|avi|AVI]" -exec mediainfo {} | sed '/Complete name|Duration|File size|Encoded date/p' > myfile.csv \;

您知道如何执行此任务吗?我在结合 find、exec 和 sed 并输出到 csv 时感到非常迷失......

预先感谢您的帮助!

最佳答案

所以我终于设法编写了一个脚本来做到这一点。可能不是最好的方法,但它是:

resFile="myresult.csv"
dstDir="./destination/"
srcDir="./source/"

#first copy all files at same level in dstDir (with preserve and update)
#this is somehow necessary, relative name for MOV files and mediainfo
#do not seem to work together.
find $srcDir -type f \( -name "*.mp4" -o -name "*.mov" -o -name "*.MOV" -o -name "*.avi" \) -exec cp -up {} $dstDir \;

#then for each file, output mediainfo of file and keep only interesting tags. add ### between each file.
find $dstDir -type f \( -name "*.mp4" -o -name "*.mov" -o -name "*.MOV" -o -name "*.avi"\
-exec sh -c " mediainfo --Output=XML {} | sed '1,15!d;/Duration\|Complete\|File_size\|Encoded_date/!d' >> $resFile && echo '########' >> $resFile" \;

#removes tags : <Duration>42s 15ms</Duration> -> 42s 15ms
sed -i 's/^<.*>\(.*\)<.*>/\1/I' $resFile

#Extract exact filename (and not relative)
sed -i 's/^\.\/.*\/\(.*\)\.[mp4|MOV|mov|avi|MP4]/\1/' $resFile

#Puts fields for a file on a unique line separated with commas
sed -i 'N;s/\n/,/;N;s/\n/,/;N;s/\n/,/;N;s/\n/,/' $resFile

#remove all trailing ###
sed -i 's/,#*$//' $resFile

如果有人有改进代码的想法,我仍然会感兴趣。我“最小化”了一点,我的实际代码更加模块化并执行一些检查

关于linux - 从多个视频中提取元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com