朋友您好我是Android开发新手,我在使用相机时遇到了一些问题。我正在开发应用程序,在这个应用程序中我使用相机的内置功能。在我的应用程序相机中,将执行捕获视频的任务,然后保存捕获的视频。
现在的问题是,当我拍摄视频时,我想知道在哪个方向录制视频?因为我通过使用库来增加或减少视频的速度。当我在另一个活动中传递这个录制的视频时,这个视频并不像录制的那样。所以帮我解决这个问题。
答案 0 :(得分:2)
您可以尝试执行以下操作:( viewSource
是您的视频源)
MediaPlayer mp = new MediaPlayer();
String orientation = "";
try {
mp.setDataSource(viewSource);
mp.prepare();
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
if(width < height){
orientation = "vertical";
} else {
orientation = "horizontal";
}
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
您可以在此处查看更多变体:Detect orientation of a recorded video in android
答案 1 :(得分:2)
用于录制视频的课程MediaRecorder
包含:
mMediaRecorder.setOrientationHint(90);
此提示是在mp4容器上设置的,但问题是并非所有mp4“阅读器”或提取器都考虑到这种方向。
虽然我错了,但Android似乎并不在乎。 如果我使用ffmpeg构建opencv,则会忽略方向,但如果我使用quicktime构建opencv,则框架会以正确的方向显示。在文件上使用ffprobe应告诉您文件是否以方向保存。
如果MediaPlayer不遵守方向,您可能必须自己解析mp4元数据以获取方向,然后按照旋转帧。