freeMXF.org

Open discussion about freeMXF.org tools and MXF in general
It is currently Thu Mar 28, 2024 9:26 am
Board index » MXF Categories » freeMXF.org Tools



Post new topic Reply to topic  [ 21 posts ]  Go to page 1, 2  Next
Author
Search for:
Message

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Thu Nov 19, 2009 3:13 pm 
Top  
Hi,
i'm new here. so glad to get you to know. :)

i am tyring to demux an mxf with the mxflib under windows. the first thing i noticed, is that there is no mxfsplit.exe just a mxfcrypt. so i tryed mxfcrypt.exe with parameter -d but i get this errors:

ERROR: XML FATAL ERROR: Failed to load dictionary "dict.xml"

ERROR: XML FATAL ERROR: Failed to load dictionary "DMS_Crypto.xml"

hope you can help me.

greetings
m0nKeY

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Fri Nov 20, 2009 11:35 am 
Top  
What version of the test applications are you using?

If you download any of the windows executables it should have mxfsplit.exe in there?

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Fri Nov 20, 2009 11:38 am 
Top  
I'm using this "mxfcrypt-noDLL-1.0.0-win32.exe.zip".

Now i understand my problem... I used the link automatic generated by sourceforge, but that was the wrong file. :)

Ok, i got now a mxfsplit.exe but now i have a different problem, it doesn't demux my MXF.

Code:
MXFlib File Splitter

Partition    1 at 0x00000000 for BodySID 0x0002

Elements for BodySID 0x0002
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010202] L=0x000000
60
GC Element: L=0x0003d090 File=_0002-G05010100.Stream NEW
GC Element: L=0x0000f004 File=_0002-G06011000.Stream NEW
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
EXTRANEOUS (non-GC) Element: K=[060e2b34.0243.0101.0d010301.04010201] L=0x000000
43
GC Element: L=0x0003d090 File=_0002-G05010100.Stream
GC Element: L=0x0000f004 File=_0002-G06011000.Stream
EXTRANEOUS (non-GC) Element: K=[060e2b34.0205.0101.0d010301.04010100] L=0x000000
39
Excessive Extraneous Elements in this Partition...skipping the rest

Partition    2 at 0x18a1dc00 for BodySID 0x0000

No Body in this Partition

Closing _0002-G05010100.Stream, size 0x40d990
Closing _0002-G06011000.Stream, size 0xff044

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Sat Nov 21, 2009 10:14 am 
Top  
It looks like it succeeded from the text you quoted.

There are four elements in that file (and from the info it seems to be D10).

The first two elements are not essence, but system items - these are discarded as extracting them would almost certainly not be useful.

The next two are the video and audio and are extracted into files called _0002-G05010100.Stream and _0002-G06011000.Stream.

The video file should be a playable MPEG-2 Elementary Stream. Just rename is as <something>.mpg or .m2v

The audio is AES formatted PCM audio and is unlikely to be playable by most applications. However it is pretty easy to write a small program to convert this to wave format.

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Thu Nov 26, 2009 9:43 am 
Top  
I'm sorry, but that did not help me. you are right there 2 stream files, but one file is 4MB and the other one is 1 MB. The mpegvideostream should be something like 500 MB.
This MXF file is from a sony xdcam, could that help you? i know that there are many differences between MXF Containers.

Greetings
m0nKeY

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Thu Nov 26, 2009 10:39 am 
Top  
Ah, this seems to be an old bug that was fixed in version 1.0.1

I did not upload a set of executables for this release, so I have now done so. If you download the latest file it should work.

Sorry for the confusion!

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Thu Nov 26, 2009 11:14 am 
Top  
In the time you answered me, i tried the 1.0.1 Beta under Ubuntu. Now i got 2 stream files too. the first is 80MB and it is an mpeg stream, but only a few seconds of the whole clip and the secodn one is 17MB and i can't play it as wave neather as m2v.

P.S.: I am unable to download the new 1.0.1 from sourceforge. "Unable to find any mirror information for the "/mxflib-beta-1.0.1-win32.exe.zip" file. Please select another file. "

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Fri Nov 27, 2009 6:10 pm 
Top  
I'm not sure what is going on with SourceForge - it may be that their new system takes time for downloads to become available.

I have tried a 4GB file with the latest 1.0.1 executables and it produced a 3.8GB MPEG2 file that played the whole way through and a 178MB audio file that is not playable by normal tools (but could be reformatted with a bit of simple code if required)

If the new files are still not downloadable in a couple of days I will upload them to this site.

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Fri Nov 27, 2009 6:26 pm 
Top  
Thanks,
strange but the windows lib works correct for me now. i could download right after i read this post from you.

my last qeustions is now, how can i reformat the audiostream or is there any programm which plays AES3 data. I tried to the mxfsplit parameter -w because i read this thread. But if i rename the file to wav, its only noise. I opened it with audacity and there are 8 channels. so why is this only noise?

greetings

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Sat Nov 28, 2009 9:41 am 
Top  
You will need to do a slightly different conversion to get a wave file. I do have some code that does this, but at the moment it is not able to be added to the open source library (I wrote this for a different project) but I can tell you what needs to be done. If you are able to write simple programs this should be quite quick to do.

Extract the audio stream without using -w.

Determine the number of active audio streams and the number of bits per sample (16 or 24). Both available from the metadata in the file.

You will need to be able to write a wave header, but that is quite simple with the information here

The process is then:
Code:
WriteWaveHeader()

For each sample of input data
{
    For channel is 1 .. 8
    {
        Read 4 bytes from the source data
        If channel is less than or equal to number of channels
        {
            If data is 16 bits
                build a 16-bit word from source byte 2, top 4 bits,
                    followed by byte 3 bottom 4 bits, then byte 3 top 4 bits,
                    then byte 4 bottom 4 bits
           
            If data is 24 bits
                build a 24-bit word from source byte 1, top 4 bits,
                    followed by byte 2 bottom 4 bits, then byte 2, top 4 bits,
                    then byte 3 bottom 4 bits, then byte 3 top 4 bits,
                    then byte 4 bottom 4 bits

            Write the new value to the output file
        }
    }
}

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Sat Nov 28, 2009 9:30 pm 
Top  
i'm no programmer, but i can wrie simple programms. this just dont look for me like a simple programm. :)

but why is this paramater -w in mxfsplit if it doesnt work? i read a little bit in the source code and mxfsplit does nothing else then adding a wave header to the aes3 pcm stream.

greetings
m0nKeY

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Sun Nov 29, 2009 12:23 pm 
Top  
I would expect that anyone with experience of bit-wise operations in C would have no significant difficulty with the code described above. Unfortunately I cannot currently go any further without risking upsetting the owners of the code I wrote to do the same job. I hope to get permission to release it as part of MXFLib soon!

The -w parameter in MXFSplit is there for converting uncompressed SMPTE 382M audio (also called AESBWF or AES/BWF) into wave files. It is not intended for non SMPTE 382M audio.

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Mon Jan 04, 2010 8:19 pm 
Top  
Hi,
its me again. :)
I found the time to write this programm to convert the audiostream in my mxf to wave. but i got some serious concerns about the audiodataformat in my MXF.
Am i right, if i think your pseudocode is for the conversion of AES3 data to wave as its discribed in the standard from the AES?
Because my MXF is a file from a XDCAM and its D10 Essence Data. Its recorded over SDI. I think there is a difference between AES3 Standard like data and AES3 data recorded over SDI into a MXF, because i dont find the preambles definded in the AES3 Standard in my audiostream. Thats because i'm not sure if the conversion you descibe is right for my audiostream.

I hope you can help me.
Greetings
Sebastian

 Profile  

Offline
Insider

Joined: Thu Apr 15, 2004 10:39 am
Posts: 198
Location: Scotland

Post Posted: Tue Jan 05, 2010 2:38 pm 
Top  
Odd, because this code is almost exactly what I use and it works fine on my XDCAM test files.

Are you able to send me your conversion code to see if I can see what is different? Unfortunately I can't send you mine as I don't own full rights to it!

 Profile WWW  

Offline
Board User

Joined: Thu Nov 19, 2009 3:07 pm
Posts: 12

Post Posted: Tue Jan 05, 2010 3:58 pm 
Top  
Hi,
now know who you are. :) You worked by your self on the standartisation of MXF. Right now i'm reading "the mxf book" you worked on, too. I have great respect for your work.

No, its not that i have a conversion code. I'm working on my diploma thesis and its not enough to use your pseudocode. I have to understand the structure of the aes3 data wich is mapped into the MXF file. So i read the AES3-2003 Standard but its only for 2-channel audiodata. Now i read "the mxf book" and i found the chapter about mapping D10-Data into MXF. So i know now, that i have to look in the SMPTE 331M standard. Even if there is some information in "the mxf book", i have some more questions.

i hope my englisch is not the baddest.

greetings
sebastian

Note by Matt: I did work on the MXF standards, but not alone!

 Profile  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 21 posts ]  Go to page 1, 2  Next

Jump to:  


Who is online

Users browsing this forum: No registered users and 55 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: All times are UTC