我想将从 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 头信息,因为我可以打开带有标准 rtp 头的录制的 h263 视频(但视频质量真的很差)。