多线程调用open_input及JNI调用open_input没反应

night_miao 2018-01-04 04:42:28
当程序多线程调用打开输入流的时候,就弹出

这个错误。
当然偶尔程序还是可以跑通的,就很奇怪,下面是程序
AVFormatContext *inputContext = avformat_alloc_context();
AVDictionary* options = nullptr;
av_dict_set(&options, "rtsp_transport", "udp", 0);
//av_dict_set(&options, "rtbufsize", "18432000", 0);
//lastReadPacketTime = av_gettime();
//inputContext->interrupt_callback.callback = interrupt_cb;
int ret = avformat_open_input(&inputContext, inputUrl.c_str(), nullptr,&options);
if(ret < 0)
{
//av_strerror();
av_log(NULL, AV_LOG_ERROR, "Input file open input failed\n");
return ret;
}
ret = avformat_find_stream_info(inputContext, nullptr);
if(ret < 0)
{
av_log(NULL, AV_LOG_ERROR, "Find input file stream inform failed\n");
}
else
{
av_log(NULL, AV_LOG_FATAL, "Open input file %s success\n",inputUrl.c_str());
}
return ret;

然后用JNI调用转发视频流,到open_input后就不运行了
...全文
393 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
百灵工作室 2018-01-08
  • 打赏
  • 举报
回复
再看看文件的权限有没有问题
night_miao 2018-01-08
  • 打赏
  • 举报
回复
引用 2 楼 sharkka 的回复:
先确保网络的端口没有被阻止,是否畅通
网络是没有问题的,单独跑c代码是可以进行视频转流服务的,但是生成dll,并且用java调用,到open_input就停了。而且多线程调用,我目前只能开三路网络流,四路的话av_packet就崩了。。
百灵工作室 2018-01-08
  • 打赏
  • 举报
回复
引用 6 楼 u012312356 的回复:
引用 4 楼 sharkka 的回复:
再看看文件的权限有没有问题
javacv现在遇到了内存溢出的问题
你把dll编译好的,再用c程序去调用试试, 是用vs编译的还是gcc,然后,你看看你的dll编译选项,确定是release版,及其他编译的选项问题,仔细看看
night_miao 2018-01-08
  • 打赏
  • 举报
回复
引用 4 楼 sharkka 的回复:
再看看文件的权限有没有问题
javacv现在遇到了内存溢出的问题
night_miao 2018-01-08
  • 打赏
  • 举报
回复
引用 4 楼 sharkka 的回复:
再看看文件的权限有没有问题
windows下没有啥权限问题。。我已经放弃了,用javacv试试。
百灵工作室 2018-01-05
  • 打赏
  • 举报
回复
先确保网络的端口没有被阻止,是否畅通
night_miao 2018-01-04
  • 打赏
  • 举报
回复
第一个问题解决了。。看到堆栈信息知道某个函数的参数有问题。。。第二个问题呢,有大神解答

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧