1
我試圖將我的圖像轉換爲視頻。我找到了示例代碼並將其用於我的應用程序。但是我得到錯誤,如java.io.FileNotFoundException:output.mp4(只讀文件系統)
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);
}
}
}
希望我會很快得到迴應。 謝謝。
Thanks.Getting錯誤: '了java.lang.RuntimeException:無法啓動活動ComponentInfo {融爲一體。 graciaapps.newproject/com.graciaapps.newproject.Main2Activity}:java.lang.ClassCastException:org.jcodec.common.io.FileChannelWrapper無法轉換爲android.app.ActivityThread.p中的java.nio.channels.SeekableByteChannel erformLaunchActivity(ActivityThread.java:2646) 引起:java.lang.ClassCastException:org.jcodec.common.io.FileChannelWrapper不能轉換爲java.nio.channels.SeekableByteChannel' – Rozina
希望你能幫我快點出來@CommonsWare – Rozina
@Rozina:請問一個*單獨的*堆棧溢出問題[mcve]。這將包括新的崩潰的*完整* Java堆棧跟蹤和當前的源代碼。總體而言,我們傾向於不會在Android上使用NIO,因爲對它的支持有限,特別是在Android 7.0之前。還要注意Android SDK中沒有'AndroidSequenceEncoder'。 – CommonsWare