FFmpeg NaCl 模块 avformat_open_input(在 rtsp 流上)returns -5:I/O 错误
FFmpeg NaCl module avformat_open_input (on rtsp stream) returns -5: I/O error
我想在 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(...) returns -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是一个类似的问题,但没有给出明确的答案。
您是从主线程调用 avformat_open_input
吗?套接字操作似乎被阻止在主线程中工作。
尝试将您的代码移动到后台线程,或者更好的是,使用 ppapi_simple,因为这会自动在后台线程中执行您的代码。
我想在 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(...) returns -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是一个类似的问题,但没有给出明确的答案。
您是从主线程调用 avformat_open_input
吗?套接字操作似乎被阻止在主线程中工作。
尝试将您的代码移动到后台线程,或者更好的是,使用 ppapi_simple,因为这会自动在后台线程中执行您的代码。