我正在尝试将我的图像转换为视频.我找到了示例代码并用于我的应用程序.但我得到的错误就像
java.io.FileNotFoundException: output.mp4 (Read-only file system)
这是我的代码的片段:
public class Main2Activity extends AppCompatActivity {
AndroidSequenceEncoder encoder;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ArrayList<Bitmap> arrayList = new ArrayList<>();
Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.empty_collage);
Bitmap a = BitmapFactory.decodeResource(getResources(),R.drawable.images);
arrayList.add(a);
arrayList.add(b);
File file = new File("output.mp4");
SeekableByteChannel out = null;
try {
out = (SeekableByteChannel) NIOUtils.writableFileChannel(String.valueOf(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.e("msg",e.toString());
}
try {
encoder = new AndroidSequenceEncoder((org.jcodec.common.io.SeekableByteChannel) out, Rational.R(25,1));
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(this, "in for loop", Toast.LENGTH_SHORT).show();
for(int i=0 ;i<arrayList.size() ; i++){
try {
encoder.encodeImage(arrayList.get(i));
} catch (IOException e) {
e.printStackTrace();
}
}
Toast.makeText(this, "out of loop", Toast.LENGTH_SHORT).show();
try {
encoder.finish();
} catch (IOException e) {
e.printStackTrace();
}
NIOUtils.closeQuietly(out);
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望我会很快得到回应.谢谢.
File file = new File("output.mp4");
Run Code Online (Sandbox Code Playgroud)
这并不意味着任何有用的东西.始终使用方法派生要写入的根位置.
例如,您可以将其更改为:
File file = new File(getFilesDir(), "output.mp4");
Run Code Online (Sandbox Code Playgroud)
要么:
File file = new File(getExternalFilesDir(null), "output.mp4");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |