2014-03-05 63 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的每次安裝支付的更新,但用戶要求裁剪 –