Парсер mp4 - записи в поле описания образца различаются

[Я нашел ссылку ниже в stackoverflow, но она не соответствует моим требованиям. Я пытаюсь добавить видео, предоставив пользователю настраиваемую галерею, в которой отображаются все видео, хранящиеся на SD-карте, и пользователь должен выбрать любое их количество, и, наконец, после нажатия кнопки добавления видео объединяются/добавляются, это отлично работает во многих случаях, но в некоторых случаях это не удается, не понимаю эту ошибку и как ее решить. И ссылка выше используется для установки VideoCodec для видео, которые записываются из самого приложения, чего я не делаю. Как изменить видеокодек уже имеющегося видео mp4?

Это ошибка журнала, которую я получаю при добавлении. Я также распечатал записи описания блока образцов, чтобы получить от него помощь, но безрезультатно, и я вижу, что записи описания блока образцов одинаковы, и нет документации библиотеки Isoparser, которая может Помоги мне. Я использую isoparser-1.0-RC-2.jar и aspectjrt-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)

-Заранее спасибо. Я был бы очень рад, если бы кто-то мог помочь мне с проблемой.


person Namrata Bagerwal    schedule 03.09.2014    source источник


Ответы (1)


сообщение об ошибке довольно точное. Поля примера описания (== инициализация кодека) отличаются. Поэтому вы не можете добавить эти треки - помните: mp4parser не может перекодировать файл - он просто добавляет то, что уже есть. Иногда различия можно игнорировать, но в большинстве случаев игнорировать их нельзя. Например, вы не сможете добавить два видео с разным разрешением или частотой кадров без их перекодирования.

Итак: Как в вашем случае? Были ли два исходных видео закодированы с одинаковыми настройками кодировщика?

person Sebastian Annies    schedule 03.09.2014
comment
Вот о чем я спрашиваю, есть ли способ узнать видеокодек уже доступного видео в SD-карте. И, следовательно, любой способ перекодировать их в том же формате, прежде чем передавать их для слияния, чтобы такие проблемы больше не сохранялись. Обратите внимание: все эти видео не записаны с камеры мобильного телефона, это разные файлы mp4, такие как видео песни/мультфильма mp4. - person Namrata Bagerwal; 03.09.2014
comment
Если вам нужно перекодировать, я бы сказал, что вам лучше использовать что-то вроде ffmpeg или использование MediaCodec API (Android 4.x) вместе с mp4parser. - person Sebastian Annies; 03.09.2014
comment
Привет, Себастьян. Не могли бы вы сообщить мне, какие свойства мне нужно обязательно проверить, чтобы увидеть, можно ли добавить два видео? Чтобы я мог предварительно сообщить пользователю, что выбранное в данный момент видео не может быть добавлено к ранее выбранным видео. - person Namrata Bagerwal; 11.09.2014