1

我使用 GoPro - Quik 手动将标签添加到 mp4 视频。

根据Chriki 对超级用户GoProInfo.cppHMMT的回答,HiLight 标签以 mp4 视频的毫秒数 存储在盒子类型中。

Path = `moov\udta\HMMT`

但是我没有找到任何使用sannies/mp4parser代码的毫秒标记

    InputStream in = new BufferedInputStream(urlConnection.getInputStream());

    ReadableByteChannel chanel = Channels.newChannel(in);

我继续我的研发并得到了这段代码的结果

IsoFile isoFile = new IsoFile(chanel);
                MovieBox movieBox = isoFile.getMovieBox();
                List<UserDataBox> userDataBoxes = movieBox.getBoxes(UserDataBox.class);

                stringBuilder.append("moov>UserBoxes:\n");
                for (int i = 0; i < userDataBoxes.size(); i++) {
                    stringBuilder.append(userDataBoxes.get(i));
                    stringBuilder.append("\n");
                    UserDataBox erDataBox = userDataBoxes.get(i);
                    for (int i1 = 0; i1 < erDataBox.getBoxes().size(); i1++) {
                        stringBuilder.append(erDataBox.getBoxes().get(i));
                        stringBuilder.append("\n");
                    }
                    stringBuilder.append("\n");
                    stringBuilder.append("\n");
                }

输出:

moov>UserBoxes:
UserDataBox[MetaBox[HandlerBox[handlerType=mdir;name=��];AppleItemListBox[org.mp4parser.boxes.apple.AppleEncoderBox@619e00b]]]
    MetaBox[HandlerBox[handlerType=mdir;name=��];AppleItemListBox[org.mp4parser.boxes.apple.AppleEncoderBox@619e00b]]

更新:我得到HMMTisoviewer。它正在使用以下库

<dependency>
            <groupId>com.googlecode.mp4parser</groupId>
            <artifactId>isoparser</artifactId>
            <version>1.1.14</version>
        </dependency>

问题仍未解决,因为 com.googlecode.mp4parserIsoFile 类没有ReadableByteChannel用于从远程流中检索数据的构造函数。

在此处输入图像描述

库的真正问题是它sannies/mp4parser不会UnknownBoxUserDataBoxwhilegooglecode/mp4parser中返回,只有一个库可以与 sannies/mp4parser 的视频 url 一起使用。需要修复或任何解决方法。

任何解决方案。谢谢

4

1 回答 1

0

Quik 软件的问题,它没有像我预期的那样将标签保存在文件中。它根据媒体唯一 ID 保存标签。您必须从使用 GoPro 相机创建的 mp4 视频中读取标签。

从 mp4 url​​ 代码片段获取

InputStream inputStream = new BufferedInputStream(new URL("http://localhost:6582?BRIDGE&%2FGOPR0175.MP4&GOPR0175.MP4&80898399").openConnection().getInputStream());
GoProTagsBox tags = GoProUtil.getHilights(inputStream);

stringBuilder.append("Count: "+tags.getCount());
if(tags.getHiLights() != null){
    for (long l : tags.getHiLights()) {
        stringBuilder.append("\nHiLight: "+l);
    }
}

从 GoPro mp4 文件中获取代码片段

GoProTagsBox tags = GoProUtil.getHilights(new RandomAccessFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/GOPR0175.MP4", "r"));

在两种情况下都可以正常工作。

使用https://github.com/Qamar4P/JaadAndroid android 版本的jaad

于 2017-05-15T09:37:15.333 回答