Opencv ffmpeg失败-455方法在此状态下无效
我创建了一个Opencv ffmpeg失败-455方法在此状态下无效,opencv,ffmpeg,docker,streaming,rtsp,Opencv,Ffmpeg,Docker,Streaming,Rtsp,我创建了一个nodejs应用程序,它通过FFMPEG获取rtsp流媒体,并通过Opencv3对其进行分析。如果我在本地安装了FFMPEG和opencv,它就会工作 但现在我创建了一个docker映像,其中包含这些库的安装,我正在使用它作为基础来创建另一个映像和容器,我正在尝试在其中运行我的应用程序。当我在该容器中运行它时,我在尝试使用FFMPEG指令获取方法设置失败:455方法在此状态下无效“的rtsp流时,反复出现此错误 以下是我在图像中安装FFMPEG的方式: # -------------
nodejs
应用程序,它通过FFMPEG
获取rtsp
流媒体,并通过Opencv3
对其进行分析。如果我在本地安装了FFMPEG
和opencv
,它就会工作
但现在我创建了一个docker映像,其中包含这些库的安装,我正在使用它作为基础来创建另一个映像和容器,我正在尝试在其中运行我的应用程序。当我在该容器中运行它时,我在尝试使用FFMPEG
指令获取方法设置失败:455方法在此状态下无效“的rtsp
流时,反复出现此错误
以下是我在图像中安装FFMPEG的方式:
# ---------------------- OpenCV ffmpeg ---------------------------#
RUN mkdir -p /opt/src \
&& curl -Lo /opt/src/ffmpeg-${FFMPEG_VERSION}.tar.gz \
http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 \
&& tar -xvf /opt/src/ffmpeg-${FFMPEG_VERSION}.tar.gz -C /opt/src \
&& cd /opt/src/ffmpeg-${FFMPEG_VERSION} \
&& ./configure --enable-gpl --enable-avresample --enable-libopencore-amrnb \
--enable-libx264 --enable-libxvid --enable-postproc --enable-version3 \
--enable-shared --enable-pic --extra-ldexeflags=-pie \
&& make -j $(nproc) \
&& make install \
&& ldconfig -v \
&& rm -rf /opt/src
# ---------------------- OpenCV stuff ---------------------------#
RUN mkdir -p /opt/src/opencv-${OPENCV_VERSION}/build \
&& curl -sLo /opt/src/opencv3.tar.gz \
https://github.com/Itseez/opencv/archive/${OPENCV_VERSION}.tar.gz \
&& tar -xzvf /opt/src/opencv3.tar.gz -C /opt/src \
&& cd /opt/src/opencv-${OPENCV_VERSION}/build \
&& cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D WITH_OPENMP=ON \
-D WITH_FFMPEG=ON .. \
&& make -j "$(nproc)" \
&& make install \
&& ldconfig -v \
&& rm -rf /opt/src
你知道这个错误是什么以及如何修复它吗?我认为这可能与安装它们中任何一个的初始配置有关(FFMPEG
或OPENCV
)
感谢您的帮助事实证明,最近发布的新版本OpenCV(Opencv3.1)中有一个考虑tcp传输的修复程序,因此通过升级到最新版本,我设法解决了这个问题事实证明,最近发布的新版本OpenCV(Opencv3.1)中有一个修复程序这考虑到了tcp传输,因此通过升级到最新版本,我设法解决了这个问题您可能需要进行一些尝试和错误处理。删除
--enable gpl--enable avresample--enable libopencore amrnb\--enable-libx264--enable libxvid--enable postproc--enable-version3\--enable shared--enable pic--extra ldexeflags=-pie
,每次删除一个开关后重新编译。这个测试虽然繁琐,但会告诉您是否是您的某个启用导致了错误。谢谢@cube。我现在遇到的问题是,我需要启用tcp作为传输方法。你知道我怎么用enables做吗?你可能需要做一些尝试和错误。删除--enable gpl--enable avresample--enable libopencore amrnb\--enable-libx264--enable libxvid--enable postproc--enable-version3\--enable shared--enable pic--extra ldexeflags=-pie
,每次删除一个开关后重新编译。这个测试虽然繁琐,但会告诉您是否是您的某个启用导致了错误。谢谢@cube。我现在遇到的问题是,我需要启用tcp作为传输方法。你知道我怎样才能用电脑做到这一点吗?