Создание пакетов RTP с камеры Android для отправки

Я новичок в программировании на устройствах Android и сокетов. Я хочу создать приложение для Android, которое передает видео с камеры устройства на ПК. Сначала я получаю необработанные видеоданные из аргументов PreviewCallback и конвертирует их в RTP-пакет. Я просто использовал JLibRTP для этого. Что касается переноса пакета, я думаю, есть некоторые связанные классы: RtpPkt, RtpSession и RtpSocket.

Вот мой код взгляда:

DatagramSocket rtpSocket = new DatagramSocket();
DatagramSocket rtcpSocket = new new DatagramSocket();
RtpSession rtpSession = new RtpSession(rtpSocket, rtcpSocket);

public void surfaceCreated(SurfaceHolder holder) {
    try {
            camera = Camera.open();
            camera.setPreviewCallback(new PreviewCallback() {
                public void onPreviewFrame(byte[] _data, Camera _camera) {
                int height = 240;
                    try {
                        rtps.sendData(_data);
                     } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), e.toString(),
                        Toast.LENGTH_SHORT).show();
                    }
                }
            });
            camera.setPreviewDisplay(holder);
            camera.startPreview();
    } catch (IOException e) {
            Log.d("CAMERA", e.getMessage());
    }
}

Мне все еще интересно, где я должен указывать информацию о адресе и порте. Я знаю, что код выше все еще нуждается в исправлении от вас любого мастера. Спасибо за продвижение..

Ответы

Ответ 1

Я не знаю, включает ли эта библиотека что-то, чтобы передать пакеты на компьютер, но если нет, у вас есть проблема, потому что андроид поддерживает только потоки RTP с версии 3.1 (уровень API 12). если ваш уровень ниже, вам нужно написать собственный "rtp-сервер", который способен передавать пакеты с вашего устройства на компьютер.

для получения дополнительной информации проверьте проект sipdroid. они создали свой собственный "rtp-сервер": http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java

UPDATE:

Другая возможность заключается в использовании ffserver из библиотек ffmpeg, но вы должны скомпилировать библиотеки для android. вот небольшой учебник, как это сделать и как работать с библиотеками: Как создать FFmpeg для Android

UPDATE2:

spydroid application - очень хороший пример для потоковой передачи видео с устройства Android без каких-либо внешних библиотек.