1

[我在stackoverflow上找到了下面的链接,但它不符合我的要求。我正在尝试通过向用户展示一个自定义画廊来附加视频,其中显示了存储在 sdcard 中的所有视频,并且用户必须选择其中的任意数量,最后在按下附加按钮后视频被合并/附加,它在许多情况下都可以正常工作案例,但在某些情况下失败了不理解这个错误以及如何解决它。上面的链接用于为从应用程序本身录制的视频设置VideoCodec,我没有这样做。如何更改已经可用的 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[com.coremedia.iso.boxes.sampleentry.VisualSampleEntry@42118240]
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[com.coremedia.iso.boxes.sampleentry.VisualSampleEntry@41f08c60]
09-03 11:53:43.400: W/System.err(28345): java.io.IOException: Cannot append com.googlecode.mp4parser.authoring.Mp4TrackImpl@42008d78 to com.googlecode.mp4parser.authoring.Mp4TrackImpl@41ef5d90 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)

-提前致谢。如果有人可以帮助我解决这个问题,我会很高兴。

4

1 回答 1

0

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

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

于 2014-09-03T08:56:20.497 回答