canusx / mp4parser Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/mp4parser
Automatically exported from code.google.com/p/mp4parser
I have an MP4 file where the encoder has incorrectly set the flags field of the
vmhd box to 0, when the spec says it should always be 1.
Would it be possible to have a method added to
com.coremedia.iso.boxes.AbstractMediaHeaderBox to set the value of the field?
Thanks!
Original issue reported on code.google.com by [email protected]
on 24 Aug 2012 at 4:13
On Android 4.0.3, Nexus S
With an audio file approximately longer than 30 seconds, we see:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:278)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.RuntimeException: too many PopLocalFrame calls
at libcore.io.Posix.writev(Native Method)
at libcore.io.BlockGuardOs.writev(BlockGuardOs.java:196)
at java.nio.IoVec.doTransfer(IoVec.java:81)
at java.nio.FileChannelImpl.transferIoVec(FileChannelImpl.java:327)
at java.nio.FileChannelImpl.write(FileChannelImpl.java:505)
at java.nio.channels.FileChannel.write(FileChannel.java:716)
at
com.googlecode.mp4parser.authoring.builder.DefaultMp4Builder$InterleaveChunkMdat
.getBox(DefaultMp4Builder.java:448)
at com.coremedia.iso.IsoFile.getBox(IsoFile.java:177)
at com.todoroo.aacenc.AACToM4A.convert(AACToM4A.java:40)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 5 more
Original issue reported on code.google.com by [email protected]
on 4 Sep 2012 at 7:40
I try to edit metadata of a MP4 file, the taginfo is stored in file
successfully. But after that I can not play that MP4 files.
One more point, if I change the comment value but keep the comment size. For
example change it from "abcdef" to be "fedcba" it works, can play output file
also.
Please help me to check it
Original issue reported on code.google.com by [email protected]
on 14 Dec 2011 at 3:08
Attachments:
C:\bt\libraries\mp4\isoparser>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
Maven home: C:\java\apache-maven-3.0.4
Java version: 1.6.0_14, vendor: BEA Systems, Inc.
Java home: C:\java\jrmc-3.1.2-1.6.0\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:92)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.junit.Assert.assertTrue(Assert.java:54)
at com.coremedia.iso.boxes.mdat.SampleListTest.testGotAll(SampleListTest.java:73)
Looks like the sample file fails to delete for some reason.
I think the test case should put the sample file in the target/ directory so
the files are cleaned up on 'mvn clean'. If they are in the temp directory,
they will build up over time when tests fail.
Original issue reported on code.google.com by [email protected]
on 25 Jun 2012 at 2:24
When using a UserBox to add a "uuid" box field to a media file, there's no way
to set the content. I've attached a patch to add a getter and setter.
Original issue reported on code.google.com by [email protected]
on 3 Feb 2011 at 4:50
Attachments:
Just show bitrates on some panel
Original issue reported on code.google.com by Sebastian.Annies
on 24 Jun 2011 at 4:20
close old file when opening a new file
file stays open and you can't delete it on windows
Original issue reported on code.google.com by Sebastian.Annies
on 15 Feb 2012 at 6:15
FileInputStream is1 = new FileInputStream(storagePath + "V1.mp4");
FileChannel source1 = is1.getChannel();
FileInputStream is2 = new FileInputStream(storagePath + "V2.mp4");
FileChannel source2 = is2.getChannel();
video = MovieCreator.build(source1);
audio = MovieCreator.build(source2);
List<Track> videoTracks = video.getTracks();
video.setTracks(new LinkedList<Track>());
List<Track> audioTracks = audio.getTracks();
for (Track videoTrack : videoTracks) {
video.addTrack(new AppendTrack(videoTrack, videoTrack));
}
for (Track audioTrack : audioTracks) {
video.addTrack(new AppendTrack(audioTrack, audioTrack));
}
IsoFile out = new DefaultMp4Builder().build(video);
FileOutputStream fos = new FileOutputStream(new File(storagePath,
String.format("output.mp4")));
out.getBox(fos.getChannel());
fos.close();
is1.close();
is2.close();
source1.close();
source2.close();
What is the expected output? What do you see instead?
I found output.mp4 appended but, two times V1.mp4. I want concatenation of
V1.mp4 and V2.mp4. How can I add tracks appneded.
I am using ICS 4.0.3
Original issue reported on code.google.com by [email protected]
on 26 Dec 2012 at 6:36
What steps will reproduce the problem?
1. Open any MP4 file with valid H.264 bitstream
2. Open avcC Box and find SPS[1] values parsed incorrectly
3. At the same time fields "avcLevelIndication" and "avcProfileIndication" have
correctly parsed values.
What is the expected output? What do you see instead?
I.e. High Profile @ Level 4.0 is shown with: profile_idc=103 (impossible value)
and constraint_set(x)_flag booleans also wrong
What version of the product are you using? On what operating system?
2.0 RC16 on win7
Please provide any additional information below.
I could at least make profile_idc and constraint_set_x_flag fields show correct
values. PPS still has issues as well.
"dirty hack" patch file attached
Original issue reported on code.google.com by [email protected]
on 28 Nov 2012 at 5:18
Attachments:
First: tank you for this contribution.
May I suggest avoiding long to int conversions, it blocks access to files
larger than 2Gb.
i.e. in
- com.coremedia.iso.BoxFactory.parseBox()
- com.coremedia.iso.IsoInputStream.skip()
Best regards
Original issue reported on code.google.com by [email protected]
on 19 Aug 2010 at 10:52
What steps will reproduce the problem?
1. Run this unit test:
https://github.com/lucastheisen/mp4tools/blob/master/src/test/java/com/lucastheisen/mp4tools/edit/IsoParserMuxerTest.java
Note that this unit test relies on the resources in this project so you may have to download my project.
What is the expected output? What do you see instead?
I expect the parts to be joined into the mp4 file, instead, I get:
java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:347)
at com.googlecode.mp4parser.authoring.tracks.H264TrackImpl$ReaderWrapper.reset(H264TrackImpl.java:528)
at com.googlecode.mp4parser.authoring.tracks.H264TrackImpl.readSamples(H264TrackImpl.java:228)
at com.googlecode.mp4parser.authoring.tracks.H264TrackImpl.<init>(H264TrackImpl.java:70)
at com.lucastheisen.mp4tools.edit.IsoParserMuxer.mux(IsoParserMuxer.java:72)
at com.lucastheisen.mp4tools.edit.IsoParserMuxerTest.testMux(IsoParserMuxerTest.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
What version of the product are you using? On what operating system?
I am using:
<dependency>
<groupId>com.googlecode.mp4parser</groupId>
<artifactId>isoparser</artifactId>
<version>1.0-RC-11-SNAPSHOT</version>
</dependency>
On:
Windows 7 Professional (64 bit)
Using:
C:\Users\ltheisen>"%JAVA_HOME%/jre/bin/java" -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
Please provide any additional information below.
My project is available via github and has a unit test for this use case:
https://github.com/lucastheisen/mp4tools/
It seems like the H264TrackImpl should probably take a ReadableByteChannel, or
perhaps a RandomAccessFile instead of InputStream...
Original issue reported on code.google.com by [email protected]
on 28 Jul 2012 at 9:34
visible File Offset for each Box
Original issue reported on code.google.com by [email protected]
on 11 Jan 2013 at 2:30
What steps will reproduce the problem?
1. Modify ReadWriteExample or ShortenExample to reference a local mp4 file
2. Run the examples, and observe that the examples run to completion without
any errors/exceptions
3. Attempt to play the generated output file
What is the expected output? What do you see instead?
I expect the output files to play; instead, for RC10 I get an error and the
files will not play. For RC2 the output files play perfectly (in Windows Media
Player 12)
What version of the product are you using? On what operating system?
1.0-RC2 & 1.0-RC10; on Windows 7 64 bit; Java 7 64 bit (1.7.0_04-b22)
Please provide any additional information below.
I could reproduce with several mp4 files, including the following as an
example: http://www.mp4point.com/downloads/8e0c61a02ded.mp4 (10mb film trailer)
Original issue reported on code.google.com by [email protected]
on 2 Jul 2012 at 11:43
What steps will reproduce the problem?
1. Run Test.java in com.coremedio.iso on Eclipse for Windows.
2. Instantiate new IsoFile variable.
3. Run program
What is the expected output? What do you see instead?
Not sure what the expected output should be, but I get the NullPointerException
instead.
What version of the product are you using? On what operating system?
Just checked the version through svn. Running it on Windows 7.
Please provide any additional information below.
Here is what Eclipse traced the error back through:
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at com.coremedia.iso.PropertyBoxParserImpl.<init>(PropertyBoxParserImpl.java:27)
at com.coremedia.iso.IsoFile.<init>(IsoFile.java:34)
at com.coremedia.iso.Test.main2(Test.java:18)
at com.coremedia.iso.Test.main(Test.java:11)
Original issue reported on code.google.com by [email protected]
on 30 Jun 2011 at 8:48
Hi Michi, dein change verändert die avcC box. Bitte lass mal den Test
H264TrackImpltest laufen, der schlägt fehl - ist jetzt aber das alte oder das
neue Mp4 heile?
Gruß,
Sebastian
Original issue reported on code.google.com by Sebastian.Annies
on 10 Sep 2012 at 3:00
I noticed that writing a value "9" to a AppleMediaTypeBox, always results in
"0" getting written. I've tracted this now to the what I think is a problem in
AbstractAppleMetaDataBox.setValue(). If the section where
appleDataBox.getFlags() == 2, it writes the correct content to a
ByteArrayOutputStream(). However it never writes the contents of this to the
box.
If I change line 109 from:
appleDataBox.setContent(content);
to:
appleDataBox.setContent(baos.toByteArray());
it fixes the problem for me. I've attached a patch to this issue.
I'm using the latest SVN checkout (at the time of creating this issue).
Original issue reported on code.google.com by [email protected]
on 5 May 2011 at 8:26
Attachments:
In every example, an IsoFile is put into a file on a disk.
How Can I get it into a byte array?
ByteArrayOutputStream seems like a good idea, but it doesn't provide a channel
that IsoFile.getBoxes() could write into.
Maybe there is a way to somehow cheat the getBoxes() or write a simple
'para-channel' to write into BAOS?
I am not very deep into Java so I couldn't figure it out myself.
Original issue reported on code.google.com by [email protected]
on 5 Sep 2012 at 10:00
Hi,
Mp4parser, with a friendly Apache 2.0 license, can provide a way for
interacting with the developers and other users.
Will it be possible to create a google group for the same?
If there is one, can it be listed in the project front page.
Thanks
George L
Original issue reported on code.google.com by [email protected]
on 22 May 2011 at 4:08
1.Open file foo3.mp4
2.Examine moof > traf > tfhd
3.flags is 11 and defaultSampleDuration is displayed.
Per my understanding of ISO/IEC 14496-12, flags 11 should mean
base-data-offset-present and default-sample-size-present
I am using 1.0 on Win7
Original issue reported on code.google.com by [email protected]
on 25 Jun 2011 at 12:35
Attachments:
I have looked at a few different files and they all behave the same. The Track
Header Box does not display the Track ID. I assume that this Track ID is used
when listing the tracks in the Tracks & Samples tab so it would be useful to be
able to tie the two together.
Original issue reported on code.google.com by [email protected]
on 30 Aug 2011 at 12:30
Old values from the long[] were retained, leading to garbage data in the matrix
when authoring files.
This fix worked for me:
private double[] matrix = new double[]{1.0d, 0, 0, 0, 1.0d, 0, 0, 0, 1.0d};
Not sure about the last 1.0 - just copied an existing MP4 file's matrix :)
Original issue reported on code.google.com by [email protected]
on 20 Nov 2012 at 1:40
What steps will reproduce the problem?
1. From isoviewer, try to open a media file that has a user box (type "uuid").
In particular, I'm trying to add UITS tags.
What is the expected output? What do you see instead?
PropertyBoxParserImpl prints this stack trace:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException:
java.lang.NoSuchMethodException: com.coremedia.iso.boxes.UserBox.<init>(null)
at com.coremedia.iso.PropertyBoxParserImpl.createBox(PropertyBoxParserImpl.java:95)
at com.coremedia.iso.AbstractBoxParser.parseBox(AbstractBoxParser.java:62)
at com.coremedia.iso.AbstractBoxParser.parseBox(AbstractBoxParser.java:1)
at com.coremedia.iso.IsoFile.parse(IsoFile.java:92)
at com.coremedia.iso.gui.IsoViewerFrame.open(IsoViewerFrame.java:174)
at com.coremedia.iso.gui.IsoViewerFrame$3.actionPerformed(IsoViewerFrame.java:143)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:137)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6352)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6117)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NoSuchMethodException:
com.coremedia.iso.boxes.UserBox.<init>(null)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at com.coremedia.iso.PropertyBoxParserImpl.createBox(PropertyBoxParserImpl.java:88)
... 33 more
What version of the product are you using? On what operating system?
I expect the file to be open successfully.
Please provide any additional information below.
I have attached a media file that repros this and a patch to fix it. It was
just a capitalization error in default.properties.
Original issue reported on code.google.com by [email protected]
on 3 Feb 2011 at 4:37
Attachments:
There is an error in a class on its package:
com.coremedia.iso.gui.GenericSamplePane line 50 The method
getSampleDescriptionBox() in the type TrackMetaData is not applicable for the
arguments (long).
Original issue reported on code.google.com by [email protected]
on 17 Jun 2010 at 1:28
The apple metadata boxes use a type with a copyright char in the first column.
This is not getting routed correctly in the lookup. I don't know if this is the
right fix but the change I made in the fork on github (see below) causes the
correct lookup as confirmed by checking the metadata boxes in the viewer for
the test-pod.m4a file.
see
https://github.com/gabe97330/mp4parser-fork/commit/4949c477660886702e2706bd5e6b6
4eb82786ea4
Original issue reported on code.google.com by [email protected]
on 17 Apr 2011 at 6:49
What steps will reproduce the problem?
Open the viewer with the attached file and look under the stbl atom.
What is the expected output? What do you see instead?
The co64 is the 64-bit version of the stco atom, and as such it is almost the
same, just with larger data sizes. But it appear as an unknown atom.
What version of the product are you using? On what operating system?
Latest web start
Original issue reported on code.google.com by thomas.skjolberg
on 23 Sep 2011 at 2:12
Attachments:
Since release doesn't work anymore with maven 2 -> require maven 3
Original issue reported on code.google.com by Sebastian.Annies
on 2 May 2012 at 8:46
What steps will reproduce the problem?
1.Run the code from eclipse.
2.
3.
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 2 Nov 2012 at 3:18
This is feature request. It doesn't have the parsing capability of
dref->url header and iods header.
Can we have a feature to parse as well as writing capability in this.
Original issue reported on code.google.com by nirbhay.kundan.2
on 10 Oct 2011 at 6:28
Hello,
It seems parsing for extended boxes is not supported.
Here is a small part of the spec :
[...]
4.2 Object Structure
[...]
unsigned int(32) size;
unsigned int(32) type = boxtype;
if (size==1) {
unsigned int(64) largesize;
} else if (size==0) {
[...]
Some encoders builds extended box for the mdat box, even if the content can fit
in a 32 bits box.
Here a small dump of the file:
00 00 00 01 // use big box (size is 1)
6D 64 61 74 // mdat
00 00 00 00 00 07 BC AB // The size (here fits in 32 bit !!)
Sylvain
Original issue reported on code.google.com by [email protected]
on 7 Nov 2011 at 9:56
they have to be
* cut (display first 100) or
* some paging is need
* but nevertheless I'd like to be able to get into a spread sheet application
Original issue reported on code.google.com by Sebastian.Annies
on 24 Jun 2011 at 4:33
This isn't a bug, but I can't find anywhere else to make a code submission.
I've been using this API to parse and modify fragmented mp4 files and needed
support for the styp (Segment type) box in the API. The attached java class +
patch will add the necessary support. The code is a fairly minor modification
of the existing FileTypeBox class.
Original issue reported on code.google.com by [email protected]
on 10 May 2012 at 4:34
Attachments:
What steps will reproduce the problem?
1.capture a video with only 1 sync sample
2.try the ShortenExample.java with time set to, let's say, 0~5 seconds
3.it crashes
What is the expected output? What do you see instead?
the cropped video should have the entire video
What version of the product are you using? On what operating system?
using the code from svn
Please provide any additional information below.
The CroppedTrack.java doesn't differentiate array index and value so clearly.
When you call getSyncSamples(), the first value (not the index) is 0 instead of
1. But if you try it on original track, it is 1.
I've attached my corrected version, but it's not thoroughly tested. Hope it
helps your debugging and fixing.
Original issue reported on code.google.com by [email protected]
on 23 Oct 2011 at 8:34
What steps will reproduce the problem?
1.Open the attached file foo1.mp4 and examing box "stco". It shows the size =
16.
2.Open the second attached file foo1.mp4 and examine box "fooo". It shows size
= 32.
The two files are identical except the tag of a box. The tag is "stco" for the
first file and "fooo" for the second file.
The expected size is 32 for the box.
Original issue reported on code.google.com by [email protected]
on 24 Jun 2011 at 4:58
Attachments:
I'm trying to use mp4parser to implement a MP4 parser for Apache Tika
As part of that, I've created a small test M4A MP4 audio file using iTunes,
which is based on a very short wav file and some test metadata. The test file
is only 5kb large, and is available from
http://svn.apache.org/repos/asf/tika/trunk/tika-parsers/src/test/resources/test-
documents/testMP4.m4a
When trying to load this file in mp4parser when asserts are enabled (such as in
the Tika test suite), the parser blows up with:
Reconstructed Size is not equal to the number of parsed bytes! (hdlr) Actual
Box size: 34 Calculated size: 36 at offset: 617
Looking at a hex dump of the file, the size is 0x22, and that looks correct to
me as at 0x028b we have 00 00 03 a6 ilst, which appears to be a 0x03a6 long
ilst box:
00000260 fb 6d 65 74 61 00 00 00 00 00 00 00 22 68 64 6c |.meta......."hdl|
00000270 72 00 00 00 00 00 00 00 00 6d 64 69 72 61 70 70 |r........mdirapp|
00000280 6c 00 00 00 00 00 00 00 00 00 cc 00 00 03 a6 69 |l..............i|
00000290 6c 73 74 00 00 00 22 a9 6e 61 6d 00 00 00 1a 64 |lst...".nam....d|
The file was created with iTunes (which has no problems with it), and both
mplayer and ffmpeg are happy with it too, so this looks like a mp4parser bug
Original issue reported on code.google.com by [email protected]
on 28 Jan 2012 at 9:12
I am trying to solve the problem with MP4 streaming. FFPMEG place Moov atom
header to the end of MP4 which prevents proper streaming in FLASH.
I used trunk version of mp4parser:
IsoBufferWrapper isoBufferWrapper = new IsoBufferWrapper(new
File("C:/test.mp4"));
IsoFile isoFile = new IsoFile(isoBufferWrapper);
isoFile.parse();
isoFile.parseMdats();
Box[] boxes = isoFile.getBoxes();
IsoFileConvenienceHelper.switchToAutomaticChunkOffsetBox(isoFile);
//moving MOOV header to front
Box[] fixed = new Box[]{boxes[0], boxes[3], boxes[2], boxes[1]};
//no direct api to change the order of boxes in isoFile
Field field = isoFile.getClass().getDeclaredField("boxes");
field.setAccessible(true);
field.set(isoFile, fixed);
IsoOutputStream isos = new IsoOutputStream(new FileOutputStream(new
File("c:/testFixed.mp4")));
isoFile.getBox(isos);
So i have used reflection to change boxes array in IsoFile. Without that i will
get incorrect offset because boxes in isoFile will use old offsets when writing
to file.
P.S May you please release trunk 1.0-alpha-2-SNAPSHOT as artifact to maven ?
Original issue reported on code.google.com by [email protected]
on 13 Jan 2011 at 7:46
line 56:
throw new RuntimeException("Only methods in subclasses of " + AbstractBox.class.getName() + " can be annotated with DoNotParseDetail");
should be:
throw new RuntimeException("Only methods in subclasses of " + AbstractBox.class.getName() + " can be annotated with ParseDetail");
Original issue reported on code.google.com by [email protected]
on 25 Jun 2012 at 8:50
I've come across a problem using the ISOParser. I've encoded a DVD to a .m4v
file. I've done this using handbrake (http://handbrake.fr/) with the "AppleTV
2" preset. So it has two audio tracks one of them a AC3 copy of the DVD's
audio. I've also added in chapter information. The ripped DVD file at this
point is working fine and has full chapter information.
Now I attempt to parse it with the ISOParser so I can update it with iTunes
metadata. However I get lots of parsing errors from
SampleDependecType.getSampleCount(), which is unable to find the Sample size
box.
It prints the message "Couldn't find Track Run Box. Trying to determine sample
count by looking up Sample Size Boxes".
I'm running the SVN version (revision 145).
Any help with this would be much appreciated, let me know if their is anything
I can do to help.
Original issue reported on code.google.com by [email protected]
on 30 May 2011 at 4:55
Hello,
It seems the file is not recognized as command line argument:
$ java -jar isoviewer-1.1.jar myfile.mp4 works
$ java -jar isoviewer-1.2.jar myfile.mp4 does not work anymore.
--
Sylvain
Original issue reported on code.google.com by [email protected]
on 4 Nov 2011 at 6:00
mp4parser has dependencies on certain Java classes, first of all
java.nio.MappedByteBuffer, which are ** not ** allowed by the Google AppEngine
runtime (see http://code.google.com/appengine/docs/java/jrewhitelist.html).
Google AppEngine throws an exception e.g "java.lang.NoClassDefFoundError:
java.nio.MappedByteBuffer is a restricted class. Please see the Google App
Engine developer's guide for more details." is thrown for the unsupported
class(es).
- Would it be possible to remove the dependency by mp4parser on these Java
classes, so as to enable the library to work within Google AppEngine?
Original issue reported on code.google.com by [email protected]
on 22 Jun 2011 at 8:11
i try this on a android device.
but the output mp4 file is not correct;it have only two seconds duration.not
equal with the count.h264 duration
H264TrackImpl h264Track = new H264TrackImpl(new FileInputStream(
"//mnt/sdcard/count.h264"));
Movie m = new Movie();
m.addTrack(h264Track);
{
IsoFile out = new DefaultMp4Builder().build(m);
File ofile = new File("//mnt/sdcard/output.mp4");
if(ofile.exists())
{
ofile.delete();
}
ofile.createNewFile();
FileOutputStream fos = new FileOutputStream(ofile);
out.getBox(fos.getChannel());
fos.close();
}
{
FragmentedMp4Builder fragmentedMp4Builder = new FragmentedMp4Builder();
fragmentedMp4Builder
.setIntersectionFinder(new SyncSampleIntersectFinderImpl());
IsoFile out = fragmentedMp4Builder.build(m);
File ofile2 = new File("//mnt/sdcard/output-frag.mp4");
if(ofile2.exists())
{
ofile2.delete();
}
ofile2.createNewFile();
FileOutputStream fos = new FileOutputStream(ofile2);
out.getBox(fos.getChannel());
fos.close();
}
Original issue reported on code.google.com by [email protected]
on 19 Sep 2012 at 12:19
Should the toString() use the track metadata to put out a more useful message?
Original issue reported on code.google.com by [email protected]
on 25 Jun 2012 at 3:54
What steps will reproduce the problem?
1. Run the following code in Android environment will generate an IOException.
AACTrackImpl aacTrack = new AACTrackImpl(new FileInputStream (aacFilePath));
What is the expected output? What do you see instead?
Exception is generated with the following stack trace
Exception stack trace
java.io.IOException ("count < 0")
at com.googlecode.mp4parser.authoring.tracks.AACTrackImpl.<init>(AACTrackImpl.java:77)
What version of the product are you using? On what operating system?
Android 2.3 (Gingerbread)
Please provide any additional information below.
Per Java API
http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#skip(long)
method skip(n)does not handle negative n number.
Original issue reported on code.google.com by [email protected]
on 16 May 2012 at 8:58
First of all, thank you for wonderful tool.
I tried to build the source code and met a problem.
Under the mdta directory, there is no source code for Sample.
So GenericSamplePane.java raise build failure.
Original issue reported on code.google.com by [email protected]
on 5 Aug 2011 at 4:00
What steps will reproduce the problem?
Load a new file into isoviewer when another was already loaded
What is the expected output? What do you see instead?
main view should get updated at this moment, instead this only happens when a
new box is clicked
What version of the product are you using? On what operating system?
the latest (isoviewer-1.2-SNAPSHOT.jar)
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 29 Aug 2011 at 10:57
What steps will reproduce the problem?
1. Parsinsg a mp4 file
2. When I try to get a stco box with (ChunkOffsetBox stco =
stbl.getBoxes(ChunkOffsetBox.class).get(0);)
3. I get the exception
What is the expected output? What do you see instead?
The expected output is a stco box
What version of the product are you using? On what operating system?
latest maven repository version (1.0-beta-3) Ubuntu 11.10 64-bits
Please provide any additional information below.
Parsing with java code got in the example page.
Original issue reported on code.google.com by [email protected]
on 8 Dec 2011 at 6:36
What steps will reproduce the problem?
1. svn checkout http://mp4parser.googlecode.com/svn/trunk/ mp4parser
2. cd mp4parser
3. mvn compile
Expected output:
It should compile without errors.
Actual output:
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) com.googlecode.mp4parser:isoparser:jar:1.0-alpha-2-SNAPSHOT
...
---------------------------------------------------------------
I hope this is a right way to report a problem.
Thanks a lot,
--Sergey
Original issue reported on code.google.com by [email protected]
on 22 Apr 2011 at 3:19
Sample 1@302 - 302bytes
Sample 2@324 - 324bytes
it seems that the same value is used twice
Original issue reported on code.google.com by Sebastian.Annies
on 15 Feb 2012 at 6:16
There are several problems with handling of enhanced podcast files. The
problems are encountered with even very simple examples. I have forked the
mp4parser project at Github (https://github.com/gabe97330/mp4parser-fork) and
made some changes that seem to address at least some of the problems but its
still not totally right.
You can find a test file at
https://github.com/gabe97330/mp4parser-fork/blob/master/isoparser/src/test/resou
rces/test-pod.m4a which will cause the viewer application to fail.
Original issue reported on code.google.com by [email protected]
on 16 Apr 2011 at 12:10
* CompositionTimeToSampleBox
* SampleToChunkBoix
* TimeToSampleBox
Original issue reported on code.google.com by Sebastian.Annies
on 24 Jun 2011 at 4:31
getLength is only used for a single plausibility check while parsing. I think I
should drop it to be able to read an MP4 without knowing its length
Original issue reported on code.google.com by Sebastian.Annies
on 27 Sep 2010 at 5:37
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.