【问题标题】:Powershell script to get the metadata field "writing application"获取元数据字段“编写应用程序”的 Powershell 脚本
【发布时间】:2022-07-03 07:57:00
【问题描述】:

我正在使用 GetMetaData 脚本的修改版本,该脚本最初由 Microsoft (https://devblogs.microsoft.com/scripting/hey-scripting-guy-how-can-i-find-files-metadata/) 的 Ed Wilson 编写,然后由用户 wOxxOm 修改,此处为 https://stackoverflow.com/a/42933461/5061596。我正在尝试分析我所有的 DVD 和 BluRay 撕裂,看看是用什么工具来创建它们的。主要是我想检查哪些是我用 Handbrake 压缩的,哪些是直接来自 MakeMKV 的。问题是我找不到这个字段。

如果我使用“库存”脚本并将它查找的属性数量从 0 - 266 更改为 0 - 330,我会找到额外的文件信息,如电影长度、分辨率等。但我找不到使用的工具。例如,MediaInfo Lite 工具报告的内容如下:

但是查看元数据我得到了类似这样的东西,没有“编写应用程序”属性:

Name              : Ad Astra (2019).mkv
Size              : 44.1 GB
Title             : Ad Astra
Length            : 02:03:02
Frame height      : 2160
Frame rate        : ‎23.98 frames/second
Frame width       : 3840
Total bitrate     : ‎51415kbps
Audio tracks      : TrueHD S24 7.1 [Eng]
Contains chapters : Yes
Subtitle tracks   : PGS [Eng], PGS [Eng]
Video tracks      : HEVC (H265 Main 10 @L5.1)

我该如何找到该属性,或者它不是我可以通过 PowerShell 提取的东西吗?

编辑:我正在寻找的信息是在 Windows 资源管理器中查看文件的属性和详细信息选项卡,所以如果资源管理器可以看到它,我认为我应该能够:

【问题讨论】:

  • 据我所知,windows 显示的元数据只是“插件”所知道的。如果您安装具有此类资源管理器插件的应用程序,则它允许 Windows 获取该元数据……但它仅显示该“启用程序”已公开的内容。您可能需要使用 3rd 方工具来获取信息。
  • MediaInfo Lite 确实有一个 CLI,我确信它可以从 GUI 中获取数据,但我真的希望我可以在不使用第三方程序的情况下获取它。
  • 不幸的是,我认为您无法使用外部工具。 PoSh 可以调用它并捕获要使用的信息......特别是如果您可以获得 CSV 或 JSON 格式的输出。
  • 所以我刚刚从 Windows 资源管理器中检查了标准文件“属性”,它确实将该字段显示为“工具名称”。所以也许有机会。
  • 啊!我没有想法......我会回去潜伏。祝你好运! [咧嘴一笑]

标签: powershell mkv mediainfo


【解决方案1】:

编辑:实际上,这似乎更可靠。到目前为止,mediainfo 可以读取的任何文件都可以使用。

$FILE = "C:\test.mkv"
$content = (Get-Content -Path $FILE -First 100) + (Get-Content -Path $FILE -Tail 100)
if(($content -match '\*data')[0] -match '\*data\W*([\w\n\s\.]*)'){
    write-host "Writing Application:" $Matches[1]
    exit
}elseif(($content -match 'M€.*WA(.*)s¤')[0] -match 'M€.*WA(.*)s¤'){
    write-host "Writing Application:" $Matches[1]
}

它看起来像文件中 *data 之后指定写入器的最后一个字节,所以试试这个:

(Get-Content -Path "c:\video.mkv" -Tail 1) -match '\*data\W*(.*)$' | out-null
write-host "Writing Application:" $Matches[1]

在导致“HandBrake 1.5.1 2022011000”的测试文件中

我不确定是什么标准指定了这个抱歉。文件中的第一行数据也有很多有用的信息,例如:

ftypmp42 mp42iso2avc1mp41 free6dÊmdat ôÿÿðÜE齿ÙH·–,Ø Ù#îïïx264 - 核心 164 r3065 ae03d92 - H.264/MPEG-4 AVC 编解码器 - Copyleft 2003-2021 - http://www.videolan.org/x264.html - 选项:cabac=1 ref=1 :0:0 分析=0x1:0x111 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 格子=0 8x8dct=0 cqm=0 deadz one=21,11 fast_pskip=1 chroma_qp_offset=0 线程=18 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1 interlaced=0 Bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin =0 qpmax=69 qpstep=4 vbv_maxrate=14000 vbv_bufsize=14000 crf_max=0.0 nal_hrd=none Filler=0 ip_ratio=1.40 aq=1:1.00

我无法复制您使用 Windows 资源管理器查看信息的成功,该字段对我来说是不可见的,即使我可以使用 MediaInfo 等查看它

【讨论】:

  • 谢谢你的代码,它似乎正在处理我测试过的几个 MKV 文件,我确信我不会把那个搜索表达式写下来,我会的拿走了整个字符串并做了一个糟糕的中间或搜索命令,所以我很感激。现在下载一些示例 MP4 和其他媒体,看看数据部分是否相同。并且还可以查看更多内容,看看里面还有什么。
  • 对于 Windows 资源管理器,“工具名称”出现在两台我安装了 K-Lite Codec Pack 和 MediaInfo 的机器上,但在全新的 Windows 10 安装中没有显示。所以出于好奇,我安装了没有媒体信息的 K-Lite 编解码器“基本”包,工具名称确实出现了。 Explorer 必须利用以某种方式安装的编解码器之一。安装编解码器之前:imgur.com/PU77XY6 安装编解码器之后:imgur.com/Mb1GtCw 使用的示例文件:filesamples.com/formats/mkv 有点整洁。
【解决方案2】:

我没有答案,因为我正在尝试获取视频文件的所有信息 你可以分享你的剧本吗?你已经完成了我想要对部分进行的操作

【讨论】:

    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2016-08-08
    • 2010-09-28
    • 2011-03-14
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多