1

如何根据视频的播放时间偏移量获取视频的字节偏移量?例如,给定视频的播放时间偏移量为 15 秒,我想知道那一秒的字节偏移量。

这样做的原因是因为我希望能够从视频中“修剪”剪辑。我希望能够保存从 00:00:20 到 00:00:35 的视频剪辑。

目前,这就是我所拥有的 - 但这会将整个视频从 url 保存到设备:

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);
}
4

2 回答 2

2

如果您不介意在最近的关键帧(a/k/a 同步帧)切割,您可以使用MediaExtractor提取帧,getSampleTime()用于检查 PTS,并使用MediaMuxer将其重新组合在一起减去不需要的帧。

视频必须以关键帧开始,因此除非您愿意重新编码该 GOP,否则您不能在任意点剪切流。

MP4 视频文件不仅仅是一系列帧(我假设您没有处理原始 H.264 数据)。MediaMuxer 将负责重写标头和其他支持数据。

于 2015-03-06T19:12:14.840 回答
1

您可以尝试 INDE Media for Mobile - https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials

它具有作为 MediaComposer 类的转码\remuxing 功能,并且可以为结果文件选择段。由于它在内部使用 MediaCodec API,因此对电池非常友好并且运行速度尽可能快。样品在这里:https ://github.com/INDExOS/media-for-mobile

在此处输入图像描述

于 2015-03-10T09:51:35.217 回答