如何在 android 中检测录制视频的方向
How to detect orientation of recorded video in android
朋友们好,我是 android 开发新手,在我的应用程序中使用相机时遇到了一些问题。我正在开发应用程序,在此应用程序中,我正在使用相机的内置功能。在我的应用程序中,摄像头将执行捕获视频的任务,然后我保存捕获的视频。
现在的问题是,当我拍摄视频时,我想知道视频是以哪个方向录制的?因为我通过使用库来提高或降低视频的速度。当我在另一个 activity 中传递这个录制的视频时,这个视频与录制的不一样。所以帮我解决这个问题。
您可以尝试这样做:(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
用于录制视频的 class MediaRecorder
具有以下内容:
mMediaRecorder.setOrientationHint(90);
此提示是在 mp4 容器上设置的,但要注意的是并非所有 mp4 "reader" 或提取器都会考虑此方向。
Android 似乎不是很在意,虽然我可能是错的。
如果我用 ffmpeg 构建 opencv,方向将被忽略,但如果我用 quicktime 构建 opencv,帧会以正确的方向出现。
对文件使用 ffprobe 应该会告诉您文件是否按方向保存。
如果 MediaPlayer 不遵守方向,您可能必须自己解析 mp4 元数据以获得方向,然后根据方向旋转帧。
朋友们好,我是 android 开发新手,在我的应用程序中使用相机时遇到了一些问题。我正在开发应用程序,在此应用程序中,我正在使用相机的内置功能。在我的应用程序中,摄像头将执行捕获视频的任务,然后我保存捕获的视频。
现在的问题是,当我拍摄视频时,我想知道视频是以哪个方向录制的?因为我通过使用库来提高或降低视频的速度。当我在另一个 activity 中传递这个录制的视频时,这个视频与录制的不一样。所以帮我解决这个问题。
您可以尝试这样做:(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
用于录制视频的 class MediaRecorder
具有以下内容:
mMediaRecorder.setOrientationHint(90);
此提示是在 mp4 容器上设置的,但要注意的是并非所有 mp4 "reader" 或提取器都会考虑此方向。
Android 似乎不是很在意,虽然我可能是错的。 如果我用 ffmpeg 构建 opencv,方向将被忽略,但如果我用 quicktime 构建 opencv,帧会以正确的方向出现。
对文件使用 ffprobe 应该会告诉您文件是否按方向保存。
如果 MediaPlayer 不遵守方向,您可能必须自己解析 mp4 元数据以获得方向,然后根据方向旋转帧。