Подтвердить что ты не робот

UDP или RTP потоковое решение для Android

Мне нужно создать приложение для Android, чтобы отобразить прямой канал ТВ. приложение должно воспроизводить потоки видео в реальном времени из многоадресной передачи шлюза DVB, по словам поставщика шлюза, он может передавать UDP или RTP. Я установил vlc на свой компьютер, чтобы выпустить UDP и RTP и сломал пальцы, пытаясь заставить их показать их. через некоторое время я узнал, что андроид поддерживает только прямые потоки HTTP/S и RTSP. Я пробовал все решения FFMPEG и разных медиаплееров, пока не добился успеха. Я не эксперт по видео, но, насколько мне известно, RTSP - это инкапсуляция RTP, может ли мой RTP-канал быть обернут и потоковым (даже через прокси)? Кто-нибудь знает о рабочем решении UDP?

спасибо

Я начал писать туннель, который передает локальный поток UDP с порта 1234, на TCP-соединение на порту 8888. Я тестирую VLC, полезная нагрузка UDP выглядит корректно, и я могу видеть, что VLC-соединение HTTP-соединение когда я жду, когда прослушиватель TCP примет соединение. но все же VLC не будет воспроизводить полученный HTTP-поток, мой код:

public void Bridge()
    {
        //endpoints
        IPEndPoint myRemoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);

        //communications objects
        UdpClient myUdpClient = new UdpClient(myRemoteEndpoint);
        TcpListener myTcpListener = new TcpListener(IPAddress.Any, 8888);

        //buffer
        byte[] buffer = new byte[2048];

        //start tcp listener
        myTcpListener.Start();
        Socket tcpAcceptedSocket = myTcpListener.AcceptSocket();            

        while (true)
        {
            try
            {
                //get data from UDP client
                buffer = myUdpClient.Receive(ref myRemoteEndpoint);

                //send bytes received from UDP over TCP
                tcpAcceptedSocket.Send(buffer);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        //close sockets
        myUdpClient.Close();
        myTcpListener.Stop();

    }

любые мысли?

4b9b3361

Ответ 1

Надеюсь, вы уже решили это?

Моя первая мысль была "как выйти из этого цикла while (true)?" лол

RTP был добавлен в Android SDK на уровне API 12:

http://developer.android.com/reference/android/net/rtp/package-summary.html

Возможно, вы можете использовать android.net.rtp, чтобы поймать ваше потоковое видео. Кажется, что в этой области отсутствует значительная нехватка учебников, поэтому, если вы это сделаете/сделаете это, я уверен, что быстрая запись могла взлететь на большие результаты поиска G; не говоря уже об оказании помощи плакатам из 600+ других вопросов о stackoverflow, которые появляются в поиске "android udp rtp".

Из блога-сферы:

http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/

И я подброшу вилку для WebRTC, потому что выглядит многообещающе:

http://www.html5rocks.com/en/tutorials/webrtc/basics/