example descargar java ffmpeg live-streaming xuggle

descargar - ¿Cómo puedo leer un webstream en vivo en Java usando xuggle?(Puedo hacerlo en ffmpeg, pero no en Xuggle)



xuggler descargar (1)

La cadena fuente rtmp debe estar en el siguiente formato

String rtmpSourceUrl = "rtmp://hostname/appName/streamName";

Entonces recomendaría crear el lector como el siguiente

IContainerFormat inFormat = IContainerFormat.make(); inFormat.setInputFormat("flv"); // set the input format to avoid FFMPEG // probing IMediaReader reader = ToolFactory.makeReader(rtmpSourceUrl); reader.setQueryMetaData(false); reader.setBufferedImageTypeToGenerate(-1); reader.getContainer().setForcedVideoCodec(ID.CODEC_ID_FLV1); reader.getContainer().open(rtmpSourceUrl , IContainer.Type.READ, inFormat, true, false);

¿Esto resuelve tu problema?

Entonces si corro:

ffmpeg -t 10 -re -i "rtmp://170.93.143.150/rtplive/ app=rtplive/ playpath=e000990f025f0075004d823633235daa swfUrl=http://www.chart.state.md.us/video/mediaplayer/player.swf pageUrl=http://www.chart.state.md.us/video/video.asp?feed=e000990f025f0075004d823633235daa stop=5000 flashver=`LNX 11,2,202,262` live=true" test.flv -report

Me da un snapsnot de video de 5 segundos de esa webstream que se pone en test.flv. Ahora me gustaría hacer lo mismo en Java usando xuggle, excepto cada vez que intento y abro el contenedor que me falla y establece x en -1:

public IMediaReader grabStream(IMediaReader reader) throws IOException { String rtmp = "rtmp://170.93.143.150/rtplive/"; rtmp = rtmp + " app=rtplive/"; rtmp = rtmp + " playpath=e000990f025f0075004d823633235daa"; rtmp = rtmp + " swfUrl=http://www.chart.state.md.us/video/mediaplayer/player.swf"; rtmp = rtmp + " pageUrl=http://www.chart.state.md.us/video/video.asp?feed=e000990f025f0075004d823633235daa"; rtmp = rtmp + " flashver=`LNX 11,2,202,262`"; rtmp = rtmp + " live=true"; IContainer container = IContainer.make(); IMediaReader newReader = ToolFactory.makeReader(container); int x = container.open(rtmp, IContainer.Type.READ, null, true, false); if (x < 0) { IError ie = IError.make(x); System.out.println("Open error: " + ie.getType().toString()); throw new RuntimeException("failed to open with error" + x); } return newReader; }

¿Quizás la mejor manera de hacerlo es transmitir en ffmpeg a un contenedor de xuggle usando inputstream de alguna manera? ¿O tal vez hay otra forma de transmitir en una webstream a Java?