com.xuggle.xuggler.IContainer Java Examples

The following examples show how to use com.xuggle.xuggler.IContainer. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: HLSStreamWriter.java    From red5-hls-plugin with Apache License 2.0 6 votes vote down vote up
public void setup(final SegmentFacade facade, ISimpleMediaFile outputStreamInfo) {
	log.debug("setup {}", outputUrl);
	this.outputStreamInfo = outputStreamInfo;
	this.facade = facade;
	// output to a custom handler
	outputStreamInfo.setURL(outputUrl);
	// setup our mpeg-ts io handler
	MpegTsIoHandler outputHandler = new MpegTsIoHandler(outputUrl, facade);
	MpegTsHandlerFactory.getFactory().registerStream(outputHandler, outputStreamInfo);
	// create a container
	container = IContainer.make();
	log.trace("Container buffer length: {}", container.getInputBufferLength());
	// create format 
	containerFormat = IContainerFormat.make();
	containerFormat.setOutputFormat("mpegts", outputUrl, null);
}
 
Example #2
Source File: StreamWriter.java    From StormCV with Apache License 2.0 5 votes vote down vote up
/**
 * Make a video writer for the given path and dimensions
 * @param path
 * @param width
 * @param height
 */
private void makeWriter(String path, int width, int height){
	writer = IContainer.make();
	writer.open(path, IContainer.Type.WRITE, null);
	
	ICodec videoCodec = ICodec.findEncodingCodec(codec);
	IStream videoStream = writer.addNewStream(videoCodec);
	coder = videoStream.getStreamCoder();
	
	IRational fr = IRational.make(frameRate, 1);
	
	coder.setWidth(width);
	coder.setHeight(height);
	coder.setFrameRate(fr);
	coder.setTimeBase(IRational.make(fr.getDenominator(), fr.getNumerator()));
	coder.setNumPicturesInGroupOfPictures(frameRate);
	if(bitrate > 0) coder.setBitRate(bitrate);
	//coder.setBitRateTolerance(100000);
	coder.setPixelType(Type.YUV420P);
	//coder.setFlag(IStreamCoder.Flags.FLAG2_FAST, true);
	//coder.setGlobalQuality(0);
	
	if(ffmpegParams != null){
		IMetaData options = IMetaData.make();
		for(int i=0; i<ffmpegParams.length; i+=2){
			options.setValue(ffmpegParams[i], ffmpegParams[i+1]);
		}
		coder.open(options, null);
	}else{
		coder.open(null, null);
	}
	writer.writeHeader();
	this.frameTime = 0;
}
 
Example #3
Source File: HLSStreamWriter.java    From red5-hls-plugin with Apache License 2.0 5 votes vote down vote up
public void open() {
	log.debug("open {}", outputUrl);
	// create metadata
	IMetaData meta = IMetaData.make();
	meta.setValue("service_provider", "Red5 HLS");
	meta.setValue("title", outputUrl.substring(outputUrl.indexOf(':') + 1));
	meta.setValue("map", "0");
	meta.setValue("segment_time", "" + facade.getSegmentTimeLimit() / 1000);
	meta.setValue("segment_format", "mpegts");
	//meta.setValue("reset_timestamps", "0"); // 1 or 0
	IMetaData metaFail = IMetaData.make();
	// open the container
	if (container.open(outputUrl, IContainer.Type.WRITE, containerFormat, true, false, meta, metaFail) < 0) {
		throw new IllegalArgumentException("Could not open: " + outputUrl);
	} else {
		if (log.isTraceEnabled()) {
			if (metaFail.getNumKeys() > 0) {
				Collection<String> keys = metaFail.getKeys();
				for (String key : keys) {
					log.trace("Failed to set {}", key);
				}
			}
		}
		//			Properties props = new Properties();			
		//			props.setProperty("map", "0");
		//			//props.setProperty("segment_list type", "m3u8");
		//			//props.setProperty("segment_list", "E:\\dev\\server\\red5-server-1.0\\playlist.m3u8");
		//			//props.setProperty("segment_list_flags", "+live");
		//			props.setProperty("segment_time", "4");
		//			props.setProperty("segment_format", "mpegts");
		//			//props.setProperty("reset_timestamps", "0"); // 1 or 0
		//			int rv = Configuration.configure(props, container);
		//			if (rv < 0) {
		//				throw new RuntimeException("Could not configure the container for " + outputUrl + " " + getErrorMessage(rv));	
		//			}			
	}
}
 
Example #4
Source File: VideoPlayerController.java    From ShootOFF with GNU General Public License v3.0 4 votes vote down vote up
private void playFromBeginning() {
	lastTimestamp = 0;
	mediaReader.open();
	mediaReader.getContainer().seekKeyFrame(0, 0, 0, 0, IContainer.SEEK_FLAG_ANY);
	playVideo();
}
 
Example #5
Source File: RTMPReader.java    From red5-hls-plugin with Apache License 2.0 4 votes vote down vote up
public void init() {
	log.debug("Input url: {}", inputUrl);
	/*
	IContainerFormat format = IContainerFormat.make();
	format.setInputFormat("flv");
	IContainer container = IContainer.make(format);
	container.setReadRetryCount(0);
	container.setInputBufferLength(0);
	container.setProperty("strict", "experimental");
	container.setProperty("analyzeduration", 0); // int = specify how many microseconds are analyzed to probe the input (from 0 to INT_MAX)
	if (container.open(inputUrl, IContainer.Type.READ, null, false, false) < 0) {
	    throw new RuntimeException("Unable to open read container");
	}		
	reader = ToolFactory.makeReader(container);
	*/

	// url only
	reader = ToolFactory.makeReader(inputUrl);
	reader.setCloseOnEofOnly(false);
	reader.setQueryMetaData(true);
	reader.setAddDynamicStreams(false);

	// get the container
	IContainer container = reader.getContainer();
	container.setReadRetryCount(0);
	container.setInputBufferLength(0);
	container.setProperty("analyzeduration", 0); // int = specify how many microseconds are analyzed to probe the input (from 0 to INT_MAX)
	//		container.setProperty("probesize", 1024); // int = set probing size in bytes (from 32 to INT_MAX)
	//		container.setProperty("fpsprobesize", 4); // int = number of frames used to probe
	//		container.setPreload(1);
	//		IContainerFormat format = container.getContainerFormat();
	//		format.setInputFormat("flv");
	//		container.setFormat(format);
	if (videoEnabled) {
		// have the reader create a buffered image that others can reuse
		//reader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
	} else {
		reader.setBufferedImageTypeToGenerate(-1);
	}
	//add this as the first listener
	reader.addListener(this);
}