【发布时间】:2017-08-17 05:03:57
【问题描述】:
我最近正在做一个将视频发布到 wowza 服务器的项目。我可以使用 JUV rtmp 客户端 api 从文件中发布视频。但我需要直接从我的笔记本电脑网络摄像头发布视频。我怎么能那样做?请举例说明或演示。
我的流视频文件代码的主要部分在这里:
final NetConnection connection = new NetConnection();
connection.configuration().put(NetConnection.Configuration.INACTIVITY_TIMEOUT, -1);
connection.configuration().put(NetConnection.Configuration.IO_TIMEOUT, 20 /*milliseconds*/);
connection.addEventListener(new NetConnectionListener());
connection.connect("rtmp://localhost:1935/live");
try
{
Thread.sleep(2000);
}
catch (Exception e) {/*ignore*/}
// wait till connected
System.out.println("then connection: "+connection.connected());
final MediaStreamController controller = new MediaStreamController();
final String streamFile = "C://media/JUV.FLV";
controller.addListener(new IMediaStreamController.ListenerAdapter()
{
@Override
public void onStart(final long timestamp, final IMediaStream stream)
{
System.out.println("onStart: " + timestamp + " " + stream);
}
@Override
public void onStop(final long timestamp, final IMediaStream stream)
{
System.out.println("onStop: " + timestamp + " " + stream);
if (stream != null)
{
stream.release();
}
try
{
controller.play(new FlvFileMediaStream(streamFile), -1 /*play the whole file*/);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void onRelease(final long timestamp)
{
System.out.println("onRelease: " + timestamp);
}
});
if (!disconnected)
{
NetStream stream = new NetStream(connection);
stream.addEventListener(new NetStream.ListenerAdapter()
{
@Override
public void onNetStatus(final INetStream source, final Map<String, Object> info)
{
System.out.println("NetStream#onNetStatus: " + info);
final Object code = info.get("code");
if (NetStream.PUBLISH_START.equals(code))
{
try
{ System.out.println("playing: ");
controller.play(new FlvFileMediaStream(streamFile), -1 /*play the whole file*/);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
});
stream.attachAudio(new MediaStreamMicrophone(controller));
stream.attachCamera(new MediaStreamCamera(controller), -1);
stream.publish("stream", NetStream.LIVE);
}
while (!disconnected)
{
try
{
Thread.sleep(100);
}
catch (Exception e) {/*ignore*/}
}
connection.close();
}
【问题讨论】: