Я хочу сохранить видео H264, записанное из потока rtp (live) в файл.
Я пробовал это с простой программой Java, но VLC Player не может открыть файл.
вот мой код:
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();
}
файл будет создан, но открыть его невозможно.
Есть ли какая-либо информация заголовка, которую я должен вырезать или добавить в байтовый массив, чтобы получить правильный видеофайл?
UPDATE:
хорошо, проблема, по-видимому, заключается в информации nal заголовка пакета h264 rtp, потому что я могу открыть записанное видео h263 со стандартным заголовком rtp (но качество видео действительно плохое).