是否有用于编辑 EXIF、IPTC 和 XMP 格式的图像元数据的图形应用程序?最好是免费的并且适用于 Windows。
某些图像编辑器和 Windows 资源管理器属性窗口允许编辑某些元数据,但也会破坏其他元数据。exiv2 命令行工具在这方面非常可靠,但肯定也有一个很好的图形程序吗?
我正在尝试组织大约 500 篇期刊文章的集合,以 .pdf 和 .djvu 格式的组合存储。我希望能够按作者、标题、期刊名称、年份和主题关键字对集合进行排序。有没有办法在 Windows 文件系统中为这些信息创建元数据字段(类似于 .mp3 文件如何带有专辑、标题、曲目长度等标签)?或者,如果没有,是否有一些软件(最好是免费的)可以做类似的事情?
我有一些视频文件已转换为 MP4,但不完全正确。当我使用 exiftool 检查元数据时,我看到以下元数据值:
Duration : 0:11:23
Track Duration : 0:11:23
Media Duration : 0:04:13
Run Code Online (Sandbox Code Playgroud)
最后一项是不正确的。在 VLC 媒体播放器中,视频播放得很好,但我用来在网络应用程序中播放视频的工具 (Flowplayer) 会认真对待“媒体持续时间”值并截断视频。
为了修复我尝试过的元数据
exiftool -"Media Duration"="0:11:23" video_1.mp4
Run Code Online (Sandbox Code Playgroud)
但我得到了
Warning: Sorry, Media is not writable
Nothing to do.
Run Code Online (Sandbox Code Playgroud)
须藤没有帮助。根据其手册页和网站,exiftool可以读取和写入 MP4 文件上的元数据,但“如果 ExifTool 检测到文件格式存在重大问题,则它不会重写文件。”
我该如何修复这些文件?
编辑:我对 ffmpeg 或 mediainfo 没有运气。
我有超过 2000 个 .mov 文件,这些文件是使用“获取信息”窗口的“评论”部分精心记录的(有人在“获取信息”中的“评论”下列出了每个 .mov 中的特色剪辑)。我希望能够在没有驱动器的情况下搜索这些数据。是否可以将多个文件中的“获取信息”数据提取到一个 CSV 文件中?
我有一个 360° 视频,想使用 ffmpeg 将其横向移动,以便在播放器中打开视频时的默认视点会移动。我发现这个问题(如何在 ffmpeg 中水平偏移视频?)帮助我完成了转换,但是当我使用这种方法来移动视频时,视频的侧数据(包含它是等距矩形格式的信息) ) 离开了。
这是ffprobe在我的输入文件上使用的相关部分:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Duration: 00:00:05.01, start: 0.000000, bitrate: 57592 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuvj420p(pc), 3840x1920 [SAR 1:1 DAR 2:1], 57515 kb/s, 29.95 fps, 29.95 tbr, 29948 tbn, 59.90 tbc (default)
Metadata:
handler_name : VideoHandler
Side data:
spherical: equirectangular (0.000000/0.000000/0.000000)
然后我使用上面链接中描述的覆盖过滤器,如下所示:
ffmpeg -i test.mp4 -filter_complex "[0:v][0:v]overlay=960:0[bg]; [bg][0:v]overlay=960-W,format=yuvj420p[out]" …
有时,我必须将播放列表引用的文件从蓝光光盘转换为 MKV 文件。我通常ffmpeg在 Windows 下使用命令行,如下所示:
"C:\Program Files\ffmpeg\bin\ffmpeg.exe" -analyzeduration 1G -probesize 1G -fix_sub_duration -playlist 00001 -i "bluray:D:\Daten\Temp\My Blu-Ray Disc" -map 0:0 -map 0:1 -map 0:2 -codec copy c:\Users\User\Desktop\result.mkv
Run Code Online (Sandbox Code Playgroud)
到目前为止,这有效。
但是,我正在寻找一种方法,可以将章节标题(元数据)直接添加到生成的 MKV 文件中,并一次性进行初始转换。
我知道我可以在创建 MKV 文件后将章节标题添加到其中。然而,这意味着再次复制(即解复用和重新复用)它。由于文件有时约为 40 GB,这会对磁盘造成不可忽视的磨损。
因此我想知道如何更改命令行,以便在第一次转换期间将章节标题元数据一次性插入到 MKV 文件中。我尝试过以下命令行:
"C:\Program Files\ffmpeg\bin\ffmpeg.exe" -analyzeduration 1G -probesize 1G -fix_sub_duration -playlist 00001 -i "bluray:D:\Daten\Temp\My Blu-Ray Disc" -i metadata.txt -map 0:0 -map 0:1 -map 0:2 -map_metadata 1 -codec copy c:\Users\User\Desktop\result.mkv
Run Code Online (Sandbox Code Playgroud)
是metadata.txt这样的:
[CHAPTER]
TIMEBASE=1/1000
START=0
END=9999
title=Chapter Title …Run Code Online (Sandbox Code Playgroud) 我想从该站接收元数据:
http://ice1.somafm.com/deepspaceone-128-mp3
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我通过 shell 执行了以下请求:
$ GET -H "Icy-MetaData: 1" http://ice1.somafm.com/deepspaceone-128-mp3
Run Code Online (Sandbox Code Playgroud)
尽管我期望收到该Icy-metaint值,但它不会抛出任何输出。
我还做了以下请求:
$ HEAD http://ice1.somafm.com/deepspaceone-128-mp3
Run Code Online (Sandbox Code Playgroud)
这产生:
200 OK
Cache-Control: no-cache, no-store
Connection: Close
Date: Sun, 24 Apr 2016 07:23:14 GMT
Pragma: no-cache
Server: Icecast 2.4.0-kh3
Content-Type: audio/mpeg
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
Access-Control-Allow-Methods: GET, OPTIONS, HEAD
Access-Control-Allow-Origin: *
Client-Date: Sun, 24 Apr 2016 07:21:38 GMT
Client-Peer: 173.239.76.148:80
Client-Response-Num: 1
Icy-Br: 128
Icy-Genre: Ambient Space
Icy-Name: Deep Space One: Deep ambient …Run Code Online (Sandbox Code Playgroud) 我想,我的问题很简单……
有时我喜欢从我的网络服务器下载大型 MKV 文件,并在下载时播放它们。但是,如果我对已转码的 MKV 文件执行此操作,则该文件通常会显示它比实际短得多,并且在播放结束后它将继续播放并显示不正确的时间......例如它将显示 2:50/2:50 但继续播放,但是如果我尝试使用箭头键向后搜索,播放器将崩溃或跳回文件的开头。
那么,如何在编码时将所有元数据移动到文件的开头,以便播放器知道文件的长度而不需要整个文件?您可以mp4通过 using对格式执行此操作-movflags faststart,但如何为 执行此操作mkv?
如果已经在其他地方询问并回答了这个问题,我很抱歉,我想不出比我使用的更好的关键字,而且我使用的关键字没有产生任何结果。
我目前使用以下命令通过管道.ogg传输多个文件ffmpeg
for x in *.ogg; do ffmpeg -i "$x" -ab 320k -write_id3v2 1 "`basename "$x" .ogg`.mp3"; done
Run Code Online (Sandbox Code Playgroud)
它工作并打印出以下信息
Output #0, mp3, to '10 Ft. Ganja Plant_Bass Chalice_10_Bass Chalice.mp3':
Metadata:
TSSE : Lavf57.83.100
Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
TITLE : Bass Chalice
ARTIST : 10 Ft. Ganja Plant
GENRE : Reggae
DATE : 2005
ALBUM : Bass Chalice
track : 10
encoder : Lavc57.107.100 libmp3lame
Run Code Online (Sandbox Code Playgroud)
但是当我将文件加载到 iTunes 时,id3 标签不存在。
我尝试在有和没有-write_id3v2 …
文件夹具有元数据,例如名称、修改日期、权限等。是否可以仅用空文件夹填满整个驱动器?
metadata ×10
ffmpeg ×4
linux ×2
matroska ×2
audio ×1
command-line ×1
conversion ×1
csv ×1
disk-space ×1
exif ×1
exiftool ×1
filesystems ×1
finder ×1
hard-drive ×1
http ×1
images ×1
libav ×1
macos ×1
mp4 ×1
sorting ×1
ssd ×1
video ×1