OK, almost all of it looks fine to me now!
Taking just one bit:
so in your example, setting a value of Audio on two essence tracks would
currently look like:
metadata.set(PBCore.ESSENCE_TRACK_TYPE(0), "Audio");
metadata.set(PBCore.ESSENCE_TRACK_TYPE(1), "Audio");
That index related component could potentially live in the Metadata class
itself but if we choose to support multiple levels of structured properties,
i.e.:
company[1]/contact[0]/phoneNumber[2]=555-1234
that might prove difficult to support.
Could you nest the property definitions to solve this?
eg
Property contact = Contact.COMPANY_CONTACT(1);
Property phone = Contact.PHONE(contact, 2);
System.out.println(phone.getName());
// -> company[1]/contact[2]/phone
Otherwise, if you promise to help me update the vorbis parsers with
support for this, I'll vote +1 on adding it in to tika core in this
form... ;-)
Nick
On Tue, 19 Aug 2014, Ray Gauss wrote:
The PBCore metadata class [1] has the indexed essence track properties defined
as:
public static Property ESSENCE_TRACK_TYPE(int index)
{
return getIndexedEssenceTrackProperty(index, "essenceTrackType");
}
which resolve via:
protected static Property getIndexedEssenceTrackProperty(int index, String
elementName)
{
return Property.internalText(
MessageFormat.format(ELEMENT_INSTANTIATION_ESSENCE_TRACK_FORMAT, index) +
PREFIX_PBCORE + Metadata.NAMESPACE_PREFIX_DELIMITER +
elementName);
}
so in your example, setting a value of Audio on two essence tracks would
currently look like:
metadata.set(PBCore.ESSENCE_TRACK_TYPE(0), "Audio");
metadata.set(PBCore.ESSENCE_TRACK_TYPE(1), "Audio");
That index related component could potentially live in the Metadata class
itself but if we choose to support multiple levels of structured properties,
i.e.:
company[1]/contact[0]/phoneNumber[2]=555-1234
that might prove difficult to support.
Regards,
Ray
[1]
https://github.com/AlfrescoLabs/tika-ffmpeg/blob/master/src/main/java/org/apache/tika/metadata/PBCore.java
On August 7, 2014 at 6:21:37 AM, Nick Burch ([email protected]) wrote:
On Wed, 6 Aug 2014, Ray Gauss wrote:
I've updated tika-ffmpeg with a new file with 2 audio tracks and a
subtitle track and added a test. The metadata looks as follows:
pbcore:instantiationDataRate=3511 kb/s
pbcore:instantiationDuration=00:00:01.03
pbcore:instantiationEssenceTrack[0]/pbcore:essenceTrackType=Video
pbcore:instantiationEssenceTrack[0]/pbcore:essenceTrackFrameSize=480x270
pbcore:instantiationEssenceTrack[0]/pbcore:essenceTrackFrameRate=29.97
fps
pbcore:instantiationEssenceTrack[0]/pbcore:essenceTrackDataRate=360 kb/s
pbcore:instantiationEssenceTrack[0]/pbcore:essenceTrackEncoding=h264
pbcore:instantiationEssenceTrack[0]/pbcore:essenceTrackLanguage=eng
pbcore:instantiationEssenceTrack[1]/pbcore:essenceTrackType=Audio
pbcore:instantiationEssenceTrack[1]/pbcore:essenceTrackSamplingRate=48000
Hz
This actually looks better than I'd expected, so I have fewer resistances
now than before
A much more concise representation would be:
Iptc4xmpExt:LocationCreated/Iptc4xmpExt:City
Iptc4xmpExt:LocationCreated/Iptc4xmpExt:CountryName
...
Iptc4xmpExt:LocationShown[0]/Iptc4xmpExt:City
Iptc4xmpExt:LocationShown[0]/Iptc4xmpExt:CountryName
This looks ok-ish to me too
One thing that I am wondering about though:
pbcore:instantiationDataRate=3511 kb/s
pbcore:instantiationDuration=00:00:01.03
stream[0]/pbcore:essenceTrackType=Video
stream[0]/pbcore:essenceTrackFrameSize=480x270
stream[0]/pbcore:essenceTrackFrameRate=29.97 fps
stream[1]/pbcore:essenceTrackType=Audio
stream[1]/pbcore:essenceTrackSamplingRate=48000 Hz
I can see how we can farily easily modify Metadata to accept an optional
stream number when setting key/values, which would automatically prefix
them with stream[number]/
For a property like pbcore:essenceTrackType, and your alternate scheme,
how would you see the method on Metadata look like to set a
pbcore:essenceTrackType to a value of Audio on two different tracks?
Nick