需求是在Android9使用MediaMuxer合成h264+aac的流,合成mp4文件。
因为在这个Android9的平台上,用以前的new File形式创建文件都被拒绝掉了,所以我用了DocumentFile的形式,但是这个时候,这个MediaMuxer就要用到FileDescriptor来生成文件,
但是运行时就提示这样的错误
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)
提示这个
IllegalArgumentException: Invalid file descriptor
查找了很多资料都无法解决,这个是我的代码段:
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;
}
有人遇到过吗,很多天都没有找到办法= =
不是吧,我用String路径就可以啊
你说的new File形式创建文件被拒绝这个问题才是要解决的
是不是读写权限的问题?