2015-08-03 4 views
0

В FFmpeg, есть параметр «-Слушай» для того, чтобы слушать указанный порт:Прослушивание порта в FFmpeg/Libav

# Server side (receiving): 
ffmpeg -listen 1 -enter code herei http://server:port -c copy somefile.ogg 

https://www.ffmpeg.org/ffmpeg-protocols.html#toc-http

Я хотел бы использовать эту команду в C++ с Libav (поскольку FFMpeg перемещен в Libav).

Для прослушивания порта, который должен использовать метод Libav?

+3

"FFMpeg был перемещен в Libav". Это утверждение не имеет никакого смысла. – LordNeckbeard

ответ

0

Я решил эту проблему:

void listen(const unsigned int port) { 

const int TIMEOUT = 600000; 

// check if webservice is already listening 
if (!m_listening) { 

    m_listening = true; 

    // Format specification: tcp://hostname:port[?options] 
    // See: https://www.ffmpeg.org/ffmpeg-protocols.html#tcp 

    std::stringstream ss; 
    ss << "tcp://localhost:" << port << "?listen=1" << "?listen_timeout=" << TIMEOUT << "?timeout=" << TIMEOUT * 1000; 
    const std::string publishingPointURI = ss.str(); 
    avformat_network_init(); 
    if (avformat_open_input(&m_stream, publishingPointURI.c_str(), NULL, NULL) != 0) { 
      throw Exception(
        "Unable to buffer stream received from " + publishingPointURI + ""); 
    } 

    m_listening = false; 
}