web-dev-qa-db-ja.com

GoProカメラはHiLightタグをどのように/どこに保存しますか?

一言で言えば私の質問

GoProカメラはどのように/どこに保存しますか HiLightタグ

HiLightタグを探した場所

私はすでに次の場所で作成されたタグを見つけようとしましたが、役に立ちませんでした。

  • MP4タグとHiLightタグ付きのビデオファイルの章を見てきました。
  • SDカードをSDカードリーダーにマウントして、カード上のすべてのファイルを表示できるようにしました(つまり、 [〜#〜] mtp [〜#〜] を介して表示されるファイルだけではありません)カメラ自体を接続する場合)。タグを含むファイルはありません

Windowsマシンでは、GoProStudioでタグを確認できます。私のGoProHERO4 Silverは、再生モードでもディスプレイにタグを表示します。 GoProアプリでは、タグも表示されます。

なぜこれが必要なのですか?

私は興味がある!わかりました、それだけではありません;)私はGoProStudioが利用できないLinuxマシンでも作業しています。作成したHiLightタグを引き続き使用できるようにしたいと思います。

3
Chriki

HiLightタグを見つけました。それらはMP4ファイル自体に保存されています。

特に、タグは、MPEG-4コンテナのムービーボックス(HMMT)のユーザーデータボックス(udta)のタイプmoovのボックスに保存されます。 ISO/IEC 14496-12 これらの「ボックス」の詳細については。

HMMTボックスは、非標準(GoPro固有)のISO/IEC14496-12ボックスのようです。そのデータは、1つ以上の32ビット整数で構成されます。最初の整数には、使用可能なHiLightタグの数が含まれます。後続のすべての整数は、HiLightタグの順序付きリストに似ています。各HiLightタグは、ミリ秒の値として表されます。

3
Chriki

これらのマーカーを見つけるためのサンプルコードを次に示します。PHPリーダーライブラリ( https://code.google.com/p/php-reader/wiki/ISO14496 =)。

require_once 'Zend/Media/Iso14496.php'; 
$isom = new Zend_Media_Iso14496($file);

$hmmt = $isom->moov->udta->HMMT;
if ( isset($hmmt)) {
    $reader = $hmmt->getReader();
    $reader->setOffset($hmmt->getOffset());

    $reader->readHHex(4);//skip some bytes 
    $reader->readHHex(4);//skip some bytes    

    $n = $reader->readInt32BE(); //number of points

    for ($i = 1; $i <= $n; $i++) {
        $t = $reader->readInt32BE();
        print_r($t); // marker in ms
        echo "\n";
    }
}

GetReader()は残念ながら実装されていない関数であり、Zend/Media/Iso14496 /Box.phpにハッキングしました

public function getReader() {
    return $this->_reader;
}

Javaでそれを実行したい場合は、このライブラリがおそらく役に立ちます(ファイルを詳細に調べるのに役立ちました) https://github.com/sannies/isoviewer

1
wessel