如何使用开始和剪切功能修剪视频在Android中以编程方式结束时间? [英] How to trim the video with start & end time in android programmatically?

查看:106
本文介绍了如何使用开始和剪切功能修剪视频在Android中以编程方式结束时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想以编程方式在android中根据开始时间和结束时间来修剪本地视频,我尝试在下面附加一些链接,但对我没有用.请让我知道任何可用的库或示例代码来克服这个问题?

引用链接:

  1. Android sdk剪切/修剪视频文件
  2. 如何使用FFMPEG库修剪视频android?
  3. https://superuser.com/questions/377343/cut-part-from-video-file-from-start-position-to-end-position-with-ffmpeg

提前谢谢!

解决方案

使用FFMPEG库解决您的问题.感谢您的写作心思,使ffmpeg对于Android变得简单1. 实现'com.writingminds:FFmpegAndroid:0.3.2'

  1. 初始化ffmpeg

      private void setUpFFmpeg(){ffmpeg = FFmpeg.getInstance(context);尝试 {ffmpeg.loadBinary(new LoadBinaryResponseHandler(){@Override公共无效onStart(){Log.d("Event","onStart");}@Override公共无效onFailure(){Log.d("Event","onFailure");}@Override公共无效onSuccess(){Log.d("Event","onSuccess");}@Override公共无效onFinish(){Log.d("Event","onFinish");}});} catch(FFmpegNotSupportedException e){//处理设备不支持FFmpeg的情况}} 

  2. 使用 FFMPEG命令,例如上面发布的@Mahesh Keshvala.做得好@Mahesh

  3. 然后 execFFmpegBinary(complexCommand); 将像这样

      private void execFFmpegBinary(String []命令){尝试 {ffmpeg.execute(commands,new ExecuteBinaryResponseHandler(){@Override公共无效onStart(){Log.d("Event","onStart");}@Overridepublic void onProgress(String message){Log.e("Event","onProgress-" +消息);}@Overridepublic void onFailure(String message){Log.e("Event","onFailure-" +消息);}@Overridepublic void onSuccess(String message){Log.e("Event","onSuccess-" +消息);}@Override公共无效onFinish(){Log.e("Event","onFinish");}});} catch(FFmpegCommandAlreadyRunningException e){//处理FFmpeg是否已在运行}} 

尝试剪切视频的命令

  String [] complexCommand = {"-ss"," + startMs/1000,"-y","-i",inputFileAbsolutePath,"-t"," +(endMs-startMs)/1000,-s","320x240",-r","15",-vcodec","mpeg4",-b:v","2097152",-b:a","48000",-ac","2",-ar","22050",outputFileAbsolutePath}; 

要了解有关ffmpeg android的更多信息,请参考此链接

I want to trim the local video based on start and end time in android programmatically ,I tried below attached few links but haven't worked for me.Please let me know any working libraries or sample code to overcome this?

Refereed links:

  1. Android sdk cut/trim video file
  2. How to trim the video using FFMPEG library in android?
  3. https://superuser.com/questions/377343/cut-part-from-video-file-from-start-position-to-end-position-with-ffmpeg

Thanks in advance!

解决方案

Use FFMPEG library to solve your problem. Thanks for writingminds to make ffmpeg simple for android 1. implementation 'com.writingminds:FFmpegAndroid:0.3.2'

  1. initialize ffmpeg

    private void setUpFFmpeg() {
    ffmpeg = FFmpeg.getInstance(context);
    
    
    try {
        ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
    
            @Override
            public void onStart() {
                Log.d("Event ", "onStart");
            }
    
            @Override
            public void onFailure() {
                Log.d("Event ", "onFailure");
            }
    
            @Override
            public void onSuccess() {
                Log.d("Event ", "onSuccess");
            }
    
            @Override
            public void onFinish() {
                Log.d("Event ", "onFinish");
    
            }
        });
    } catch (FFmpegNotSupportedException e) {
        // Handle if FFmpeg is not supported by device
    }
    }
    

  2. use FFMPEG command like @Mahesh Keshvala posted above. Good work @Mahesh

  3. then execFFmpegBinary(complexCommand); will be like this

    private void execFFmpegBinary(String[] command){
          try {
    
        ffmpeg.execute(commands, new ExecuteBinaryResponseHandler() {
    
            @Override
            public void onStart() {
                Log.d("Event ", "onStart");
            }
    
            @Override
            public void onProgress(String message) {
                Log.e("Event ", "onProgress - " + message);
    
            }
    
            @Override
            public void onFailure(String message) {
                Log.e("Event ", "onFailure - " + message);
    
            }
    
            @Override
            public void onSuccess(String message) {
                Log.e("Event ", "onSuccess - " + message);
    
            }
    
            @Override
            public void onFinish() {
                Log.e("Event ", "onFinish");
    
            }
        });
    } catch (FFmpegCommandAlreadyRunningException e) {
        // Handle if FFmpeg is already running
     }
    }
    

try command for cut video

String[] complexCommand = {"-ss", "" + startMs / 1000, "-y", "-i", inputFileAbsolutePath, "-t", "" + (endMs - startMs) / 1000, "-s", "320x240", "-r", "15", "-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", outputFileAbsolutePath};

to know more about ffmpeg android refer this link

这篇关于如何使用开始和剪切功能修剪视频在Android中以编程方式结束时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆