Android Merging two or more videos from the List to a single synchronised video -
i've activity has videos inside recyclerview. i've 1 button takes next activity has videoview. main task merge videos single synchronous video , video file played in video view.
the mapping -> editvideoactivity.java (list of videos in recyclerview) -> processing video merging 1 -> saving somewhere -> merged video getting played.
i've researched on several sites , came know 2 things available this, these :
1. ffmpeg
2. mp4parser
now i've followed questions on stackoverflow :
- ffmpeg usage getting problem in orientation : doesn't serve motive. guy has used coding.
- mp4parser : have moved site github got 504 gateway timeout no guidance that.
developer android has mediacodec , went there quiet complex
i'm sending out data in string format or must video path in array format other activity , working fine.
i've done homework did in media player appended videos. have merge videos , has played inside videoplayer.
1. when button clicked merges videos , saves in storage specified
the same videos played in videoplayer
editvideo.java data passed press of button
audiobutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { //the position of video videoposition = selectedvideo; if(videoposition != null){ intent intent = new intent(editvideoactivity.this, audioactivity.class); intent.putextra("videodata",videoposition); log.e("video_sent_data=======", videoposition); startactivity(intent); }else toast.maketext(editvideoactivity.this,"you have not selected video",toast.length_long) .show(); } }); from here data getting passed, i'm working on how merge videos press of above button
and previewactivity.java page videoview there played (the merged files)
i've done : appending videos in oncreate()
//getting passed value previous activity bundle extras = getintent().getextras(); final arraylist<string> videoreceived = extras.getstringarraylist("videos"); log.e("video_received",videoreceived.tostring()); mvideoplayer.setvideopath(string.valueof(videoreceived.get(0))); mmediacontroller = new mediacontroller(this); mmediacontroller.setmediaplayer(mvideoplayer); mvideoplayer.setmediacontroller(mmediacontroller); mvideoplayer.setbackgroundcolor(color.transparent); mvideoplayer.requestfocus(); mvideoplayer.start(); log.e("video_size===",string.valueof(videoreceived.size())); mvideoplayer.setoncompletionlistener(new mediaplayer.oncompletionlistener() { @override public void oncompletion(mediaplayer mediaplayer) { if( currentindex < videoreceived.size()){ string uri = string.valueof(videoreceived.get(currentindex)); mvideoplayer.setvideopath(uri); mvideoplayer.start(); currentindex++; } } });
Comments
Post a Comment