/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.packet.mpegts.nw; import java.nio.ByteBuffer; import com.ttProject.packet.MediaPacket; /** * このパケットデータが指定された秒数分のファイルデータとなります。 * Sdt Pat Pmt [keyFrame Audio innerFrame] [keyFrame Audio innerFrame] * となるようにしておきたいと思います。 * * データの長さについては、次のkeyFrame位置から決定してもいいけど、音声データの長さで計算した方がいいかも。 * durationなるべく全体からみて整数倍の部分できりたいところ・・・ * @author taktod */ public class MpegtsPacket extends MediaPacket { /** audioデータのサンプリングレート */ private int audioSampleRate; /** audioデータのサンプル数 */ private int audioSampleNum = 0; /** * audioのサンプリングレートを設定しておく。 * @param rate */ public void setAudioSampleRate(int rate) { audioSampleRate = rate; } /** * サンプル数を追加する。 * @param num */ public void addSampleNum(int num) { audioSampleNum += num; } /** * データの長さを参照する */ public float getDuration() { return (1.0f * audioSampleNum / audioSampleRate); } /** * データの解析を実施します。 * この動作は、ここにいれられたmpegtsのbyteBufferがそのままデータとなります。 */ @Override public boolean analize(ByteBuffer buffer) { // 保持しているbufferを取り出す ByteBuffer buf = getBuffer(buffer.remaining()); buf.put(buffer); // 追加しておく。 return false; } /** * ヘッダーデータであるか応答する。 */ @Override public boolean isHeader() { return false; } @Override public String toString() { StringBuilder data = new StringBuilder(); data.append("size:").append(getBufferSize()); data.append(" duration:").append(getDuration()); return data.toString(); } }