我正在编写一个应用程序,使用FFMPEG
修剪Android中的视频。我需要以FFMPEG
的时间单位为00:00:10
提供值。目前我有一个videoview
和两个buttons
。第一个按钮是startTime
,第二个按钮是endTime
。单击按钮时,我使用getCurrentPosition
获取视频的当前位置。我的MediaController
附加了videoview
。
现在我遇到的问题是我得到int
当前位置的值,我无法传递给FFMPEG
如何准确地将其转换为以时间单位获取值,以便我可以将其传递给FFMPEG
以修剪视频。我已经给出了以下代码供您参考。有没有其他方法来获得除此之外的当前时间。提前谢谢。
tVideoView = (VideoView) findViewById(R.id.tVideoView);
startBtn = (Button) findViewById(R.id.tStartBtn);
endBtn = (Button) findViewById(R.id.tEndBtn);
trimBtn = (Button) findViewById(R.id.trimBtn);
tVideoView.setVideoPath(videoPath);
duration = tVideoView.getDuration();
mMedia = new MediaController(this);
mMedia.setMediaPlayer(tVideoView);
mMedia.setAnchorView(tVideoView);
tVideoView.setMediaController(mMedia);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTime = tVideoView.getCurrentPosition();
startBtn.setText(String.valueOf(startTime));
}
});
endBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
endTime = tVideoView.getCurrentPosition();
endBtn.setText(String.valueOf(endTime));
}
});
答案 0 :(得分:1)
将毫秒转换为时间格式的功能
String getVideoTime(long ms)
{
ms/=1000;
return (ms/3600)+":"+((ms%3600)/60)+":"+((ms%3600)%60);
}
并在您的可运行工具或计时器中调用它以更新UI
String tm = getVideoTime(
videoView.getCurrentPosition()) +
" / " +
getVideoTimeFormat(videoView.getCurrentPosition()
);
tvVideoTime.setText(tm);
答案 1 :(得分:0)
您可以使用简单方法以日期格式获取毫秒时间
/**
* Return date in specified format.
* @param milliSeconds Date in milliseconds
* @param dateFormat Date format
* @return String representing date in specified format
*/
public static String getDate(long milliSeconds, String dateFormat)
{
// Create a DateFormatter object for displaying date in specified format.
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
// Create a calendar object that will convert the time value in milliseconds to date.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
return formatter.format(calendar.getTime());
}
要调用方法,
String time = (getDate(12184, "hh:mm:ss"));
这将返回标准时间格式,例如06:00:12