Я занимаюсь разработкой, которая берет видео из хранилища через намерение.Так что я столкнулся с этой проблемой
Проблема: -
java.lang.illegalArgumentException: inputFile не существует: / document / video: 105065
Код: -
Намерение
public void videotext( View v ) {
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("video/*");
startActivityForResult(i, request);
}
В результате активности
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data ) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == request) {
uri = data.getData();
mSurfaceView.setVideoURI(uri);
//MediaController media1=new MediaController(this);
media.setAnchorView(mSurfaceView);
mSurfaceView.setMediaController(media);
mSurfaceView.start();
inputFile=new File(uri.getPath());
inputFile=inputFile.getAbsoluteFile();
VideoCompress(inputFile,OutputFile);
}
}
}
VideoCompress - метод сжатия видео ..
public void VideoCompress(File inputFile,File OutputFile)
{
GiraffeCompressor.create() //two implementations: mediacodec and ffmpeg,default is mediacodec
.input(inputFile) //set video to be compressed
.output(OutputFile) //set compressed video output
.bitRate(2073600)//set bitrate 码率
.resizeFactor(Float.parseFloat(String.valueOf(1.0)))//set video resize factor 分辨率缩放,默认保持原分辨率
// .watermark("/sdcard/videoCompressor/watermarker.png")//add watermark(take a long time) 水印图片(需要长时间处理)
.ready()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<GiraffeCompressor.Result>() {
@Override
public void onCompleted() {
Toast.makeText(UploadVideo.this,"Compressing",Toast.LENGTH_LONG).show();
}
@Override
public void onError(Throwable e) {
Toast.makeText(UploadVideo.this,e.toString(),Toast.LENGTH_LONG).show();
}
@Override
public void onNext(GiraffeCompressor.Result s) {
Toast.makeText(UploadVideo.this,"Compressed",Toast.LENGTH_LONG).show();
}
});
}