2016-01-05 3 views
2

Я хочу создать проигрыватель RTSP в Chrome PNaCl.Модуль FFmpeg NaCl avformat_open_input (по потоку rtsp) возвращает -5: ошибка ввода-вывода

Я успешно построил ffmpeg naclport, включая следующие сетевые флаги в файле build.sh файла для порта NaCl ffmpeg.

--enable сетевых протоколы --enable---enable-демультиплексор = RTSP --enable-демультиплексор = РТП --enable-демультиплексор = SDP --enable-декодер = H264

Кроме того, я успешно закодированы и связаны с портом ffmpeg NaCl в моем собственном модуле PNaCl. Я включил следующие сетевые разрешения в файле manifest.json:

"permissions": [ 
{ 
    "socket": [ 
     "tcp-listen:*:*", 
     "tcp-connect:*:*", 
     "resolve-host:*:*", 
     "udp-bind:*:*", 
     "udp-send-to:*:*" 
    ], 
} 

Теперь, как только я запускаю следующий код, в PNaCl, то avformat_open_input (...) возвращает -5 или I/O Error:

AVFormatContext* formatContext = avformat_alloc_context(); 

    av_register_all(); 

    avformat_network_init(); 

    const char * stream_path = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"; 

    int result = avformat_open_input(&formatContext, stream_path ,NULL,NULL); 

    if(result< 0){ 

     PostMessage("input not opened, result: "); 

     PostMessage(result); 

    }else{ 

     PostMessage(std::string("input successfully opened")); 

    } 

Что я могу сделать неправильно, и почему модуль PNaCl не может получить доступ к потоку RTSP?

PS. This - аналогичный вопрос, но он не дает окончательного ответа.

ответ

0

Вы звоните avformat_open_input из своей основной темы? Кажется, что операции сокета заблокированы от работы в основном потоке.

Попробуйте переместить код в фоновый поток или, еще лучше, используйте ppapi_simple, так как это автоматически выполняет ваш код в фоновом потоке.

+0

Большое спасибо. Я сделал это с помощью ppapi, теперь ошибка становится ** Недопустимый ввод данных **. Многие говорят, что это ошибка во внутренних частях порта NaCl FFmpeg. Это правда? –

+0

Есть ли пример, который использует версию ppapi_simple C++? –

+0

Зачем «avformat_open_input» в новом потоке по-прежнему дает ту же ошибку? – SMUsamaShah

Смежные вопросы