如何在 Swift 中读取视频文件的第一个和最后一个 64kb
How to read first and last 64kb of a video file in Swift
我想使用 subtitle API。它需要视频文件第一个和最后一个 64kb 的 md5 散列。我知道如何做 md5 部分只是想知道我将如何获得 128kb 的数据。
这是 Java 中问题的解决方案,我无法在 Swift 中实现。 Stack
我有一个视频 URL,如何从中获取第一个和最后一个 64kb?上 AlamoFire 然后呢?
下面是在 Java、
中是如何完成的
FileInputStream in = new FileInputStream("d:/1.avi");
byte[] a = new byte[64 * 1024];
in.read(a); //head
long p = in.getChannel().size() - 64 * 1024;
in.getChannel().position(p);
in.read(a); //tail
正确的做法如下:
let data = try! Data(contentsOf: URL(string: <#Insert your URL#>)!) // should do some unwrapping precautions here
// first 64 bytes
let first = data.subdata(in: 0 ..< 65336) // 65336 bytes = 1kb (if 1kb = 1024 bytes)
// last 64 bytes
let last = data.subdata(in: (data.count - 65336)..<data.count) // data.count - 65366 = last 64 bytes of the file
因此,首先下载文件(例如使用 Alamofire)。完成后,将 URL 放入 URL
初始化程序的 string:
参数中。
然后,使用变量first
和last
得到md5。
我想使用 subtitle API。它需要视频文件第一个和最后一个 64kb 的 md5 散列。我知道如何做 md5 部分只是想知道我将如何获得 128kb 的数据。
这是 Java 中问题的解决方案,我无法在 Swift 中实现。 Stack
我有一个视频 URL,如何从中获取第一个和最后一个 64kb?上 AlamoFire 然后呢?
下面是在 Java、
中是如何完成的FileInputStream in = new FileInputStream("d:/1.avi");
byte[] a = new byte[64 * 1024];
in.read(a); //head
long p = in.getChannel().size() - 64 * 1024;
in.getChannel().position(p);
in.read(a); //tail
正确的做法如下:
let data = try! Data(contentsOf: URL(string: <#Insert your URL#>)!) // should do some unwrapping precautions here
// first 64 bytes
let first = data.subdata(in: 0 ..< 65336) // 65336 bytes = 1kb (if 1kb = 1024 bytes)
// last 64 bytes
let last = data.subdata(in: (data.count - 65336)..<data.count) // data.count - 65366 = last 64 bytes of the file
因此,首先下载文件(例如使用 Alamofire)。完成后,将 URL 放入 URL
初始化程序的 string:
参数中。
然后,使用变量first
和last
得到md5。