发布
社区首页 >问答首页 >如何检查MP4视频是否有音频?

如何检查MP4视频是否有音频?
EN

Stack Overflow用户
提问于 2019-12-30 09:49:02
回答 3查看 1.4K关注 0票数 2

我正在使用API中的URL。有些网址是没有声音的MP4(视频播放时没有声音)。如何检查视频是否有声音?我一直在搜索SimpleExoPlayer文档,并在URLS上测试这些方法

过去几个小时的https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/SimpleExoPlayer.html

但是我不知道如何检测视频播放是否有声音。

尝试了getAudioAttributes(),getAudioComponents()中的所有方法,现在只尝试了getAudioFormat(),但它们都返回null。

代码语言:javascript
代码运行次数:0
复制
try{
     Log.d(TAG, "onCreateView: " + player.getAudioFormat().channelCount);
}catch (Exception e){
     Log.d(TAG, "onCreateView: " + e);
}

是的,我已经确定这个链接是有音频的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-08 15:46:37

您可以使用Player#EventListener#OnTracksChanged跟踪当前曲目,并使用Player#getCurrentTrackGroups()获取当前曲目。如果你浏览一下曲目组,你可以找到类型。如果你在那里找到音频类型,那就意味着你的视频文件包含音频轨道。

如果您还想检查是否选择了任何音轨,那么Player#getCurrentTrackSelections()是要查看的地方。

票数 7
EN

Stack Overflow用户

发布于 2020-02-08 20:54:15

为了完成@Hamza Khan的回答,下面是我的代码,用于检查加载的视频是否有音频:

代码语言:javascript
代码运行次数:0
复制
override fun onTracksChanged(
    trackGroups: TrackGroupArray?,
    trackSelections: TrackSelectionArray?
) {
    if (trackGroups != null && !trackGroups.isEmpty){
        for (arrayIndex in 0 until trackGroups.length){
            for (groupIndex in 0 until trackGroups[arrayIndex].length){
                val sampleMimeType = trackGroups[arrayIndex].getFormat(groupIndex).sampleMimeType
                if ( sampleMimeType != null && sampleMimeType.contains("audio") ){
                    //video contains audio
                }
            }
        }
    }
}
票数 5
EN

Stack Overflow用户

发布于 2021-02-08 06:45:42

代码语言:javascript
代码运行次数:0
复制
 player.addListener(new Player.EventListener() {
            @Override
            public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
                if (trackGroups != null && !trackGroups.isEmpty()) {
                    for (int i = 0; i < trackGroups.length; i++) {
                        for (int g = 0; g < trackGroups.get(i).length; g++) {
                            String sampleMimeType = trackGroups.get(i).getFormat(g).sampleMimeType;
                            if (sampleMimeType != null && sampleMimeType.contains("audio")) {
                                                    //video contains audio
                            }
                        }
                    }
                }
            }
        }

JAVA版本的mrj answer

遇到了这个帖子,这对我帮助很大!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59524856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档