Giter Site home page Giter Site logo

Comments (11)

markreidvfx avatar markreidvfx commented on June 16, 2024

It sounds like the pyaaf2 mxf parser needs to add some more metadata to the aaf. I unfortunately do not have access to interplay. But the best way to debug issues like this is to compare a AAF that works against one the pyaaf2 generates. Are you able to share a sample AAF and MFX?

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

Hi,
I am not sure how to get a valid sample AAF, because every other commercial software we use seems to generate these AAF files under the hood. I don't know how to get these so I can't provide any samples. I am going to create some AAF files via Avid and check if those files are working. Maybe I can post some samples then. Is there any method within pyaaf2 to read the AAF and post all content in a human readable format?

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

Hello again,
I got some AAF samples. For better comparison I generated one AAF file via pyaaf2 and one with Avid MC from the same mxf op1a sources. The Avid MC AAF is working fine in Avid Interplay, the pyaaf2 generated one produces the issues mentioned above.
Avid AAF
pyaaf2 AAF

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

Any update on this topic?
I compared both AAF's and mentioned that the order of mob's, sourceclip and masterclip is different. I iterated over all mob's in the AAF and printed their names. The print order was then different between both AAF's. But I am not sure if this is related to the problem.

It seems to be a bit complicated to filter the output of AAF dumps. I am still searching for a function to filter metadata etc. to easier compare the AAF files.

from pyaaf2.

markreidvfx avatar markreidvfx commented on June 16, 2024

Still haven't had much time to look into this, but the order of the mobs shouldn't matter.

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

@markreidvfx

Thanks to a user from the FFAStrans-Fourm I managed to find out that the problem maybe relates to missing network locators inside the AAF. Maybe there is something wrong with linking external MXF's on a network drive? Is the library tested against this case?

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

I uploaded two sample AAFs with their dot representation. The dot files can be viewed via Graphwiz or similar programs.

There are major differences in what data is stored in the AAF. I think the biggest problem here is that Avid attaches a NetworkLocator to every Source Clip. PyAAF2's link_external_mxf-function does not seem to do that.

This is the textual representation of the .dot file from Avid AAF:

N69 [ width = 4.03, label = "{TimelineMobSlot\n. | SlotID = 1\n | SlotName = A1\n | PhysicalTrackNumber = 369164801\n | EditRate = 25/1\n | Origin = 0\n}"];
N70 [ width = 3.25, label = "{Sequence\n. | DataDefinition = ->Sound\n | Length = 868\n}"];
N71 [ width = 5.2, label = "{SourceClip\n. | DataDefinition = ->Sound\n | Length = 868\n | SourceID = 060a2b340101010101010f0013000\n000-5d414588-5bd5-3c0a-060e2b347f7f2a80\n | SourceMobSlotID = 5\n | StartTime = 15146\n}"];
N72 [ width = 5.2, label = "{PCMDescriptor\n. | SampleRate = 48000/1\n | Length = 1666560\n | ContainerFormat = ->MXF\n | QuantizationBits = 24\n | Locked = False\n | AudioSamplingRate = 48000/1\n | AudioRefLevel = -20\n | ElectroSpatial = ElectroSpatialFormulati\non_SingleChannelMode\n | Channels = 1\n | AverageBPS = 144000\n | BlockAlign = 3\n | SequenceOffset = 0\n | DialNorm = 27\n | DataOffset = 266240\n}"];
N73 [ width = 5.46, label = "{NetworkLocator\n. | URLString = file://ks-sysdir-hr/ks-inges\nt/avid%20mediafiles/mxf/ks-ffastrans/1320\n78_a4.mxf\n}"];

This is the .dot file from pyaaf2 AAF:

N7 [ width = 2.99, label = "{TimelineMobSlot\n. | SlotID = 2\n | SlotName = A1\n | PhysicalTrackNumber = 1\n | EditRate = 48000/1\n | Origin = 0\n}"];
N8 [ width = 4.29, label = "{Sequence\n. | DataDefinition = ->DataDef_Sound\n | Length = 4364160\n}"];
N9 [ width = 5.2, label = "{SourceClip\n. | DataDefinition = ->DataDef_Sound\n | Length = 4364160\n | SourceID = 060a2b340101010101010f0013000\n000-5d414992-266f-3c1a-060e2b347f7f2a80\n | SourceMobSlotID = 1\n | StartTime = 0\n}"];

You can see that both PCMDescriptor and NetworkLocator are missing here.

Do you know how to change this behaviour?

Link to the uploaded AAFs/DOT files:
GoFile

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

Update: I tried using the method create_ama_link which gives me a different AAF with a NetworkLocator. But this NetworkLocator has a different file path. This path is also escaped differently from the Avid produced AAF:

N64 [ width = 4.03, label = "{TimelineMobSlot\n. | SlotID = 1\n | SlotName = V1\n | PhysicalTrackNumber = 352388609\n | EditRate = 25/1\n | Origin = 0\n}"]; N65 [ width = 4.55, label = "{Sequence\n. | DataDefinition = -\>DataDef_Picture\n | Length = 2273\n}"]; N66 [ width = 5.2, label = "{SourceClip\n. | DataDefinition = -\>DataDef_Picture\n | Length = 2273\n | SourceID = 060a2b340101010101010f0013000\n000-5d414992-265f-3c1a-060e2b347f7f2a80\n | SourceMobSlotID = 1\n | StartTime = 4534\n}"]; N67 [ width = 5.2, label = "{CDCIDescriptor\n. | SampleRate = 25/1\n | Length = 2273\n | ContainerFormat = -\>ContainerDef_AAFKLV\n | Compression = 04010202-0132-3102-060e2b3\n40401010a\n | StoredHeight = 540\n | StoredWidth = 1920\n | SampledHeight = 540\n | SampledWidth = 1920\n | FrameLayout = SeparateFields\n | VideoLineMap = 21 584\n | ImageAspectRatio = 16/9\n | ComponentWidth = 10\n | HorizontalSubsampling = 2\n | VerticalSubsampling = 1\n | MediaContainerGUID = 60eb8921-2a02-4406-\n891cd9b6a6ae0645\n | ResolutionID = 3416\n | FrameSampleSize = 568832\n}"]; N68 [ width = 5.46, label = "{NetworkLocator\n. | URLString = file://\\\\ks-sysdir-hr\\ks-\ningest\\Avid MediaFiles\\MXF\\KS-FFASTRAN\nS\\nina-schmidt_www-Stimme-Professor-K1-X\nQD-15~\n}"]; N69 [ width = 5.2, label = "{SourceMob\n. | MobID = 060a2b340101010101010f0013000000\n-5d414992-266f-3c1a-060e2b347f7f2a80\n | Name = Mob\n | LastModified = 2019-07-31 07:56:02.00\n | CreationTime = 2019-07-31 07:56:02.00\n}"];

If I use this AAF to CheckIn into Interplay the assets are recognized correctly (with their network location). The only problem now is, that they are recognized as "AMA" linked. Which is indeed what the function does. So somehow we need the NetworkLocator from this method being written to the AAF within the link_external_mxf method.

I am wondering what the main difference between linked MXF and AMA linking is? Because to me it looks like the same? How does Avid/Interplay know that this is now an AMA linked AAF?

from pyaaf2.

nilskretschmer avatar nilskretschmer commented on June 16, 2024

Hey again,

I managed to find the issue and I was able to make some changes which lead to a working AAF for Avid Interplay usage. For this I made a fork of this library. I modified the link_external_mxf method and sub-methods so that NetworkLocators are written to the AAF file. With this AAF Interplay recognizes all assets and marks them as "native essence" instead of "AMA".

Greetings
Nils

from pyaaf2.

markreidvfx avatar markreidvfx commented on June 16, 2024

Glad to hear you got it working! I took a quick look at your fork and its seems like a simple change, If you'd like to to get the feature added to my branch feel free to create a pull request, I'd gladly merge it!

from pyaaf2.

TrevorAyl avatar TrevorAyl commented on June 16, 2024

Interesting. Did this ever get merged?

from pyaaf2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.