GNOME Bugzilla – Bug 699791
qtdemux: certain videos from Vivotek camera do not play - "This file is corrupt and cannot be played"
Last modified: 2013-07-19 18:40:08 UTC
I'm on Ubuntu 13.04 64 bit. I noticed that the MP4s from my video surveillance cameras (from a company called Vivotek) do not play back in Totem. These videos work fine with pretty much every other video player I've tried without issue. The only information I was able to dig up on the video was via the "file" command: jason@JS-Ubu:~/Desktop$ file 01.mp4 01.mp4: ISO Media, MPEG v4 system, 3GPP I wish I had more to go on, but that's where the evidence ends. I ran Totem from terminal but it gave me absolutely no output. I attached a link to the video in the event you folks want to download it and give it a shot. https://www.dropbox.com/s/obdn1qfk4uau8zt/01.mp4
I forgot to add, during my troubleshooting a user on the UbuntuForums felt confident it was a gstreamer issue with their results of running gst-launch-1.0 -v playbin uri=file against the file in question. I did so myself and got the following: jason@JS-Ubu:~$ gst-launch-1.0 -v playbin uri=file:///home/jason/Desktop/01.mp4 Setting pipeline to PAUSED ... /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-size = -1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-duration = -1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: use-buffering = false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: download = false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: uri = file:///home/jason/Desktop/01.mp4 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: connection-speed = 0 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: source = "\(GstFileSrc\)\ source" Pipeline is PREROLLING ... /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/x-3gp, profile=(string)basic /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/x-3gp, profile=(string)basic /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0.GstPad:sink: caps = application/x-3gp, profile=(string)basic ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0: This file is corrupt and cannot be played. Additional debug info: qtdemux.c(7644): qtdemux_parse_trak (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0 ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0: max-size-buffers = 5 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0: max-size-time = 0 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0: max-size-bytes = 2097152 Freeing pipeline ...
Confirmed with git master. Haven't looked at what makes it error out yet though.
This should fix it: commit aa7d597120a7a772fbd922202b6063a3806cf5d1 Author: Tim-Philipp Müller <tim.muller@collabora.co.uk> Date: Fri Jul 19 19:35:26 2013 +0100 qtdemux: make files from Vivotek camera play Skip tracks of 'vivo' subtype with empty stsd instead of erroring out saying that the file is broken. https://bugzilla.gnome.org/show_bug.cgi?id=699791