VorbisCommentTag setField(artwork) issue

Issue #326 new
Former user created an issue

Here is the code I use to select the desired artwork:

Tag tag = audioFile.getTagAndConvertOrCreateAndSetDefault();
tag.deleteArtworkField();
            if (coverFile != null){
                Artwork createArtworkFromFile = ArtworkFactory.createArtworkFromFile(coverFile);
                if (tag instanceof FlacTag) {
                    tag.setField(((FlacTag) tag).createArtworkField(createArtworkFromFile.getBinaryData(), PictureTypes.DEFAULT_ID.intValue(), ImageFormats.getMimeTypeForBinarySignature(createArtworkFromFile.getBinaryData()), "", createArtworkFromFile.getWidth(), createArtworkFromFile.getHeight(), 0, 0));
                }else if (tag instanceof VorbisCommentTag) {
                    ((VorbisCommentTag) tag).setField(tag.createField(createArtworkFromFile));
                } else if (tag instanceof Mp4Tag) {
                    ((Mp4Tag) tag).setField(((Mp4Tag)
tag).createArtworkField(createArtworkFromFile.getBinaryData()));
                } else {
                    tag.setField(createArtworkFromFile);
                }
            }

logcat return

W/System.err: java.lang.UnsupportedOperationException W/System.err: at org.jaudiotagger.tag.images.AndroidArtwork.setImageFromData(AndroidArtwork.java:76) W/System.err: at org.jaudiotagger.tag.vorbiscomment.VorbisCommentTag.createMetadataBlockDataPicture(VorbisCommentTag.java:593)

I have this exception only for Class Tag VorbisCommentTag.

Any ideas?

Best regards.

Comments (1)

  1. thinh truong

    I can fix the vorbis artwork as below (kotlin android):

    val metadataBlock = MetadataBlockDataPicture(
                        artwork.binaryData,
                        PictureTypes.DEFAULT_ID,
                        ImageFormats.getMimeTypeForBinarySignature(artwork.binaryData),
                        "",
                        artwork.width,
                        artwork.height,
                        0,
                        0
                    )
    val vorbisArtwork = object : AndroidArtwork() {
        override fun setImageFromData(): Boolean {
            return true
        }
    }
    vorbisArtwork.setFromMetadataBlockDataPicture(metadataBlock)
    tag.setField(tag.createField(vorbisArtwork))
    

    The artwork is set successfully but after that try to delete the artwork and change to different artwork many times will cause the error:

    CannotWriteException: Cannot make changes to file ....ogg because OggS Header could not be found, not an ogg stream p?#k
            at org.jaudiotagger.audio.generic.AudioFileWriter.write(AudioFileWriter.java:439)
            at org.jaudiotagger.audio.AudioFileIO.writeFile(AudioFileIO.java:484)
            at org.jaudiotagger.audio.AudioFileIO.writeAs(AudioFileIO.java:226)
    

  2. Log in to comment