我想在Chrome PNaCl中创建一个RTSP播放器。
我已经成功地构建了ffmpeg naclport,包括build.sh文件中用于ffmpeg NaCl端口的下列网络标志。
启用网络-启用协议-启用-demuxer=rtsp-启用-demux=rtp-启用-demuxer=sdp-启用-解码器=h 264
此外,我已经在我自己的PNaCl模块中成功地编码和链接了ffmpeg PNaCl端口。我在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。https://stackoverflow.com/questions/17854270/avformat-open-input-return-value-error-code-on-nacl-module是一个类似的问题,但它没有给出明确的答案。
发布于 2016-01-08 13:52:09
您是从主线程调用avformat_open_input吗?看来套接字操作被阻止在主线程中工作。
尝试将代码移动到后台线程,或者更好地使用ppapi_simple,因为它会在后台线程中自动执行代码。
https://stackoverflow.com/questions/34610191
复制相似问题