本人对流媒体操作不是很熟练,那位流媒体大侠能做这样的操作。
说明用Java实现对一个AVI文件的构造生成,可以对一个AVI文件中间插入一段视频,能够在AVI文件中插入音频信息,从而生成一个新的AVI文件。
不是使用JMF方式。
例如: 声明一个 VideoStreamFormat类import java.io.IOException;
import java.io.RandomAccessFile;class VideoStreamFormat
{
short bitsPerPixel;
int colorsImportant;
int colorsUsed;
int compressionType;
int headerSize;
int height;
int imageSize;
short numPlanes;
int[] palette;
int paletteCount;
int width;
int xPelsPerMeter;
int yPelsPerMeter; public void write(RandomAccessFile paramRandomAccessFile)
throws IOException
{
int i = 0;
paramRandomAccessFile.writeBytes("strf");
long l1 = paramRandomAccessFile.getFilePointer();
Util.writeInt(paramRandomAccessFile, i);
int j = this.headerSize;
Util.writeInt(paramRandomAccessFile, j);
int k = this.width;
Util.writeInt(paramRandomAccessFile, k);
int l = this.height;
Util.writeInt(paramRandomAccessFile, l);
int i1 = this.numPlanes;
Util.writeShort(paramRandomAccessFile, i1);
int i2 = this.bitsPerPixel;
Util.writeShort(paramRandomAccessFile, i2);
int i3 = this.compressionType;
Util.writeInt(paramRandomAccessFile, i3);
int i4 = this.imageSize;
Util.writeInt(paramRandomAccessFile, i4);
int i5 = this.xPelsPerMeter;
Util.writeInt(paramRandomAccessFile, i5);
int i6 = this.yPelsPerMeter;
Util.writeInt(paramRandomAccessFile, i6);
int i7 = this.colorsUsed;
Util.writeInt(paramRandomAccessFile, i7);
int i8 = this.colorsImportant;
Util.writeInt(paramRandomAccessFile, i8);
}
}
然后定义一个AVI的类,以 VideoStreamFormat 类基础,对AVI类做插入视频和音频的操作。
在AVI类中左如下定义public class Avi
{
AudioStreamFormat audioStreamFormat;
StreamHeader audioStreamHeader;
AviHeader aviHeader;
long er;
int offsetCount;
int[] offsets;
int offsetsLen;
int offsetsPtr;
long offsetsStart;
RandomAccessFile out;
VideoStreamFormat videoStreamFormat;
StreamHeader videoStreamHeader; 定义 public void addFrame(byte[] paramArrayOfByte, int paramInt) 方法加入图像信息。
定义 public void addAudio(byte[] paramArrayOfByte, int paramInt) 方法加入音频信息。
等等。
}
说明用Java实现对一个AVI文件的构造生成,可以对一个AVI文件中间插入一段视频,能够在AVI文件中插入音频信息,从而生成一个新的AVI文件。
不是使用JMF方式。
例如: 声明一个 VideoStreamFormat类import java.io.IOException;
import java.io.RandomAccessFile;class VideoStreamFormat
{
short bitsPerPixel;
int colorsImportant;
int colorsUsed;
int compressionType;
int headerSize;
int height;
int imageSize;
short numPlanes;
int[] palette;
int paletteCount;
int width;
int xPelsPerMeter;
int yPelsPerMeter; public void write(RandomAccessFile paramRandomAccessFile)
throws IOException
{
int i = 0;
paramRandomAccessFile.writeBytes("strf");
long l1 = paramRandomAccessFile.getFilePointer();
Util.writeInt(paramRandomAccessFile, i);
int j = this.headerSize;
Util.writeInt(paramRandomAccessFile, j);
int k = this.width;
Util.writeInt(paramRandomAccessFile, k);
int l = this.height;
Util.writeInt(paramRandomAccessFile, l);
int i1 = this.numPlanes;
Util.writeShort(paramRandomAccessFile, i1);
int i2 = this.bitsPerPixel;
Util.writeShort(paramRandomAccessFile, i2);
int i3 = this.compressionType;
Util.writeInt(paramRandomAccessFile, i3);
int i4 = this.imageSize;
Util.writeInt(paramRandomAccessFile, i4);
int i5 = this.xPelsPerMeter;
Util.writeInt(paramRandomAccessFile, i5);
int i6 = this.yPelsPerMeter;
Util.writeInt(paramRandomAccessFile, i6);
int i7 = this.colorsUsed;
Util.writeInt(paramRandomAccessFile, i7);
int i8 = this.colorsImportant;
Util.writeInt(paramRandomAccessFile, i8);
}
}
然后定义一个AVI的类,以 VideoStreamFormat 类基础,对AVI类做插入视频和音频的操作。
在AVI类中左如下定义public class Avi
{
AudioStreamFormat audioStreamFormat;
StreamHeader audioStreamHeader;
AviHeader aviHeader;
long er;
int offsetCount;
int[] offsets;
int offsetsLen;
int offsetsPtr;
long offsetsStart;
RandomAccessFile out;
VideoStreamFormat videoStreamFormat;
StreamHeader videoStreamHeader; 定义 public void addFrame(byte[] paramArrayOfByte, int paramInt) 方法加入图像信息。
定义 public void addAudio(byte[] paramArrayOfByte, int paramInt) 方法加入音频信息。
等等。
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货