问题标签 [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.
ios - 如何在 iOS 的视频(.mov)中添加元数据
我已经通过手机的摄像头用AVCaptureMovieFileOutput
Object 捕捉视频,
我想将新的元数据添加到文件中,
我尝试使用AVAssetExportSession
它,它有效!
但是我猜它花费了很多时间,这种方法重新编码了文件,
我只想添加新的元(位置),
我尝试使用setMetadata
方法AVCaptureMovieFileOutput
但我不知道该怎么做,
我试试
元:
第一的:
但我无法得到代表的回应。
然后:
我可以正常开始记录,但输出文件不包含任何信息!
有人有什么建议吗?谢谢!
ios - 当我使用它来调整预览层的大小时,Objective C 转换的MetadataObjectForMetadataObject 使大小不稳定
只有当我使用它来调整 previewLayer 的大小时,transformedMetadataObjectForMetadataObject 返回的问题是不稳定的(每次更新时两个大小之间的大小跳转)大小。
创建 previewLayer 的代码(previewViewLayer 是 CALayer)
swift - 如何在swift3中设置AVMetadataItem的标识符?
描述:
我正在尝试设置identifier
of AVMetadataItem
in ,就像这个苹果视频swift3
中提到的那样。但是,该视频是 swift3 之前的。
它swift2
看起来像这样:
但是,在swift3
那个构造函数中不再存在。
有一个空的构造函数和这个:
似乎没有任何方法可以设置identifier
.
问题:
我如何identifier
设置AVMetadataItem
in swift3
?
编辑:
按照卢卡斯的建议尝试使用 AVMutableMetadataItem() 。
在这里使用:
它编译并运行,但在视频播放时不建议导航标记(又名章节)。我错过了什么?
video - 将 AVMetadataItem 的 GPS 字符串转换为 CLLocation
AVAsset(或 AVURLAsset)在一个数组中包含 AVMetadataItems,其中一个可能是公共密钥 AVMetadataCommonKeyLocation。
该项目的值是一个字符串,其格式如下:
+39.9410-075.2040+007.371/
如何将该字符串转换为 CLLocation?
swift3 - 如何使用 Swift 从播客中获取所有相关数据或元数据?
我目前正在使用 Swift 3 创建播客播放器,但在访问与播客文件关联的所有“隐藏”数据(元数据)时遇到问题。
具体来说,在 Apple 的 Podcast 应用程序中,它们显示“评论”或更确切地说是详细描述。使用 MPMediaPlayer 时,此信息不可用,这是迄今为止我编写整个应用程序的方式。
我发现这篇文章似乎在正确的轨道上,但对我使用 Swift 来说不够具体: 从 iPodLibrary 获取播客元数据
如何访问此附加信息?
或者有没有办法在我的 Swit 3 应用程序中实现链接代码(Obj-C)?
编辑:
好的,我正在接近解决方案。但是,我现在无法弄清楚如何获取以下结构中的特定键。
首先,这是我当前的代码,我在其中向该函数发送了一个播客(项目):
它为给定的播客生成此输出:
我正在尝试隔离key=TDES
和/或的文本/值identifier=id3/TDES
ios - 如何将 AVMetaDateItem 写入文件并稍后访问它?
我创建了这个函数来修剪音频文件的特定部分。在函数中,我将两个 AVMetadataItems 写入新文件。稍后我试图通过使用 AvURlAsset 敲击 URL 然后访问 AVAsset 元数据 /commonMetadata 来访问这些项目,并且两者都不包含我之前添加的项目。
所以我在导出文件之前检查了发生了什么,即使我给了 exporter.metadata 一个数组哦 AVMetadataitem,它在导出之前似乎仍然为零。
任何人都知道是什么问题?
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”;
我试过:
我不确定我在这里缺少什么。
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 是从零开始的节目索引。如果省略元数据说明符,则默认为全局。
默认情况下,全局元数据从第一个输入文件复制,每个流和每个章节的元数据与流/章节一起复制。通过创建相关类型的任何映射来禁用这些默认映射。负文件索引可用于创建仅禁用自动复制的虚拟映射。
附言
- 苹果似乎没有正式文件
stik
。MPMediaType略有不同。相反的指针将不胜感激。 - 理想情况下,我想自动添加
*.mp3
子目录中的所有文件,按字母顺序排序(共享相同的编码器设置)作为单个.mp4
容器中的章节,但这可能值得一个单独的问题。
objective-c - 如何将 AVMetadataItem 值转换为 NSDate 或 NSString?
我正在尝试获取视频的拍摄日期并在 Xcode 中使用它填充 TextView。我选择了视频,然后从 AVMetadataItem creationDate 中获取了日期。我可以将其打印为 NSLog,但我想将其转换为字符串或 NSData。这是我在objective-c中的代码
在.h
在.m
在日志中,我得到了 creationDate:Tue Jan 26 09:44:39 2021,这是我拍摄视频的日期。我现在的问题是将其转换为可用的形式。
当我尝试
我收到警告
无论我尝试什么,我基本上都会收到同样的警告。
有人可以帮我完成这项工作吗?
objective-c - 为什么其他属性需要可空性类型说明符
我正在获取使用创建照片的日期
在我的 .h 文件中。然后我得到我的视频资产的 AVMetadataItem 的值。
这很好用,但是当我将它添加到我的 .h 文件时,我的所有其余属性都会收到一条警告,指出它们缺少可空性类型说明符,即使当我没有列出此属性时它们不需要它。如何在不向 .h 文件中的每个其他属性等添加可空性说明符的情况下执行此操作?