【问题标题】:FFmpeg NaCl module avformat_open_input (on rtsp stream) returns -5: I/O errorFFmpeg NaCl 模块 avformat_open_input(在 rtsp 流上)返回 -5:I/O 错误
【发布时间】:2016-04-09 04:33:02
【问题描述】:

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

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

--启用网络 --enable-protocols --enable-demuxer=rtsp --enable-demux=rtp --enable-demuxer=sdp --enable-decoder=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。 This 是一个类似的问题,但没有给出明确的答案。

【问题讨论】:

    标签: ffmpeg rtsp google-nativeclient rtsp-client


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我已经使用 ppapi 完成了,现在错误变为 无效数据输入。许多人说这是 NaCl FFmpeg 端口内部的一个错误。这是真的吗?
    • 有没有使用c++版本的ppapi_simple的例子?
    • 为什么在新线程中执行avformat_open_input 仍然会出现同样的错误?
    • @Taimoor Alam 你介意分享你的部分代码吗,我正在使用 ffmepg 和 nacl 构建一个屏幕录像机,但不知道从哪里开始
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2023-02-17
    • 2015-08-24
    • 2013-02-01
    相关资源
    最近更新 更多