【问题标题】:How to get length in milliseconds of video from URL without video view in Android?如何在没有视频视图的情况下从 Android 中的 URL 获取以毫秒为单位的视频长度?
【发布时间】:2013-04-28 04:16:42
【问题描述】:

我正在 Android 中制作媒体播放器。我需要一个代码才能在不使用视频视图的情况下获取视频长度。

我在堆栈溢出中看到了许多页面,但曾经有一个页面用于显示如何在视频视图中获取视频的长度,但我需要没有视频视图。

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以使用MediaMetadataRetriever 获取此类信息。此类旨在供希望获取有关媒体的特定信息而无需使用 MediaPlayer 的用户使用。

    这是一个如何使用它的示例:

    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    retriever.setDataSource(your_data_source);
    String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    long timeInmillisec = Long.parseLong( time );
    long duration = timeInmillisec / 1000;
    long hours = duration / 3600;
    long minutes = (duration - hours * 3600) / 60;
    long seconds = duration - (hours * 3600 + minutes * 60);
    

    【讨论】:

    • 此代码不适用于 Android 2.2 和 API
    • 不,MediaMetadataRetriever 类只存在于 API10+ 上。
    • 我刚刚运行了这段代码,仅查询 20 个视频时速度很慢。
    • 是的,MediaMetadataRetriever 导致框架实际解析媒体以获取特殊的标头或元数据帧,所以我相信这可能需要一些时间,尤其是在它获取远程媒体的情况下。
    • @HalimQarroum 我在 android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriev 我正在传递远程 url(不是本地文件路径)处收到此错误 java.lang.IllegalArgumentException)
    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多