1

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 ビデオを開くことができるためです (ただし、ビデオの品質は非常に悪いです)。

4

2 に答える 2

0

RTP パケットからビデオ データをアンパックする必要があります。

于 2015-12-23T13:05:22.830 に答える