FFmpeg NaCl模块avformat_open_input(在rtsp流上)返回-5:I/O错误



我想在Chrome PNaCl中创建一个RTSP播放器。

我已经成功地为ffmpeg NaCl端口构建了ffmpeg naclport,包括build.sh文件中的以下网络标志。

--启用网络--启用协议--启用解复用器=rtsp--启用解多路复用器=rtp--启用去复用器=sdp--启用解码器=h264

此外,我已经成功地在我自己的PNaCl模块中编码并链接了ffmpeg NaCl端口。我在manifest.json文件中包含了以下网络权限:

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

现在,一旦我在PNaCl中运行了以下代码,avformat_open_input(…)就会返回-5或I/O错误:

    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。这是一个类似的问题,但没有给出明确的答案

您是从主线程调用avformat_open_input吗?套接字操作似乎被阻止在主线程中工作。

尝试将代码移动到后台线程,或者更好的是,使用ppapi_simple,因为它会自动在后台线程中执行代码。

相关内容

  • 没有找到相关文章

最新更新