问题标签 [avmetadataitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2334 浏览

ios - 如何在 iOS 的视频(.mov)中添加元数据

我已经通过手机的摄像头用AVCaptureMovieFileOutputObject 捕捉视频,

我想将新的元数据添加到文件中,

我尝试使用AVAssetExportSession它,它有效

但是我猜它花费了很多时间,这种方法重新编码了文件,

我只想添加新的元(位置),

我尝试使用setMetadata方法AVCaptureMovieFileOutput

但我不知道该怎么做,

我试试

元:

第一的:

但我无法得到代表的回应。

然后:

我可以正常开始记录,但输出文件不包含任何信息!

有人有什么建议吗?谢谢!

0 投票
1 回答
311 浏览

ios - 当我使用它来调整预览层的大小时,Objective C 转换的MetadataObjectForMetadataObject 使大小不稳定

只有当我使用它来调整 previewLayer 的大小时,transformedMetadataObjectForMetadataObject 返回的问题是不稳定的(每次更新时两个大小之间的大小跳转)大小。

创建 previewLayer 的代码(previewViewLayer 是 CALayer)

0 投票
1 回答
2465 浏览

swift - 如何在swift3中设置AVMetadataItem的标识符?

描述:

我正在尝试设置identifierof AVMetadataItemin ,就像这个苹果视频swift3中提到的那样。但是,该视频是 swift3 之前的。

swift2看起来像这样:

但是,在swift3那个构造函数中不再存在。

有一个空的构造函数和这个:

似乎没有任何方法可以设置identifier.

问题:

我如何identifier设置AVMetadataItemin swift3

编辑:

按照卢卡斯的建议尝试使用 AVMutableMetadataItem() 。

在这里使用:

它编译并运行,但在视频播放时不建议导航标记(又名章节)。我错过了什么?

0 投票
2 回答
497 浏览

video - 将 AVMetadataItem 的 GPS 字符串转换为 CLLocation

AVAsset(或 AVURLAsset)在一个数组中包含 AVMetadataItems,其中一个可能是公共密钥 AVMetadataCommonKeyLocation。

该项目的值是一个字符串,其格式如下:

+39.9410-075.2040+007.371/

如何将该字符串转换为 CLLocation?

0 投票
1 回答
1420 浏览

swift3 - 如何使用 Swift 从播客中获取所有相关数据或元数据?

我目前正在使用 Swift 3 创建播客播放器,但在访问与播客文件关联的所有“隐藏”数据(元数据)时遇到问题。

具体来说,在 Apple 的 Podcast 应用程序中,它们显示“评论”或更确切地说是详细描述。使用 MPMediaPlayer 时,此信息不可用,这是迄今为止我编写整个应用程序的方式。

我发现这篇文章似乎在正确的轨道上,但对我使用 Swift 来说不够具体: 从 iPodLibrary 获取播客元数据

如何访问此附加信息?

或者有没有办法在我的 Swit 3 应用程序中实现链接代码(Obj-C)?

编辑:

好的,我正在接近解决方案。但是,我现在无法弄清楚如何获取以下结构中的特定键。

首先,这是我当前的代码,我在其中向该函数发送了一个播客(项目):

它为给定的播客生成此输出:

我正在尝试隔离key=TDES和/或的文本/值identifier=id3/TDES

0 投票
1 回答
493 浏览

ios - 如何将 AVMetaDateItem 写入文件并稍后访问它?

我创建了这个函数来修剪音频文件的特定部分。在函数中,我将两个 AVMetadataItems 写入新文件。稍后我试图通过使用 AvURlAsset 敲击 URL 然后访问 AVAsset 元数据 /commonMetadata 来访问这些项目,并且两者都不包含我之前添加的项目。

所以我在导出文件之前检查了发生了什么,即使我给了 exporter.metadata 一个数组哦 AVMetadataitem,它在导出之前似乎仍然为零。

任何人都知道是什么问题?

0 投票
1 回答
769 浏览

ios - 如何检查 AVMetadataItem 项目(如 Title、Artist 等)是否为空或不存在?

我正在构建一个音乐应用程序,我正在尝试使用这段代码获取 MP3 文件元数据:

代码工作正常。唯一的问题是,当可变数组被填充时,它们以下列方式进行:

  • SongNameMutableArray => [song1, song2, song3, songX];
  • ArtistMutableArray => [Artists1, Artist3, Artist 10, ArtistX];

因为并非所有歌曲的元数据中都有艺术家。

根据代码的这个特定部分

如果找到的项目是艺术家,则将其插入数组中。

现在我的问题是如何检测一首歌曲何时在元数据中没有艺术家?这样我就可以在 ArtistMutableArray => [Artists1, null, Artist3, null, Artist 5, ArtistX] 中插入“null”;

我试过:

我不确定我在这里缺少什么。

0 投票
0 回答
331 浏览

ffmpeg - 使用 FFmpeg 将 MP3 有声读物重新混合为 Apple 友好的 MP4 时的元数据

由于显然无法通过 ID3 标签或文件扩展名告诉 iTunes 或 iOS MP3 包含有声读物(或电台播放),我想将它们重新组合成带有文件扩展名的MPEG-4 Part 14.m4b容器(无需转换,即转码或将音频流重新编码为 AAC)并设置正确的媒体类型标签(stik= 2 Audiobook)。

从输出文件名自动检测预期格式时,FFmpeg(撰写本文时版本为 4.2.1)切换其-f ipod兼容模式为.m4a.m4b,这意味着它显然不会接受 MP4 容器中的 MPEG 1/2 第 3 层音频:

[ipod @ 00000223bd927e40]
在流 #0 中找不到编解码器 mp3 的标记,容器中当前不支持编解码器 无法
为输出文件 #0 写入标头(编解码器参数不正确?):参数无效

我可以覆盖它(或者在使用之后更改文件扩展名"outfile.mp4"):

转换和 FFprobe 所需的时间接近于零,这让我确信重新混合是成功的:

不过,自定义 ID3v2 标记字段和没有已知 MP4 同源的标记字段已被删除。我想保存它们!

-map_metadata如果可能的话,我该怎么做?

如何使用-metadata添加必要的标签字段 (atom: stik) 将文件标记为有声读物 - 更笼统地说:
如何使用 FFmpeg 添加手动指定的元数据标签字段(例如 MP4 atom 或 box)?

FFmpeg 文档

  • -metadata[:metadata_specifier] key=value (output,per-metadata)
    设置元数据键/值对。
  • -map_metadata[:metadata_spec_out] infile[:metadata_spec_in] (output,per-metadata)
    从 infile 设置下一个输出文件的元数据信息。请注意,这些是文件索引(从零开始),而不是文件名。可选的 metadata_spec_in/out 参数指定要复制的元数据。元数据说明符可以具有以下形式:
    • g
      全局元数据,即适用于整个文件的元数据
    • s[:stream_spec]
      每个流元数据。stream_spec 是流说明符,如流说明符一章中所述。在输入元数据说明符中,复制第一个匹配流。在输出元数据说明符中,所有匹配的流都被复制到。
    • c:chapter_index
      每章元数据。chapter_index 是从零开始的章节索引。
    • p:program_index
      每个程序的元数据。program_index 是从零开始的节目索引。

如果省略元数据说明符,则默认为全局。

默认情况下,全局元数据从第一个输入文件复制,每个流和每个章节的元数据与流/章节一起复制。通过创建相关类型的任何映射来禁用这些默认映射。负文件索引可用于创建仅禁用自动复制的虚拟映射。

附言

  • 苹果似乎没有正式文件stikMPMediaType略有不同。相反的指针将不胜感激。
  • 理想情况下,我想自动添加*.mp3子目录中的所有文件,按字母顺序排序(共享相同的编码器设置)作为单个.mp4容器中的章节,但这可能值得一个单独的问题。
0 投票
0 回答
40 浏览

objective-c - 如何将 AVMetadataItem 值转换为 NSDate 或 NSString?

我正在尝试获取视频的拍摄日期并在 Xcode 中使用它填充 TextView。我选择了视频,然后从 AVMetadataItem creationDate 中获取了日期。我可以将其打印为 NSLog,但我想将其转换为字符串或 NSData。这是我在objective-c中的代码

在.h

在.m

在日志中,我得到了 creationDate:Tue Jan 26 09:44:39 2021,这是我拍摄视频的日期。我现在的问题是将其转换为可用的形式。

当我尝试

我收到警告

无论我尝试什么,我基本上都会收到同样的警告。

有人可以帮我完成这项工作吗?

0 投票
1 回答
31 浏览

objective-c - 为什么其他属性需要可空性类型说明符

我正在获取使用创建照片的日期

在我的 .h 文件中。然后我得到我的视频资产的 AVMetadataItem 的值。

这很好用,但是当我将它添加到我的 .h 文件时,我的所有其余属性都会收到一条警告,指出它们缺少可空性类型说明符,即使当我没有列出此属性时它们不需要它。如何在不向 .h 文件中的每个其他属性等添加可空性说明符的情况下执行此操作?