Sunday 15 July 2012

Merge multiple Video In Android -



Merge multiple Video In Android -

i want merge multiple video of same frame , resolutions. found below code -

string filenamevideo = "f:/testvidfol/video.mp4"; //video file on disk string filenameaudio = "f:/testvidfol/audio.wav"; //audio file on disk imediawriter mwriter = null; try{ string mpath = path+"videowriter.flv"; mwriter = toolfactory.makewriter(mpath); //output file } catch(exception e){ e.printstacktrace(); } icontainer containervideo = icontainer.make(); icontainer containeraudio = icontainer.make(); if (containervideo.open(filenamevideo, icontainer.type.read, null) < 0) throw new illegalargumentexception("cant find " + filenamevideo); if (containeraudio.open(filenameaudio, icontainer.type.read, null) < 0) throw new illegalargumentexception("cant find " + filenameaudio); int numstreamvideo = containervideo.getnumstreams(); int numstreamaudio = containeraudio.getnumstreams(); system.out.println("number of video streams: "+numstreamvideo + "\n" + "number of sound streams: "+numstreamaudio ); int videostreamt = -1; //this video stream id int audiostreamt = -1; istreamcoder videocoder = null; for(int i=0; i<numstreamvideo; i++){ istream stream = containervideo.getstream(i); istreamcoder code = stream.getstreamcoder(); if(code.getcodectype() == icodec.type.codec_type_video) { videostreamt = i; videocoder = code; break; } } for(int i=0; i<numstreamaudio; i++){ istream stream = containeraudio.getstream(i); istreamcoder code = stream.getstreamcoder(); if(code.getcodectype() == icodec.type.codec_type_audio) { audiostreamt = i; break; } } if (videostreamt == -1) throw new runtimeexception("no video steam found"); if (audiostreamt == -1) throw new runtimeexception("no sound steam found"); if(videocoder.open()<0 ) throw new runtimeexception("cant open video coder"); ipacket packetvideo = ipacket.make(); istreamcoder audiocoder = containeraudio.getstream(audiostreamt).getstreamcoder(); if(audiocoder.open()<0 ) throw new runtimeexception("cant open sound coder"); mwriter.addaudiostream(0, 0, audiocoder.getchannels(), audiocoder.getsamplerate()); mwriter.addvideostream(1, 1, videocoder.getwidth(), videocoder.getheight()); ipacket packetaudio = ipacket.make(); while(containervideo.readnextpacket(packetvideo) >= 0 || containeraudio.readnextpacket(packetaudio) >= 0){ if(packetvideo.getstreamindex() == videostreamt){ //video packet ivideopicture image = ivideopicture.make(videocoder.getpixeltype(), videocoder.getwidth(), videocoder.getheight()); int offset = 0; while (offset < packetvideo.getsize()){ int bytesdecoded = videocoder.decodevideo(picture, packetvideo, offset); if(bytesdecoded < 0) throw new runtimeexception("bytesdecoded not working"); offset += bytesdecoded; if(picture.iscomplete()){ system.out.println(picture.getpixeltype()); mwriter.encodevideo(1, picture); } } } if(packetaudio.getstreamindex() == audiostreamt){ //audio packet iaudiosamples samples = iaudiosamples.make(512, audiocoder.getchannels()); int offset = 0; while(offset<packetaudio.getsize()) { int bytesdecodedaudio = audiocoder.decodeaudio(samples, packetaudio, offset); if (bytesdecodedaudio < 0) throw new runtimeexception("could not observe audio"); offset += bytesdecodedaudio; if (samples.iscomplete()){ mwriter.encodeaudio(0, samples); } } } }

i have added jar in build path-

1.log4j-1.2.16.jar 2.slf4j-simple-1.7.7.jar 3.slf4j-api-1.7.7.jar 4.xuggle-xuggler-3.0.660.jar

and below log cat error,when run code-

java.lang.unsatisfiedlinkerror: native method not found: com.xuggle.ferry.ferryjni.ibuffer_make__swig_0:(jlcom/xuggle/ferry/refcounted;i)j @ com.xuggle.ferry.ferryjni.ibuffer_make__swig_0(native method) @ com.xuggle.ferry.ibuffer.make(ibuffer.java:1088) @ com.xuggle.ferry.ferryjni.<clinit>(ferryjni.java:21) @ com.xuggle.ferry.jnimemorymanager.setmemorymodel(jnimemorymanager.java:1190) @ com.xuggle.mediatool.mediawriter.<clinit>(mediawriter.java:119) @ com.xuggle.mediatool.toolfactory.makewriter(toolfactory.java:149) @ com.yps.demo.camerarecordingactivity.mergefiles(camerarecordingactivity.java:84) @ com.yps.demo.camerarecordingactivity.oncreate(camerarecordingactivity.java:69) @ android.app.activity.performcreate(activity.java:5141) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1150) @ android.app.activitythread.performlaunchactivity(activitythread.java:2315) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2420) @ android.app.activitythread.access$600(activitythread.java:165) @ android.app.activitythread$h.handlemessage(activitythread.java:1373) @ android.os.handler.dispatchmessage(handler.java:107) @ android.os.looper.loop(looper.java:194) @ android.app.activitythread.main(activitythread.java:5387) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:525) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:833) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:600) @ dalvik.system.nativestart.main(native method)

please help me in solve problem. in advance

android video xuggler

No comments:

Post a Comment