package com.castlabs.dash.dashfragmenter.cmdlines;
import com.castlabs.dash.dashfragmenter.Command;
import com.coremedia.iso.Hex;
import com.coremedia.iso.IsoFile;
import com.coremedia.iso.boxes.Box;
import com.googlecode.mp4parser.FileDataSourceImpl;
import com.googlecode.mp4parser.boxes.AbstractTrackEncryptionBox;
import com.googlecode.mp4parser.util.Path;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import org.kohsuke.args4j.spi.FileOptionHandler;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.channels.Channels;
import java.util.List;
/**
* Created by sannies on 22.01.2016.
*/
public class ExtractKeyId implements Command {
@Argument(required = true, multiValued = false, handler = FileOptionHandler.class, usage = "MP4 and bitstream input files. In case that an audio input format cannot convey the input's language the filename is expected to be [basename]-[lang].[ext]", metaVar = "vid1.mp4, vid2.mp4, aud1.mp4, aud2-eng.ec3, aud3-fra.aac ...")
protected File inputFile;
public int run() {
try (IsoFile isoFile = new IsoFile(new FileDataSourceImpl(inputFile))) {
List<AbstractTrackEncryptionBox> cenc = Path.getPaths(isoFile, "/moov[0]/trak/mdia[0]/minf[0]/stbl[0]/stsd[0]/enc.[0]/sinf[0]/schi[0]/tenc[0]");
for (AbstractTrackEncryptionBox trackEncryptionBox : cenc) {
System.err.println(trackEncryptionBox.getDefault_KID());
}
List<AbstractTrackEncryptionBox> piff = Path.getPaths(isoFile, "/moov[0]/trak/mdia[0]/minf[0]/stbl[0]/stsd[0]/enc.[0]/sinf[0]/schi[0]/uuid[0]");
for (AbstractTrackEncryptionBox trackEncryptionBox : piff) {
System.err.println(trackEncryptionBox.getDefault_KID());
}
} catch (IOException e) {
System.err.println(e.getMessage());
return 6482;
}
return 0;
}
public void postProcessCmdLineArgs(CmdLineParser cmdLineParser) throws CmdLineException {
}
}