如何从Android中的URL获取详细视频信息

时间:2017-07-13 13:50:39

标签: java android url video

我正在寻找能够从Android网址获取详细视频信息(如持续时间,视频缩略图...)的解决方案吗?

2 个答案:

答案 0 :(得分:3)

您在StackOverflow上已经回答了2个不同的问题。

要检索视频时长和其他元数据,请参阅this answer

  

也许您正在寻找FFmpegMediaMetadataRetriever

     

FFmpegMediaMetadataRetriever 类为输入媒体文件中的检索框架和元数据提供统一的界面。

     

使用 METADATA_KEY_DURATION 常量    FFmpegMediaMetadataRetriever 您可以获取视频的持续时间。它会将字符串返回给您,然后您可以将其转换为   很快得到时间。

     

以下是您应该使用的代码:

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");

要下载缩略图,请参阅this answer

  

无需下载视频,您可以从以下代码生成缩略图:

public static Bitmap retriveVideoFrameFromVideo(String videoPath) throws Throwable
{
    Bitmap bitmap = null;
    MediaMetadataRetriever mediaMetadataRetriever = null;
    try
    {
        mediaMetadataRetriever = new MediaMetadataRetriever();
      if (Build.VERSION.SDK_INT >= 14)
          mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
      else
          mediaMetadataRetriever.setDataSource(videoPath);
   //   mediaMetadataRetriever.setDataSource(videoPath);
        bitmap = mediaMetadataRetriever.getFrameAtTime();
    } catch (Exception e) {
      e.printStackTrace();
      throw new Throwable("Exception in retriveVideoFrameFromVideo(String videoPath)" + e.getMessage());

    } finally {
        if (mediaMetadataRetriever != null) {
          mediaMetadataRetriever.release();
        }
    }
    return bitmap;
}

这两个答案都适用于Android,不需要下载整个视频。

答案 1 :(得分:0)

尝试此操作以从网址获取视频缩略图

public static Bitmap retriveVideoFrameFromVideo(String videoPath)
        throws Throwable
{
    Bitmap bitmap = null;
    MediaMetadataRetriever mediaMetadataRetriever = null;
    try
    {
        mediaMetadataRetriever = new MediaMetadataRetriever();
        if (Build.VERSION.SDK_INT >= 14)
            mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
            else
                mediaMetadataRetriever.setDataSource(videoPath);
     //   mediaMetadataRetriever.setDataSource(videoPath);
        bitmap = mediaMetadataRetriever.getFrameAtTime();
    }
    catch (Exception e)
    {
        e.printStackTrace();
        throw new Throwable(
                "Exception in retriveVideoFrameFromVideo(String videoPath)"
                        + e.getMessage());

    }
    finally
    {
        if (mediaMetadataRetriever != null)
        {
            mediaMetadataRetriever.release();
        }
    }
    return bitmap;
}

信用额转到@nilesh Rathod