如何在Android或Java的mp4视频中获取GoPro HiLight标签

时间:2017-04-20 11:20:31

标签: java android mp4parser gopro

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

根据Chriki answer on superuserGoProInfo.cpp HiLight标签以mp4视频的毫秒数存储在HMMT类型的框中。

Path = `moov\udta\HMMT`

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

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

    ReadableByteChannel chanel = Channels.newChannel(in);

我继续我的R& D并获得此代码的结果

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]]

更新:我HMMT获得了<dependency> <groupId>com.googlecode.mp4parser</groupId> <artifactId>isoparser</artifactId> <version>1.1.14</version> </dependency> 。 它正在使用以下库

com.googlecode.mp4parser

问题仍未解决原因 ReadableByteChannel IsoFile类没有用于从远程流中检索数据的sannies/mp4parser构造函数。

isoviewer

库的真正问题是UnknownBox不会从UserDataBox返回googlecode/mp4parserconst cookies: any = NSHTTPCookieStorage.sharedHTTPCookieStorage.cookies; if (typeof cookies !== 'undefined') { for (let i = 0; i < cookies.count; i++) { const cookie: NSHTTPCookie = <NSHTTPCookie>cookies.objectAtIndex(i); // let cookie: any = cookies[i]; console.log(cookie); NSHTTPCookieStorage.sharedHTTPCookieStorage.deleteCookie(cookie); } } console.log(NSHTTPCookieStorage.sharedHTTPCookieStorage.cookies); 执行但是只有库使用sannies / mp4parser的视频网址。需要修复或任何解决方法。

任何解决方案。感谢

1 个答案:

答案 0 :(得分:0)

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

从mp4网址代码段获取

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

jaad个android版本