Используете ли вы какие-либо другие библиотеки JavaScript? Если это так, вам, вероятно, придется использовать jQuery в режиме совместимости:
Я преобразовал этот файл mp4
в файл avi
с ffmpeg
. Тогда вышеуказанный код opencv может хорошо воспроизвести этот файл avi
.
Поэтому я уверен, что это проблема кодека.
(тогда я преобразовал этот файл mp4
в другой файл mp4
с помощью ffmpeg
, думая, возможно, ffmpeg
поможет превратить этот оригинальный нечитаемый кодек .mp4
в читаемый кодек .mp4
, но полученный файл .mp4
оказался сломанным. Этот факт может или не может относиться к этой проблеме, просто упомянув, если кому-то нужна эта информация. )
Несмотря на то, что, зная, что это проблема кодека, я пробовал много других способов, но до сих пор не смог ее решить. Наконец, я попытался восстановить ffmpeg и opencv, тогда проблема была решена!
Ниже приводится моя подробная процедура восстановления.
(1) Build ffmpeg
tar -xvf ffmpeg-2.7.1.tar.bz2
cd ffmpeg-2.7.1
./configure --enable-pic --extra-ldexeflags=-pie
Из http://www.ffmpeg.org/platform.html#Advanced-linking-configuration Если вы скомпилировали библиотеки FFmpeg статически и хотите использовать их для создания собственной общей библиотеки, вам может понадобиться для поддержки поддержки PIC (с --enable-pic
во время настройки FFmpeg). Если для вашей целевой платформы требуются независимые от позиции бинарные файлы, вы должны передать правильный флаг связывания (например, -pie
) в --extra-ldexeflags
. Если вы столкнулись с ошибкой: yasm/nasm not found or too old. Use --disable-yasm for a crippled build.
Просто sudo apt-get install yasm
Дальнейшие варианты построения: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu , например. Добавление опции --enable-libmp3lame
позволяет кодер png
. (Перед ./configure
вам необходимо sudo apt-get install libmp3lame-dev
с версией ≥ 3.98.3) make -j5
(в папке ffmpeg) sudo make install
(2) Построить Opencv
wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.9/opencv-2.4.9.zip
unzip opencv-2.4.9.zip
cd opencv-2.4.9
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_QT=OFF -D WITH_V4L=ON -D CMAKE_SHARED_LINKER_FLAGS=-Wl,-Bsymbolic ..
Вы можете изменить эти параметры в зависимости от ваших потребностей. Ключом является только последний вариант -D CMAKE_SHARED_LINKER_FLAGS=-Wl,-Bsymbolic
. Если вы опустите это, тогда make
выпрыгнет из ошибок. Это также из http://www.ffmpeg.org/platform.html#Advanced-linking-configuration (та же ссылка на шаге 4 выше). Если вы скомпилировали библиотеки FFmpeg статически и хотите использовать для создания собственной общей библиотеки вам может понадобиться ... и добавить в свой проект следующий проект LDFLAGS
: -Wl,-Bsymbolic
make -j5
sudo make install
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
Теперь код opencv должен хорошо воспроизводить файл mp4
!
WITH_UNICAP=ON
WITH_V4L=ON
, когда cmake
opencv. Но не работает вообще. cap = cv2.VideoCapture("MOV_0006.mp4")
print cap.get(cv2.cv.CV_CAP_PROP_FOURCC)
Я тестировал это в двух средах. В первом окружении opencv работает, а в другом opencv не воспроизводит видео. Но оба напечатали один и тот же кодек 828601953.0
. Я попытался изменить свой кодек на cap.set(cv2.cv.CV_CAP_PROP_FOURCC, cv2.cv.CV_FOURCC(*'H264'))
, но не работал вообще. opencv-2.4.8/3rdparty/lib/
на библиотеки в моей работоспособной среде. Но даже не удалось построить. I grep AVC: nal size
и найти библиотеки содержат это сообщение об ошибке opencv-2.4.8/3rdparty/lib/libavcodec.a
и т. Д. Вот почему я попытался их заменить. Но оказывается, что это плохая идея. sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
Попробуйте установить какую-то вещь и кое-какую эту вещь. Но это было совершенно бесполезно. Я искал в Интернете, и есть много подобных проблем, но у NONE из них было решение!
Ниже приведены проблемы я думаю, что и мои.
ffmpeg
! Но аргументов мне было недостаточно. для ubuntu 14.04, это как я его исправил.
установить зависимости, необходимые для OpenCV "
sudo apt-get удалить ffmpeg x264 libx264-dev
sudo apt-get update
sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-уродливый gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2. 0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer -plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
sudo add-apt-repository ppa: mc3man / gstffmpeg-keep
sudo apt-g et update
sudo apt-get install gstreamer0.10-ffmpeg
sudo apt-get install gstreamer0.10-plugins-bad
sudo apt-get update
Установить ffmpeg внутри anaconda3 "
conda install -c menpo ffmpeg = 2.7.0
Dowload Opencv 3.1.0"
wget https://github.com/Itseez/opencv/archive/3.1.0.zip unzip 3.1.0.zip
mkdir build
cd build
cmake -DBUILD_TIFF = ON -DBUILD_opencv_java = OFF -DWITH_CUDA = OFF -DWITH_FFMPEG = OFF -DENABLE_AVX = ON -DWITH_OPENGL = ON -DWITH_OPENCL = ON -DWITH_IPP = ON -DWITH_TBB = ON -DWITH_EIGEN = ON -DWITH_V4L = ON -DBUILD_TESTS = OFF -DBUILD_PERF_TESTS = OFF -DCMAKE_BUILD_TYPE = RELEASE -DCMAKE_INSTALL_PREFIX = $ (python3 -c "import sys; print (sys.prefix) ") -DPYTHON3_EXECUTABLE = $ (который python3.5) -DPYTHON3_INCLUDE_DIR = $ (python3 -c" из distutils.sysconfig импортировать get_python_inc; print (get_python_inc ()) ") -DPYTHON3_PACKAGES_PATH = $ (python3 -c «from distutils.sysconfig import get_python_lib; print (get_python_lib ())») ..
make
sudo make install