2014-03-05 60 views
6

我看过whatsapp messenger的独特功能。其中发送视频应用程序之前允许用户选择帧,用户只能发送那些选定的帧作为视频。作物视频喜欢whatsapp

所以,我的问题是我们如何分割视频帧,并再次从分离帧视频视频? whatsapp messagnes做了什么?

+0

你有任何解决方案或例子吗? –

+0

哎开发,你有没有这个问题,我有相同的任务,请帮我解决。 –

+0

嘿,你得到任何图书馆或东西实现这一目标? –

回答

0

https://lists.ffmpeg.org/pipermail/libav-user/2012-May/001964.html

how to use ffmpeg on android

读有关在“ffmpeg.c”静态瓦尔问题...

我敢打赌,ü有同样的问题,需要做一些事情(3交替选择)重置或GC的增值经销商:

  1. 获取加载的lib中的Java类加载器和GC它

  2. 在c层

    做什么OP上述链接的确在

  3. 编写使用每个呼叫周期

“期间对dlsym”和“dlclose”在第一库中的第二共享库

github,请参阅'自述文件'here

+0

嗨navin,谢谢你的回复。你提供的解决方案是fororid? – dev

+0

是的。你必须包括库与您的应用程序,你可以裁剪视频 – Naveen

+0

你能为我提供例子或代码,我怎么能实现呢? – dev

5

您可以使用ffmpeg-android来剪切/裁剪视频。 For use it add

compile 'com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.2.5' 

to dependencies。

用于切割视频运行此命令

execFFmpegCommand("-i " + path.getAbsolutePath() + " -ss " + startMs/1000 + " -to " + endMs/1000 + " -strict -2 -async 1 " + dest.getAbsolutePath()); 

其中 path是原始视频的路径。

startMs是要削减的视频格式的初始时间(开始裁剪视频的时间)

endMs是高达要削减(裁剪视频的结束时间)

视频的时间

dest是您想要保存剪切/裁剪视频的路径

如果您的文件名或文件夹名称包含空格,请使用String格式器处理空格。

private void execFFmpegCommand(final String command) { 
    try { 
     ffmpeg.execute(command, new ExecuteBinaryResponseHandler() { 
      @Override 
      public void onFailure(String s) { 
       Log.e("FFMPEG", "FAILED with output : " + s); 
      } 

      @Override 
      public void onSuccess(String s) { 
       Log.e("FFMPEG", "SUCCESS with output : " + s); 
      } 

      @Override 
      public void onProgress(String s) { 
       Log.e("FFMPEG", "Started command : ffmpeg " + command); 
       Log.e("FFMPEG", "progress : " + s); 
      } 

      @Override 
      public void onStart() { 
       Log.e("FFMPEG", "Started command : ffmpeg " + command); 

      } 

      @Override 
      public void onFinish() { 
       Log.e("FFMPEG", "Finished command : ffmpeg " + command); 



      } 
     }); 
    } catch (FFmpegCommandAlreadyRunningException e) { 
     // do nothing for now 
    } 
} 

通过调用下面的方法中onCreate()onCreateView()切割,你必须加载FFmpeg的视频之前。其更好地执行中的AsyncTask此方法。

private void loadFFMpegBinary() { 
     try { 
      if (ffmpeg == null) { 

       ffmpeg = FFmpeg.getInstance(getActivity()); 
      } 
      ffmpeg.loadBinary(new LoadBinaryResponseHandler() { 
       @Override 
       public void onFailure() { 

       } 

       @Override 
       public void onSuccess() { 
        Log.e("FFMPEG", "ffmpeg : correct Loaded"); 
       } 
      }); 
     } catch (FFmpegNotSupportedException e) { 

     } catch (Exception e) { 

     } 
    } 

你也可以做一个RangeSeekbar允许用户使用anothem/android-range-seek-bar库从原始视频选择裁剪视频的时间范围。

UPDATE

以下链接包含我已经写在我的博客ffmpeg的视频编辑器教程,inculdes如何使用FFmpeg的图书馆 -

https://androidlearnersite.wordpress.com/2017/03/17/ffmpeg-video-editor/

下面链接中包含完整的削减视频该教程 - 源代码

https://github.com/bhuvnesh123/FFmpeg-Video-Editor-Android

以下是Play商店中的链接,在创建该应用程序turorial-

https://play.google.com/store/apps/details?id=videoeditor.bhuvnesh.com.ffmpegvideoeditor

+0

好知道的ffmpeg对Android的高级别库。但是 - (1)你能举一个例子说明如何使用它来裁剪视频吗? (2)它的许可证是GPL,这意味着您将不得不为每次安装您的应用程序付费。 – Nativ

+0

@Nativ没有必要在我的答案 –

+0

这是微调的app..check的每次安装支付的更新,但用户要求裁剪 –