Я преобразовал этот файл 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
! Но аргументов мне было недостаточно. Необходимо было бы создать составные элементы управления вместо средств управления.ASCX, если бы Вы хотели смочь использовать их в отдельных проектах.
Scott Guthrie дает некоторый большой совет здесь относительно того, как настроить проект Библиотеки Пользовательского элемента управления, затем используйте события перед сборкой для копирования пользовательских элементов управления в несколько проектов. Это работает действительно хорошо.
http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx
В дополнение к тому, что Tundey заявил, Ссылка NTFS , расширение оболочки полезно когда дело доходит до совместного использования большого блока содержания (например: папка с .ascx/.aspx) между в других отношениях независимыми проектами. В случае кода я думаю, делая другую рабочую копию с VCS, предпочтительно.
Альтернатива должна использовать Ваш инструмент управления исходным кодом, чтобы "совместно использовать" средства управления ASCX между Вашими веб-приложениями. Это позволит, Вы, чтобы внести изменения в средства управления в любом приложении и иметь управление исходным кодом удостоверяетесь, что изменения отражаются в наших веб-приложениях.
Мне удалось сделать это путем принесения в жертву части простоты создания средств управления во-первых.
можно создать проект Библиотеки программ управления, который генерирует библиотеку программ управления DLL для Вас. Недостаток состоит в том, что необходимо создать средства управления с кодом только. В моем последнем проекте это было прекрасно. В более сложных средствах управления это может быть проблемой.
Вот пример:
<DefaultProperty("Text"), ToolboxData("<{0}:BreadCrumb runat=server />")> _
Public Class BreadCrumb
WebControl
<Bindable(True)> _
Property Text() As String
'...'
End Property
Protected Overrides Sub RenderContents(output as HtmlTextWriter)
output.write(Text)
End Sub
Private Sub Page_Load(...) Handles MyBase.Load
' Setup your breadcrumb and store the HTML output '
' in the Text property '
End Sub
End Class
Что-либо Вы вставляете то текстовое свойство, будет представлен.
Затем любые средства управления, которые Вы вставляете здесь, могут функционировать точно так же, как любое другое управление Вы используете. Просто импортируйте его на свою Панель инструментов, сделайте Вашу регистрационную ссылку, затем шлепнитесь он на ASP-страницу.
Я использую StarTeam здесь, и он позволяет Вам "совместно использовать" объекты (файлы, запросы на изменение, требования и т.д.) через несколько папок. Не уверенный, если Подверсия (SVN) имеет ту функцию. Если это не делает, вот другой прием, который можно использовать: создайте соединение из основного местоположения средств управления к местоположению в других проектах. Соединение точно так же, как символьная ссылка Unix. Можно загрузить инструмент для создания соединений в Windows от здесь
Самая большая проблема, которую я заметил со средствами управления в ASP.NET, состоит в том, что Вы не можете легко получить поддержку разработчика и создания управления и использование управления в сайте, после того как Вы создали его. Единственным путем я смог сделать, который является, создают управление .ascx без кода - позади (т.е.: весь серверный код находится в теге script в .ascx файле с runat = атрибут "сервера").
, Но даже затем, все еще необходимо скопировать .ascx файл вокруг, поэтому если когда-нибудь необходимо вносить изменение, которое означает обновлять файл в каждом местоположении, где Вы использовали его. Так да удостоверьтесь, что это находится в управлении исходным кодом.
Я недавно сделал веб-приложение, которое просто сослалось на файлы (приблизительно 90 всего) из одного веб-приложения (aspx, ведущее устройство и ascx) без слишком большого количества проблемы. Это сказало, что я использовал в большой степени измененную версию , шаблон MVP , много интерфейсов и конвенций подавить сложность, тот же средний уровень и один сайт был подмножеством другого.
Большие проблемы:
я находился под крупной нехваткой времени, чтобы заставить это работать, это делает и теперь оба приложения работают. Я, которого wouldn’t рекомендуют этому, но если заинтересованные you’re запускаются в:
Добавляют Существующий Объект , выбирают некоторые файлы, нажимают эти , Добавляют button’s стрелка и говорят , Добавляют как Ссылка .