Как получить атом avcC из видео iTunes с помощью Mp4parser

Есть ли способ получить доступ к атому avcC при чтении файла, созданного из iTunes, с помощью библиотеки mp4parser для java? Я сделал это вручную, используя атом pasp в каком-то пользовательском коде, но после перехода на эту библиотеку я потерял доступ к данным.

Известные пути для атома avcC:

  • /moov/trak/mdia/minf/stbl/stsd/avc1/avcC
  • /moov/trak/mdia/minf/stbl/stsd/avc1/pasp/avcC
  • /moov/trak/mdia/minf/stbl/stsd/drmi/avcC

MP4Parser https://github.com/sannyes/mp4parser


person Paul Gregoire    schedule 23.01.2013    source источник


Ответы (1)


Атом avcC допустимого файла quicktime никогда не может находиться внутри атома pasp. Атом avcC может быть рядом с pasp, но он не может быть внутри pasp, поскольку блок pasp не содержит других блоков. Вы можете использовать класс Path для быстрого доступа (он знает некоторое регулярное выражение):

public static void main(String[] args) throws IOException {
    IsoFile isoFile = new IsoFile("video.mp4");
    AvcConfigurationBox avcC = Path.getPath(isoFile, "/moov/trak/mdia/minf/stbl/stsd/.../avcC");
}

всех блоков конфигурации AVC независимо от их родительского блока.

person Sebastian Annies    schedule 01.02.2013
comment
Я надеюсь, что вы правы, вполне возможно, что в нашей предыдущей пользовательской программе чтения mp4 была ошибка, но она определенно думала, что avcC был потомком pasp. - person Paul Gregoire; 01.02.2013
comment
Как получить avcDecoderConfiguration от родителя avcC? - person Paul Gregoire; 03.02.2013
comment
Также попробовал этот путь и получил ошибку: заголовок/атомы декодирования исключения java.lang.RuntimeException: ... недопустимый путь. - person Paul Gregoire; 03.02.2013
comment
Я также попытался использовать четыре точки и получил это: java.lang.ClassCastException: com.coremedia.iso.boxes.UnknownBox нельзя преобразовать в com.coremedia.iso.boxes.ContainerBox - person Paul Gregoire; 03.02.2013