Записать видеопоток RTP (кодек H264) в файл mp4 - PullRequest
1 голос
/ 31 августа 2011

Я хочу сохранить видео 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 (но качество видео действительно плохое).

1 Ответ

0 голосов
/ 23 декабря 2015

Вы должны распаковать видеоданные из пакетов RTP

...