Opened 7 years ago

Last modified 7 years ago

#6408 reopened enhancement

Support Cisco Mediasense mov files with two h.264 streams

Reported by: Gozde Owned by:
Priority: wish Component: avformat
Version: git-master Keywords: mov h264
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Hi,
From Windows command prompt i use ffmpeg version below:

ffmpeg version N-67100-g6dc99fd Copyright (c) 2000-2014 the FFmpeg developers
built on Oct 22 2014 22:10:35 with gcc 4.9.1 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 54. 10.100 / 54. 10.100
libavcodec 56. 9.100 / 56. 9.100
libavformat 56. 10.100 / 56. 10.100
libavdevice 56. 1.100 / 56. 1.100
libavfilter 5. 2.100 / 5. 2.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100

when using following command, only for some videos i got the error screenshot attached (error.png)(i couldn't get text output for that, it results with empty text, so i attached the screenshot), the same command works fine with the other videos .
Command i tried :

ffmpeg -i M:\TEST\3f7a15bd28465231.mp4 -map 0:0 -map 0:1 -ac 2 -vf "scale=640:360:force_original_aspect_ratio=decrease,pad=640:360:(ow-iw)/2:(oh-ih)/2" -ab 32k -ac 2 -b:a 128k -y M:\TEST\3f7a15bd28465231_1.mp4

then i tried increasing analyzeduration and probsize to max int and looking at the video info with the command below, it seems it wasn't enough as in the second screenshot (error2.png)

Command tried: ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i M:\TEST\3f7a15bd28465231.mp4

What might be the problem?
Thanks

Attachments (3)

error.png (64.2 KB ) - added by Gozde 7 years ago.
ffmpeg -i M:\TEST\3f7a15bd28465231.mp4 -map 0:0 -map 0:1 -ac 2 -vf "scale=640:360:force_original_aspect_ratio=decrease,pad=640:360:(ow-iw)/2:(oh-ih)/2" -ab 32k -ac 2 -b:a 128k -y M:\TEST\3f7a15bd28465231_1.mp4
error2.png (66.8 KB ) - added by Gozde 7 years ago.
ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i M:\TEST\3f7a15bd28465231.mp4
485915c39a5628b1.mp4 (549.7 KB ) - added by Gozde 7 years ago.

Download all attachments as: .zip

Change History (23)

by Gozde, 7 years ago

Attachment: error.png added

ffmpeg -i M:\TEST\3f7a15bd28465231.mp4 -map 0:0 -map 0:1 -ac 2 -vf "scale=640:360:force_original_aspect_ratio=decrease,pad=640:360:(ow-iw)/2:(oh-ih)/2" -ab 32k -ac 2 -b:a 128k -y M:\TEST\3f7a15bd28465231_1.mp4

by Gozde, 7 years ago

Attachment: error2.png added

ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i M:\TEST\3f7a15bd28465231.mp4

comment:1 by Carl Eugen Hoyos, 7 years ago

Component: ffmpegundetermined

Please provide the input file 3f7a15bd28465231.mp4.

comment:2 by Gozde, 7 years ago

Hi, that video is not suitable for sharing due to security reason, but i have another test video (480915c352304881.mp4) with the exact same issue, i can share that video. But since the video size is 16.3 MB, i couldn't attach it here. How can i share the file with you?
Thanks.

comment:3 by Carl Eugen Hoyos, 7 years ago

Use a filehoster of your choice, for example dropbox or datafilehost.com.

comment:6 by Carl Eugen Hoyos, 7 years ago

Keywords: mov h264 added
Resolution: invalid
Status: newclosed
Version: unspecifiedgit-master

What created this sample file that is - afaict - mostly invalid? It contains a (byte-wise) large video stream that cannot be read. Please reopen this ticket if there is software that can decode the 640x480 video stream.

The sample you provided contains two video streams, stream 0:1 (640x480) with unreadable content and stream 0:2 (640x360) with readable content, you have to use -map 0:2 instead of -map 0:1 in your command line to convert the working video stream.

$ ffmpeg -i 480915c352304881.mp4
ffmpeg version N-86216-g017a68e Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (GCC)
  configuration: --enable-gpl
  libavutil      55. 63.100 / 55. 63.100
  libavcodec     57. 96.101 / 57. 96.101
  libavformat    57. 72.101 / 57. 72.101
  libavdevice    57.  7.100 / 57.  7.100
  libavfilter     6. 90.100 /  6. 90.100
  libswscale      4.  7.101 /  4.  7.101
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100
[h264 @ 0x308f1e0] non-existing PPS 0 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] non-existing PPS 0 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] non-existing PPS 0 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] non-existing PPS 0 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] non-existing PPS 0 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] no frame!

...

[h264 @ 0x308f1e0] non-existing PPS 1 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] non-existing PPS 1 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] non-existing PPS 1 referenced
[h264 @ 0x308f1e0] decode_slice_header error
[h264 @ 0x308f1e0] no frame!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x308bbe0] decoding for stream 1 failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x308bbe0] Could not find codec parameters for stream 1 (Video: h264 (avc1 / 0x31637661), none, 640x480, 792 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '480915c352304881.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2017-05-23T11:51:53.000000Z
  Duration: 00:03:07.92, start: 0.000000, bitrate: 729 kb/s
    Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 8000 Hz, stereo, fltp, 38 kb/s (default)
    Metadata:
      creation_time   : 2017-05-23T11:51:52.000000Z
    Stream #0:1(eng): Video: h264 (avc1 / 0x31637661), none, 640x480, 792 kb/s, 28.31 fps, 90k tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2017-05-23T11:51:53.000000Z
      handler_name    :  Media Handler
      encoder         : VC Coding
    Stream #0:2(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x360, 187 kb/s, 6.97 fps, 7 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2017-05-23T11:51:53.000000Z
      handler_name    :  Media Handler
      encoder         : VC Coding
At least one output file must be specified

comment:7 by Gozde, 7 years ago

Yes, 0:2 map Works fine but i need the other video as well, so i need 0:1 map working too. I could't get why it is unreadably from your explanation. Can you please explain more? It is a valid video actually, is it not supported by ffmpeg? Also, if we make a shorter video in terms of duration as the same way, both 0:2 and 0:1 map Works, longer video seems causes trouble. I can send a video like that if it helps to examine.

in reply to:  7 comment:8 by Carl Eugen Hoyos, 7 years ago

Replying to Gozde:

Yes, 0:2 map Works fine but i need the other video as well, so i need 0:1 map working too. I could't get why it is unreadably from your explanation. Can you please explain more?

It is a valid video actually

What plays the second video stream, how was the file created?

comment:9 by Gozde, 7 years ago

This is a Cafex video call recorded by Cisco Mediasense, i downloaded the recording from Mediasense and sent to you. The both side of the video are able to be played clearly using Cisco Mediasense JNLP player. But i need the two video seperately, so i am using ffmpeg. The problematic video stream 1 is the customer side of the call who is in the call on an ipad device.

comment:10 by Carl Eugen Hoyos, 7 years ago

Component: undeterminedavformat
Priority: normalwish
Resolution: invalid
Status: closedreopened
Summary: Error while decoding stream #0:1Support Cisco Mediasense mov files with two h.264 streams
Type: defectenhancement

comment:11 by Carl Eugen Hoyos, 7 years ago

Feel free to provide a shorter, working file.

comment:12 by Gozde, 7 years ago

You can find a shorter video that map 0:1 works too here:

http://www.datafilehost.com/d/fd610da1

comment:13 by Gozde, 7 years ago

Could you examine the file, do you have a comment for the reason why we have the issue for the longer video?

comment:14 by Gozde, 7 years ago

Hi, can you please inform me about the current status of the ticket? If there is an examination process going on, please explain so i'll be aware how long it might take.
Regards.

comment:15 by Carl Eugen Hoyos, 7 years ago

Downloading the second sample does not work here atm, will try again.
(datafilehost used to work fine for me for many years.)

by Gozde, 7 years ago

Attachment: 485915c39a5628b1.mp4 added

comment:16 by Gozde, 7 years ago

since this file size is smaller than the first file, i could upload it to the ticket directly now, you can find 485915c39a5628b1.mp4​ as attached to the ticket.

comment:17 by Gozde, 7 years ago

Could you check the file? Please inform me about the current state of the ticket.

comment:18 by Gozde, 7 years ago

There has been a long time waiting. Any progress?

comment:19 by Gozde, 7 years ago

It is huge amount of time being unanswered. Please inform me about the current state of the ticket. Did you examine the file i shared?

comment:20 by llogan, 7 years ago

This is the current state. I'll quote another developer, wm4:

FFmpeg is a project by volunteers and open source enthusiasts (with some people being paid for implementing specific features or fixing specific bugs), so there is no planning, no roadmaps, no project management, no predictable behavior, no guarantees, and no official responses of any kind.

I didn't investigate this, but I'm going to assume here that the file is at fault. It is not possible to (and we shouldn't) support every broken format from every broken encoder. Supporting each encountered oddball proprietary variant increases the maintenance burden, code churn, log/mailing list/bug tracker noise, possible security issues, wastes developers' time, and puts the expectation on FFmpeg to always decode absolutely everything instead of users demanding that manufacturers provide usable, standard outputs.

Since contacting Cisco is likely a waste of time your best bet may be to provide a patch that fixes your issue, but I know that this is not a realistic suggestion for the average user.

Offering a financial bounty may increase the chances of this getting someone's attention who may find it interesting enough to implement a workaround, but it is not guaranteed.

in reply to:  20 comment:21 by Carl Eugen Hoyos, 7 years ago

Replying to llogan:

I didn't investigate this, but I'm going to assume here that the file is at fault.

Why do you think so?
(Especially without investigating.)

Or do you mean that whenever FFmpeg does not support a specific sample of a supported file (or codec) format, the file is at fault? I guess this could be said but since we like samples, this is not a particular useful approach if we want to improve FFmpeg.

It is not possible to (and we shouldn't) support every broken format from every broken encoder.

This is what we do (for more than a decade) and I believe there are indications that we are very successful with this approach, despite the maintenance burden, code curn, log/mailing list/bug tracker noise (that I do not agree with).
I agree that the possible security issues were less important in the past (and are more important now) but imo, that shouldn't stop us from trying to fix issues and implement new features without introducing new security issues.

Note: See TracTickets for help on using tickets.