2012-03-12 3 views
0

M4A 원자를 파일에 삽입하는 데 문제가 있습니다. 원본 파일에는 udta 구조가 없으므로 기존 M4A 파일을 사용하여 추가했습니다. 기존 M4A 파일을 가이드로 사용하여 추가했습니다. udta 원자 M4A 태깅 문제

  • 복사 최대 파일의 크기를 포함하는 메모리
  • 업데이트 MOOV 원자의 크기에 udta 원자를 구축

    1. : 여기

      내가 원자를 추가하기 위해 무슨 짓을했는지 첫 번째 trak 원자 끝까지
    2. 내 udta 원자 삽입
    3. 평소대로 나머지를 복사하십시오.

    원래 파일과 태그가있는 파일의 유일한 차이점은 mdat 아톰이 태그를 수용하기 위해 약간 아래로 이동했기 때문입니다. 이것은 다른 원자들에서 그 위치에 대한 어떤 언급이 있다고 믿게하지만, 나는 그것을 발견 할 수 없다.

    원본 파일 :

    Atom ftyp @ 0 of size: 36, ends @ 36 
    Atom moov @ 36 of size: 30156, ends @ 30192 
        Atom mvhd @ 44 of size: 108, ends @ 152 
        Atom iods @ 152 of size: 33, ends @ 185 
        Atom trak @ 185 of size: 30007, ends @ 30192 
         Atom tkhd @ 193 of size: 92, ends @ 285 
         Atom mdia @ 285 of size: 29907, ends @ 30192 
          Atom mdhd @ 293 of size: 32, ends @ 325 
          Atom hdlr @ 325 of size: 37, ends @ 362 
          Atom minf @ 362 of size: 29830, ends @ 30192 
           Atom smhd @ 370 of size: 16, ends @ 386 
           Atom dinf @ 386 of size: 36, ends @ 422 
            Atom dref @ 394 of size: 28, ends @ 422 
           Atom stbl @ 422 of size: 29770, ends @ 30192 
            Atom stts @ 430 of size: 24, ends @ 454 
            Atom stsd @ 454 of size: 106, ends @ 560 
             Atom mp4a @ 470 of size: 90, ends @ 560 
              Atom esds @ 506 of size: 54, ends @ 560 
            Atom stsz @ 560 of size: 26888, ends @ 27448 
            Atom stsc @ 27448 of size: 40, ends @ 27488 
            Atom stco @ 27488 of size: 2704, ends @ 30192 
    Atom mdat @ 30192 of size: 2495503, ends @ 2525695 
    

    수정 된 파일 :

    Atom ftyp @ 0 of size: 36, ends @ 36 
    Atom moov @ 36 of size: 30323, ends @ 30359 
        Atom mvhd @ 44 of size: 108, ends @ 152 
        Atom iods @ 152 of size: 33, ends @ 185 
        Atom trak @ 185 of size: 30007, ends @ 30192 
         Atom tkhd @ 193 of size: 92, ends @ 285 
         Atom mdia @ 285 of size: 29907, ends @ 30192 
          Atom mdhd @ 293 of size: 32, ends @ 325 
          Atom hdlr @ 325 of size: 37, ends @ 362 
          Atom minf @ 362 of size: 29830, ends @ 30192 
           Atom smhd @ 370 of size: 16, ends @ 386 
           Atom dinf @ 386 of size: 36, ends @ 422 
            Atom dref @ 394 of size: 28, ends @ 422 
           Atom stbl @ 422 of size: 29770, ends @ 30192 
            Atom stts @ 430 of size: 24, ends @ 454 
            Atom stsd @ 454 of size: 106, ends @ 560 
             Atom mp4a @ 470 of size: 90, ends @ 560 
              Atom esds @ 506 of size: 54, ends @ 560 
            Atom stsz @ 560 of size: 26888, ends @ 27448 
            Atom stsc @ 27448 of size: 40, ends @ 27488 
            Atom stco @ 27488 of size: 2704, ends @ 30192 
        Atom udta @ 30192 of size: 167, ends @ 30359 
         Atom meta @ 30200 of size: 159, ends @ 30359 
          Atom ilst @ 30212 of size: 147, ends @ 30359 
           Atom ©ART @ 30220 of size: 35, ends @ 30255 
            Atom data @ 30228 of size: 27, ends @ 30255 
           Atom ©nam @ 30255 of size: 63, ends @ 30318 
            Atom data @ 30263 of size: 55, ends @ 30318 
           Atom ©alb @ 30318 of size: 41, ends @ 30359 
            Atom data @ 30326 of size: 33, ends @ 30359 
    Atom mdat @ 30359 of size: 2495503, ends @ 2525862 
    

    노트의 또 다른 한가지는 태그 파일이 내가 참고 자료로 사용하고 있는지 여기

    는 AtomicParsley의 출력입니다 udta-> meta 아래에 hdlr 아톰이 있지만이 태그의 사본을 추가해도 도움이되지 않습니다. udta 원자와 moov의 크기 데이터를 수동으로 제거하면 파일이 다시 작동합니다. 나는 태그 파일을 재생하려고하면

    , 나는 다양한 프로그램에서 이러한 오류를 얻을 :

    mplayer: 
        [aac @ 0x204d720] channel element 0.0 is not allocated 
        [aac @ 0x204d720] channel element 0.0 is not allocated 
        [aac @ 0x204d720] channel element 3.13 is not allocated 
        [aac @ 0x204d720] channel element 2.14 is not allocated 
        [aac @ 0x204d720] channel element 2.9 is not allocated 
        [aac @ 0x204d720] Prediction is not allowed in AAC-LC. 
        [aac @ 0x204d720] channel element 3.1 is not allocated 
        [aac @ 0x204d720] channel element 0.3 is not allocated 
        .... 
    totem: 
        ** Message: Error: Could not decode stream. 
        gstfaad.c(1319): gst_faad_chain(): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstFaad:faad0: 
        decoding error: Bitstream value not allowed by specification 
    banshee: 
        [Error 08:26:27.610] GStreamer stream error: Decode 
        [Error 08:26:27.960] GStreamer stream error: Decode 
        [Error 08:26:28.252] GStreamer resource error: NotFound 
    

    오, MP3의 이외의 파일에 ID3 태그를 인식 프로그램의 다른 99 %를하고자하는 방법 ...

  • 답변

    0

    덕분에 xdelta3 덕분에 태그 소프트웨어로 태그가 지정된 파일과 수동으로 제거한 파일과 원본 파일의 차이를 찾을 수있었습니다.

    이 문제는 절대 파일 오프셋을 사용하는 청크 목록 인 'stco'아톰 인 것으로 보입니다. 빙고! 태그를 추가 했으므로 이제 그 오프셋은 유효하지 않습니다. 더 많은 코딩 할 한숨

    +0

    그래, 그 매력처럼 작동! –