mp4解析器 - 示例说明框条目不同

问题描述:

[我在下面的链接找到了stackoverflow,但它不符合我的要求。我试图通过向用户展示自定义图库来添加视频,其中显示存储在SD卡中的所有视频,并且用户必须选择它们中的任意数量,并且最终在按下附加按钮视频获得合并/附加后,它在许多但在某些情况下,它不能理解这个错误以及如何解决它。上面的链接用于设置VideooCodec,用于从应用程序本身录制的视频,这是我没有做的。如何更改已有的mp4视频的视频编码?mp4解析器 - 示例说明框条目不同

这是我在追加时得到的日志错误。我还打印了样本框描述条目以获得帮助,但无济于事,我可以看到样本框描述条目是相同的,并且没有任何文档Isoparser图书馆,可以帮助我。我使用isoparser-1.0-RC-2.jaraspectjrt-1.8.0.jar作为最新isoparser库并没有为我:-(

java-io-ioexception-cannot-append-mp4trackimplhandler-vide-to-mp4trackimpl

09-03 11:53:43.390: I/MERGE_VIDEO_ACTIVITY(28345): SampleDescriptionBox[AudioSampleEntry] 
09-03 11:53:43.390: I/MERGE_VIDEO_ACTIVITY(28345): SampleDescriptionBox[[email protected]] 
09-03 11:53:43.390: I/MERGE_VIDEO_ACTIVITY(28345): SampleDescriptionBox[AudioSampleEntry] 
09-03 11:53:43.390: I/MERGE_VIDEO_ACTIVITY(28345): SampleDescriptionBox[[email protected]] 
09-03 11:53:43.400: W/System.err(28345): java.io.IOException: Cannot append [email protected] to [email protected] since their Sample Description Boxes differ 
09-03 11:53:43.400: W/System.err(28345): at com.googlecode.mp4parser.authoring.tracks.AppendTrack.<init>(AppendTrack.java:48) 
09-03 11:53:43.400: W/System.err(28345): at com.spec.videoeditingdemo.service.asynctasks.MergeVideos.doInBackground(MergeVideos.java:113) 
09-03 11:53:43.400: W/System.err(28345): at com.spec.videoeditingdemo.service.asynctasks.MergeVideos.doInBackground(MergeVideos.java:1) 
09-03 11:53:43.400: W/System.err(28345): at android.os.AsyncTask$2.call(AsyncTask.java:288) 
09-03 11:53:43.400: W/System.err(28345): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
09-03 11:53:43.400: W/System.err(28345): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
09-03 11:53:43.400: W/System.err(28345): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
09-03 11:53:43.400: W/System.err(28345): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
09-03 11:53:43.400: W/System.err(28345): at java.lang.Thread.run(Thread.java:841) 

-Thanks提前工作。我将非常高兴,如果有人可以帮助我与问题:

错误信息是非常准确的。示例说明框(==编解码器初始化)是不同的,因此您不能追加这些轨道 - 请记住:mp4parser无法重新编码文件 - 它只是附加已经存在的内容 有时候的差异c一个被忽略,但在大多数情况下,你不能忽视它。例如,您将无法附加两个不同分辨率或帧率的视频,而无需重新编码它们。

所以:你的情况如何?是否使用相同的编码器设置对两个源视频进行了编码?

+0

这就是我要求的是有什么方法可以找出sdcard中已有视频的视频编解码器。因此,在将它们传递给合并之前,可以用相同的格式对它们进行重新编码,这样这些问题就不会再持续下去。请注意:所有这些视频都不是从cel-phone的相机记录的,这些是一些不同的mp4文件,如歌曲/卡通mp4视频。 – 2014-09-03 09:15:38

+0

如果你需要重新编码,我会说你最好用ffmpeg或者使用MediaCodec API(Android 4.x)和mp4parser。 – 2014-09-03 10:01:26

+0

嘿塞巴斯蒂安请你让我知道我需要强制检查所有属性,看看是否可以追加两个视频?这样我可以预先通知用户当前选择的视频不能附加到先前选择的视频。 – 2014-09-11 04:56:29