如何根据视频的播放时间偏移获取视频的字节偏移量?例如,假设视频的播放时间偏移为15秒,我想知道该秒的字节偏移量。
之所以这样,是因为我希望能够从视频中“修剪”剪辑。我希望能够在视频的00:00:20到00:00:35之间保存视频片段。
目前,这就是我所拥有的 - 但这会将整个视频从网址保存到设备中:
URL url = new URL(http_url_path);
URLConnection ucon = url.openConnection();
// Define InputStreams to read from the URLConnection.
// uses 5KB download buffer
InputStream is = ucon.getInputStream();
BufferedInputStream in = new BufferedInputStream(is, BUFFER_SIZE);
FileOutputStream out = new FileOutputStream(file);
byte[] buff = new byte[BUFFER_SIZE];
int len = 0;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
答案 0 :(得分:2)
如果您不介意在最近的关键帧(a / k /同步帧)切割,可以使用MediaExtractor提取帧,使用getSampleTime()
检查PTS,以及MediaMuxer将它重新组合在一起减去不需要的帧。
视频必须以关键帧开头,因此除非您愿意重新编码该GOP,否则无法在任意点剪切流。
MP4视频文件不仅仅是一系列帧(我假设您没有在原始H.264数据上运行)。 MediaMuxer将负责重写标题和其他支持数据。
答案 1 :(得分:1)
您可以尝试使用INDE Media for Mobile - https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials
它具有代码转换\ remuxing功能作为MediaComposer类,并且可以为结果文件选择段。由于它内部使用MediaCodec API,因此非常适合电池使用,并且工作速度尽可能快。样本在这里:https://github.com/INDExOS/media-for-mobile