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 パケットの最終ヘッダー情報にあるようです。標準の rtp ヘッダーで記録された h263 ビデオを開くことができるためです (ただし、ビデオの品質は非常に悪いです)。