Opened 6 years ago
Last modified 6 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)
Change History (23)
by , 6 years ago
by , 6 years ago
Attachment: | error2.png added |
---|
ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i M:\TEST\3f7a15bd28465231.mp4
comment:1 by , 6 years ago
Component: | ffmpeg → undetermined |
---|
Please provide the input file 3f7a15bd28465231.mp4.
comment:2 by , 6 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 , 6 years ago
Use a filehoster of your choice, for example dropbox or datafilehost.com.
comment:6 by , 6 years ago
Keywords: | mov h264 added |
---|---|
Resolution: | → invalid |
Status: | new → closed |
Version: | unspecified → git-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
follow-up: 8 comment:7 by , 6 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.
comment:8 by , 6 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 , 6 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 , 6 years ago
Component: | undetermined → avformat |
---|---|
Priority: | normal → wish |
Resolution: | invalid |
Status: | closed → reopened |
Summary: | Error while decoding stream #0:1 → Support Cisco Mediasense mov files with two h.264 streams |
Type: | defect → enhancement |
comment:13 by , 6 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 , 6 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 , 6 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 , 6 years ago
Attachment: | 485915c39a5628b1.mp4 added |
---|
comment:16 by , 6 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 , 6 years ago
Could you check the file? Please inform me about the current state of the ticket.
comment:19 by , 6 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?
follow-up: 21 comment:20 by , 6 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.
comment:21 by , 6 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.
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