MediaMuxer-JNI: Fail to get File Status Flags err: Bad file descriptor

138 Views Asked by At

On Anroid 8 devices,I put h264+aac stream combine to mp4,so I use MediaMuxer,but i use FileDescriptor to create a file, logcat shows this:

Fail to get File Status Flags err: Bad file descriptor
System.err: java.lang.IllegalArgumentException: Invalid file descriptor
System.err:     at android.media.MediaMuxer.nativeSetup(Native Method)
System.err:     at android.media.MediaMuxer.setUpMediaMuxer(MediaMuxer.java:359)
System.err:     at android.media.MediaMuxer.<init>(MediaMuxer.java:351)

And here is my code:

mMediaMuxer = new MediaMuxer(createFileDescriptor(context, destFile), MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);

........

public static FileDescriptor getFileDescriptor(Context context, File destFile) {
        FileDescriptor fd = null;
        try {
            DocumentFile file = DocumentsUtils.getDocumentFile(destFile, false, context);
                if (file != null && file.canWrite()) {
                    ParcelFileDescriptor out = context.getContentResolver().openFileDescriptor(file.getUri(), "rw");
                    fd = out.getFileDescriptor();
                    }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fd;
    }

I tyied so many ways,but still can not fix this problem,Is anyone kown how to fix it? thanks...

1

There are 1 best solutions below

1
lzh On

By the way, I record videos on SD path,logcat shows out "Invalid file descriptor",this problem still confuse me= =

And the stange point is it can writes files on inner path.....