【发布时间】:2011-11-07 12:01:30
【问题描述】:
我想将从 rtp(实时)流录制的 H264 视频存储到文件中。 我用一个简单的java程序试过这个,但是vlc播放器无法打开文件。
这是我的代码:
try
{
socket = new DatagramSocket(port);
fos = new FileOutputStream(filePath + outputFileName);
do
{
DatagramPacket in = new DatagramPacket(inData, inData.length);
socket.receive(in);
byte[] bytes = in.getData();
if (curPos < buffer.length)
{
for (int i = 0; i < bytes.length; i++)
{
buffer[curPos] = bytes[i];
curPos++;
if (curPos >= buffer.length)
{
receivePackets = false;
break;
}
}
}
else
{
receivePackets = false;
}
Thread.sleep(SOCKET_TIMEOUT);
}
while (receivePackets);
fos.write(buffer, 0, buffer.length);
if (fos != null)
{
fos.close();
}
if (socket != null)
{
socket.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
文件将被创建,但无法打开它。 是否有任何标题信息我必须剪切或添加到字节数组以获得正确的视频文件?
更新:
好的,问题似乎是h264 rtp数据包的nal header信息,因为我可以打开一个带有标准rtp header的录制h263视频(但是视频质量真的很差)。
【问题讨论】:
-
嗨 Rithe,你解决了这个问题吗?如何从 rtp 数据包录制视频?您是否使用任何 RTP 库来剥离 RTP 标头,以便您可以让 NAL 单元将其写入文件?问候,拉姆
-
我还没有将数据保存到文件中。我试图通过 RTP/RTSP 实现直播。如果您仍在寻找解决方案,spydroid application 可能包含一些有用的信息。
标签: java video-streaming h.264 rtp fileoutputstream