本文整理汇总了Java中com.xuggle.xuggler.video.IConverter类的典型用法代码示例。如果您正苦于以下问题:Java IConverter类的具体用法?Java IConverter怎么用?Java IConverter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IConverter类属于com.xuggle.xuggler.video包,在下文中一共展示了IConverter类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: addImage
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
/**
* Adds an image as a frame to the current video
* @param image
*/
private void addImage(BufferedImage image){
IPacket packet = IPacket.make();
IConverter converter = ConverterFactory.createConverter(image, coder.getPixelType());
IVideoPicture frame = converter.toPicture(image, Math.round(frameTime));
if (coder.encodeVideo(packet, frame, 0) < 0) {
throw new RuntimeException("Unable to encode video.");
}
if (packet.isComplete()) {
if (writer.writePacket(packet) < 0) {
throw new RuntimeException("Could not write packet to container.");
}
}
this.frameTime += 1000000f/frameRate;
frameCount++;
}
示例2: getConverter
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
/**
* Gets the converter for converting images to pictures.
*
* @param bgrImage the source image (must be type TYPE_3BYTE_BGR)
* @param pixelType the desired pixel type
*/
private IConverter getConverter(BufferedImage bgrImage, IPixelFormat.Type pixelType){
int w = bgrImage.getWidth();
int h = bgrImage.getHeight();
if (converterDim==null) {
converterDim = new Dimension(w, h);
}
if (outConverter==null || w!=converterDim.width || h!=converterDim.height
|| outConverter.getPictureType()!= pixelType) {
try {
outConverter = ConverterFactory.createConverter(bgrImage, pixelType);
converterDim = new Dimension(w, h);
} catch(UnsupportedOperationException e){
System.err.println(e.getMessage());
e.printStackTrace();
}
}
return outConverter;
}
示例3: recordFrame
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
public void recordFrame(BufferedImage frame) {
final BufferedImage image = ConverterFactory.convertToType(frame, BufferedImage.TYPE_3BYTE_BGR);
final IConverter converter = ConverterFactory.createConverter(image, IPixelFormat.Type.YUV420P);
timestamp = (System.currentTimeMillis() - startTime) + timeOffset;
final IVideoPicture f = converter.toPicture(image, timestamp * 1000);
f.setKeyFrame(isFirstShotFrame);
f.setQuality(0);
if (forking) {
synchronized (bufferedFrames) {
bufferedFrames.add(f);
}
} else {
isFirstShotFrame = false;
synchronized (videoWriterLock) {
if (recording)
videoWriter.encodeVideo(0, f);
}
if (timestamp >= ShotRecorder.RECORD_LENGTH * 3) {
logger.debug("Rolling video file {}, timestamp = {} ms", relativeVideoFile.getPath(), timestamp);
fork(false);
}
}
}
示例4: recordFrame
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
public void recordFrame(BufferedImage frame) {
final BufferedImage image = ConverterFactory.convertToType(frame, BufferedImage.TYPE_3BYTE_BGR);
final IConverter converter = ConverterFactory.createConverter(image, IPixelFormat.Type.YUV420P);
final long timestamp = (System.currentTimeMillis() - startTime) + timeOffset;
final IVideoPicture f = converter.toPicture(image, timestamp * 1000);
f.setKeyFrame(isFirstShotFrame);
f.setQuality(0);
isFirstShotFrame = false;
videoWriter.encodeVideo(0, f);
}
示例5: loadFirstFrame
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
/**
* Loads the first frame of the given video and then seeks back to the beginning of the stream.
* @param container the video container
* @param videoCoder the video stream coder
* @return BufferedImage
* @throws MediaException thrown if an error occurs during decoding
*/
private BufferedImage loadFirstFrame(IContainer container, IStreamCoder videoCoder) throws MediaException {
// walk through each packet of the container format
IPacket packet = IPacket.make();
while (container.readNextPacket(packet) >= 0) {
// make sure the packet belongs to the stream we care about
if (packet.getStreamIndex() == videoCoder.getStream().getIndex()) {
// create a new picture for the video data to be stored in
IVideoPicture picture = IVideoPicture.make(videoCoder.getPixelType(), videoCoder.getWidth(), videoCoder.getHeight());
int offset = 0;
// decode the video
while (offset < packet.getSize()) {
int bytesDecoded = videoCoder.decodeVideo(picture, packet, offset);
if (bytesDecoded < 0) {
LOGGER.error("No bytes found in container.");
throw new MediaException();
}
offset += bytesDecoded;
// make sure that we have a full picture from the video first
if (picture.isComplete()) {
// convert the picture to an Java buffered image
BufferedImage target = new BufferedImage(picture.getWidth(), picture.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
IConverter converter = ConverterFactory.createConverter(target, picture.getPixelType());
return converter.toImage(picture);
}
}
}
}
return null;
}
示例6: addImage
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
/**
* Add new image into video stream.
*/
@Override
public void addImage(final Image image) throws IOException {
if (!isOpen()) {
throw new IOException("Current object does not opened yet! Please call #open() method!");
}
final BufferedImage worksWithXugglerBufferedImage = convertToType(TypeConvert.toBufferedImage(image),
BufferedImage.TYPE_3BYTE_BGR);
final IPacket packet = IPacket.make();
IConverter converter = null;
try {
converter = ConverterFactory.createConverter(worksWithXugglerBufferedImage, IPixelFormat.Type.YUV420P);
} catch (final UnsupportedOperationException e) {
throw new IOException(e.getMessage());
}
this.totalTimeStamp += this.incrementTimeStamp;
final IVideoPicture outFrame = converter.toPicture(worksWithXugglerBufferedImage, this.totalTimeStamp);
outFrame.setQuality(0);
int retval = this.outStreamCoder.encodeVideo(packet, outFrame, 0);
if (retval < 0) {
throw new IOException("Could not encode video!");
}
if (packet.isComplete()) {
retval = this.outContainer.writePacket(packet);
if (retval < 0) {
throw new IOException("Could not save packet to container!");
}
}
}
示例7: getPicture
import com.xuggle.xuggler.video.IConverter; //导入依赖的package包/类
/**
* Converts a bgr source image to a xuggle picture.
*
* @param bgrImage the source image (must be type TYPE_3BYTE_BGR)
* @param pixelType the pixel type
* @param timeStamp the timestamp in microseconds
* @return the xuggle picture
*/
private IVideoPicture getPicture(BufferedImage bgrImage, IPixelFormat.Type pixelType, long timeStamp) {
IVideoPicture picture = null;
try {
IConverter converter = getConverter(bgrImage, pixelType);
picture = converter.toPicture(bgrImage, timeStamp);
picture.setQuality(0);
} catch (Exception ex) {
ex.printStackTrace();
} catch (Error err) {
err.printStackTrace();
}
return picture;
}