gpt4 book ai didi

android - 从 Android 应用中的 URL 获取视频时长

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:46 24 4
gpt4 key购买 nike

我正在开发一个应用程序,用户可以在其中查看存储在服务器上的所有视频信息和标题。我几乎完成了它,只是无论我如何编码,我都无法从给定的 URL 获取视频持续时间。让我们从互联网上的某个地方获取这个演示视频:CLICK HERE FOR VIDEO PATH我希望该应用无需打开视频本身即可获取视频时长。

我想在 android 上使用的代码是这样的:

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource("https://12-lvl3-pdl.vimeocdn.com/01/1386/0/6932347/10573836.mp4?expires=1461047937&token=037972137fdfc4c2d9902");
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);
Toast.makeText(context,Long.toString(timeInmillisec),Toast.LENGTH_SHORT).show();

但我得到的结果是:java.lang.IllegalArgumentException在第 2 行是“retriever.setDataSource() ”。谁能帮我找出我做错了什么,或者 android 是否提供另一种获取所需信息的方法?

最佳答案

也许您正在寻找 FFmpegMediaMetadataRetriever

FFmpegMediaMetadataRetriever 类为从输入媒体文件中检索帧和元数据提供统一接口(interface)。

通过使用 FFmpegMediaMetadataRetrieverMETADATA_KEY_DURATION 常量,您可以获得视频的持续时间。它会将字符串返回给您,然后您可以将其转换为 LONG 以获得 TIME。

这是您应该使用的代码:

FFmpegMediaMetadataRetriever mFFmpegMediaMetadataRetriever = new MediaMetadataRetriever();
mFFmpegMediaMetadataRetriever .setDataSource("Your video url");
String mVideoDuration = mFFmpegMediaMetadataRetriever .extractMetadata(FFmpegMediaMetadataRetriever .METADATA_KEY_DURATION);
long mTimeInMilliseconds= Long.parseLong(mVideoDuration);

如果上面还是不行,那就用

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
if (Build.VERSION.SDK_INT >= 14)
retriever.setDataSource("Your video url", new HashMap<String, String>());
else
retriever.setDataSource("Your video url");

来自您的代码。

希望对您有所帮助。祝你好运。

关于android - 从 Android 应用中的 URL 获取视频时长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com