android - Android中如何根据Video的播放时间偏移获取字节偏移量?

标签 android video mediaextractor

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

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

目前,这是我所拥有的 - 但这会将整个视频从 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);
}

最佳答案

如果你不介意在最近的关键帧(a/k/a 同步帧)剪切,你可以使用 MediaExtractor提取帧,使用 getSampleTime() 检查 PTS,和 MediaMuxer将它放回原处,去掉不需要的框架。

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

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

关于android - Android中如何根据Video的播放时间偏移获取字节偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905664/

相关文章:

android - 在 fragment 和 Activity 之间进行通信 - 最佳实践

android - 如何检测私有(private)号码

c# - 在 Debug模式下的DirectX音频视频错误消息

android - 使用 MediaDrm 在 Android 中解密受 Widevine DRM 保护的视频

android - Facebook SDK Android 不断加载

ios - 如何修复 'Video play but don' t have sound on iOS with expo'

audio - 如何使用 FFMPEG 从没有音频的图像转换 MP4 视频文件?

Android MediaCodec如何准确帧裁剪音频

android - 在 Android 上识别 HE-AAC 音频以便正确解码和播放

android - 如何从 SQLite 中检索特定列并将其显示在 Android 中的 ListView 表单中?