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...
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.....