1

I am trying to open a third party video file into OpenCV with python. My camera (plotwatcher camera trap) shoots in a silly proprietary format. The extension is unique (.tlv) but i can play the file in VLC, and using ffmpeg i can see the following encoding:

C:\Users\Ben>ffmpeg -i C:/Users/Ben/Documents/OpenCV_HummingbirdsMotion/PlotwatcherTest.tlv

ffmpeg version N-58037-g355cea8 Copyright (c) 2000-2013 the FFmpeg developers
built on Nov 11 2013 18:01:42 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil      52. 52.100 / 52. 52.100
libavcodec     55. 41.100 / 55. 41.100
libavformat    55. 21.100 / 55. 21.100
libavdevice    55.  5.100 / 55.  5.100
libavfilter     3. 90.102 /  3. 90.102
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100
Input #0, avi, from 'C:/Users/Ben/Documents/OpenCV_HummingbirdsMotion/Plotwatche
rTest.tlv':
Duration: 00:00:05.00, start: 0.000000, bitrate: 14608 kb/s
Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj420p(pc), 1280x720, 10 tb
r, 10 tbn, 10 tbc

From this i can see file is encoded into mjpeg format.

How can i open this file in open cv?

import cv2
#import cv2.cv as cv
import numpy as np
cap = cv2.VideoCapture("C:/Users/Ben/Documents/OpenCV_HummingbirdsMotion/PlotwatcherTest.mjpg")
ret, frame = cap.read()
#show first image
cv2.imshow('my window',frame)
cv2.waitKey(0)
cv2.destroyWindow('my window')

I can see nothing has been loaded. When i try to view the first frame i get the error:

File "C:\Users\Ben\Documents\OpenCV_HummingbirdsMotion\Test.py", line 21, in <module>
cv2.imshow('my window',frame)
error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215)
size.width>0        && size.height>0

I've tried leaving the native .tlv, mjpeg and mjpg, and .MJPG endings following the conceptual idea found here: MJPEG stream fails to open in OpenCV 2.4

i appreciate all help!

Community
  • 1
  • 1
bw4sz
  • 2,237
  • 2
  • 29
  • 53
  • I should also add that i have added everything to the windows path:C:\OpenCV\3rdparty\ffmpeg\ to the Windows PATH environment variable following: http://stackoverflow.com/questions/16374633/opencv-videocapture-cannot-read-video-in-python-but-able-in-vs11 – bw4sz Nov 12 '13 at 16:57
  • What you have is an MJPEG stream embedded in an AVI container-file, not a raw MJPEG stream, so try offering it as an AVI to OpenCV. Don't forget to install the proper MJPEG codec in Windows. – fvu Nov 12 '13 at 17:33

1 Answers1

0

I was unable to get this to work manually. I uninstalled everything, then I installed anaconda which had open_cv built in, and then connected the ffmpeg paths through the environmental settings and it worked!

bw4sz
  • 2,237
  • 2
  • 29
  • 53