如何在使用Android MediaPlayer时获取视频流的信息,如SAR和DAR等信息

时间:2016-12-14 10:50:28

标签: android video media-player

everyVideo有Stream信息,就像这样。 - > #0:0(eng):视频:h264(约束基线)(avc1 / 0x31637661),yuv420p,576x432 [SAR 1:1 DAR 4:3]

我使用MediaPlayer播放视频,就像这样。

MediaPlayer mInternalMediaPlayer = new MediaPlayer();
mInternalMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mInternalMediaPlayer.setDataSource(source);
mInternalMediaPlayer.prepareAsync();

我希望获得视频的存储宽高比来计算显示宽高比,我该怎么办?

1 个答案:

答案 0 :(得分:0)

存储宽高比是视频中水平与垂直像素的比率。

因此,1280x720的视频的SAR为16:9,640×480的视频的SAR为4:3,依此类推。

DAR是显示宽高比 - 如果匹配则显示视频更容易。如果它们不匹配则需要“压扁”或扭曲像素以显示视频,并且它们失真的程度是像素宽高比。

他们是这样的:

  • PAR = DAR / SAR

因此,要获得存储宽高比,您只需要常规视频宽高比。

您可以使用“MediaMetadataRetriever”对象获取此内容:https://developer.android.com/reference/android/media/MediaMetadataRetriever.html

一个例子是:

MediaMetadataRetriever videoMetaRetriever = new MediaMetadataRetriever();


String videoWidth = videoMetaRetriever.extractMetadata(
                    MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);

String videoHeight = videoMetaRetriever.extractMetadata(
                    MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);