【发布时间】:2017-11-16 12:45:08
【问题描述】:
有一些视频文件(主要是 .mp4)存储在 S3 中。它们可能相当大。我需要获取视频文件的缩略图 - 比如说 0.5 秒的帧(以跳过可能的黑屏等)。
如果我下载整个文件,我可以创建缩略图,但它太长了,我试图避免这种情况并下载一些最小的片段。
我知道how to download first N bytes from AWS S3 - 指定范围的请求,但问题是视频文件已损坏,无法识别为正确的视频。
我试图模拟使用代码检索的标头字节
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) throws Exception {
try(FileInputStream fis = new FileInputStream("D://temp//1.mp4");
FileOutputStream fos = new FileOutputStream("D://temp//1_cut.mp4");
) {
byte[] buf=new byte[1000000];
fis.read(buf);
fos.write(buf);
fos.flush();
System.out.println("Done");
}
}
}
使用静态文件但结果1_cut.mp4 无效。玩家都无法识别它,avconv library。
有没有办法只下载视频文件的片段并从片段中创建图像?
【问题讨论】:
-
如果文件没有准备好渐进式流媒体,您将无法下载其中的一部分并开始解码过程。您可以在 VLC 甚至 chrome 浏览器中使用更大的可公开访问文件进行测试;当您打开并播放 http 链接时,它是缓冲整个文件还是在完全下载之前开始播放?
-
@Mike 下载部分没问题。让我们完全排除 aws 部分。假设我们有一个视频文件并剪切了文件的一部分。是否可以从文件中创建缩略图(或屏幕截图)?
-
您能否详细介绍一下您正在实施的解码器?
-
我完全不相信这会奏效,但可能值得研究修复下载的片段。本站 (stellarinfo.com/blog/repair-corrupt-video-file-vlc-media-player) 声称 VLC 在某些情况下可以修复部分视频文件。
-
@Harry 我没有实现任何解码器。我需要视频文件中的缩略图(快照)。假设第 10 帧视频非常大。我不想下载文件以获得第 10 帧。
标签: java amazon-web-services video amazon-s3 video-capture