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(" 歌詞画像をコピーしました"); }
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()); }