Exemplo n.º 1
0
        private void CopyID32DataToMP4(ID3V2Tag.id3tag id3tag, MP4.ATOM mp4)
        {
            if (id3tag == null)
            {
                return;
            }
            var geob = id3tag.frame.Find(_ => _.id == "GEOB" && _.geob_mime.StartsWith("image/"));

            if ((geob == null) || (geob.geob_binarydata == null))
            {
                return;
            }

            var covrdata = new MP4.ATOM_raw();

            covrdata.AtomCode = Encoding.ASCII.GetBytes("data");
            covrdata.data     = new byte[geob.geob_binarydata.Length + 8];
            covrdata.data[0]  = 0x00;
            covrdata.data[1]  = 0x00;
            covrdata.data[2]  = 0x00;
            covrdata.data[3]  = 0x0D;
            covrdata.data[4]  = 0x00;
            covrdata.data[5]  = 0x00;
            covrdata.data[6]  = 0x00;
            covrdata.data[7]  = 0x00;
            Buffer.BlockCopy(geob.geob_binarydata, 0, covrdata.data, 8, geob.geob_binarydata.Length);

            var covratom = new MP4.ATOM_covr();

            covratom.AtomCode = Encoding.ASCII.GetBytes("covr");

            var covr = mp4.GetChildNode <MP4.ATOM_covr>();

            if (covr == null)
            {
                covr          = new MP4.ATOM_covr();
                covr.AtomCode = Encoding.ASCII.GetBytes("covr");
                var ilst = mp4.GetChildNode <MP4.ATOM_ilst>();
                if (ilst == null)
                {
                    return;
                }
                ilst.AddChild(covr);
            }
            covr.AddChild(covrdata);

            AppendLog("  歌詞画像をコピーしました");
        }
Exemplo n.º 2
0
        private static string getTagText <T>(MP4.ATOM root) where T : MP4.ATOM
        {
            var node = root.GetChildNode <T>();

            if (node == null)
            {
                return(null);
            }
            var data = (MP4.ATOM_data)node.First();

            if (data == null)
            {
                return(null);
            }
            return(data.getTextData());
        }