#3916 closed enhancement (fixed)
Unable to decode ImageJ AVI with PNG compression
| Reported by: | Chris Allan | Owned by: | |
|---|---|---|---|
| Priority: | wish | Component: | avformat |
| Version: | git-master | Keywords: | avi png |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Summary of the bug: FFmpeg (via ffprobe) is unable to display stream metadata for PNG compressed AVIs created by ImageJ (http://imagej.nih.gov/ij/). ffplay is also not able to play the AVI. It is playable using QuickTime X or QuickTime 7 on Mac OS X and QuickTime 7 on Windows 7 but not out of the box using Windows Media Player 12 on Windows 7. VLC also plays the AVI correctly.
Full encoder source is available here:
Attaching the entire 285836 byte file for analysis.
How to reproduce:
$ ffprobe -show_streams -v 9 -loglevel 99 avi_with_png_compression.avi
ffprobe version N-66035-g4cabee5 Copyright (c) 2007-2014 the FFmpeg developers
built on Sep 2 2014 09:12:04 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/Users/callan/app/ffmpeg --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libtheora --enable-libvorbis --enable-libvpx --enable-ffplay
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
[avi @ 0x7fbfd181e600] Format avi probed with size=2048 and score=100
[avi @ 0x7fbfd1413440] use odml:1
[avi @ 0x7fbfd181e600] Before avformat_find_stream_info() pos: 4108 bytes read:108136 seeks:4
[avi @ 0x7fbfd181e600] parser not found for codec none, packets or times may be invalid.
Last message repeated 1 times
[avi @ 0x7fbfd181e600] max_analyze_duration 5000000 reached at 5000000 microseconds
[avi @ 0x7fbfd181e600] Could not find codec parameters for stream 0 (Video: none (png / 0x20676E70), 30x26, 1/30, 215 kb/s): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[avi @ 0x7fbfd181e600] After avformat_find_stream_info() pos: 141733 bytes read:239208 seeks:4 frames:150
avi_with_png_compression.avi: Operation not permitted
$ ffmpeg -v 9 -loglevel 99 -i avi_with_png_compression.avi
ffmpeg version N-66035-g4cabee5 Copyright (c) 2000-2014 the FFmpeg developers
built on Sep 2 2014 09:12:04 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/Users/callan/app/ffmpeg --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libtheora --enable-libvorbis --enable-libvpx --enable-ffplay
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-i' ... matched as input file with argument 'avi_with_png_compression.avi'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input file avi_with_png_compression.avi.
Successfully parsed a group of options.
Opening an input file: avi_with_png_compression.avi.
[avi @ 0x7f85ab023400] Format avi probed with size=2048 and score=100
[avi @ 0x7f85aac13ca0] use odml:1
[avi @ 0x7f85ab023400] Before avformat_find_stream_info() pos: 4108 bytes read:108136 seeks:4
[avi @ 0x7f85ab023400] parser not found for codec none, packets or times may be invalid.
Last message repeated 1 times
[avi @ 0x7f85ab023400] max_analyze_duration 5000000 reached at 5000000 microseconds
[avi @ 0x7f85ab023400] Could not find codec parameters for stream 0 (Video: none (png / 0x20676E70), 30x26, 1/30, 215 kb/s): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[avi @ 0x7f85ab023400] After avformat_find_stream_info() pos: 141733 bytes read:239208 seeks:4 frames:150
avi_with_png_compression.avi: could not find codec parameters
Input #0, avi, from 'avi_with_png_compression.avi':
Duration: 00:00:10.23, start: 0.000000, bitrate: 223 kb/s
Stream #0:0, 150, 1/30: Video: none (png / 0x20676E70), 30x26, 1/30, 215 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
Metadata:
title : ImageJ AVI
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 0x7f85aac13be0] Statistics: 239208 bytes read, 4 seeks
$ ffmpeg -version ffmpeg version N-66035-g4cabee5 Copyright (c) 2000-2014 the FFmpeg developers built on Sep 2 2014 09:12:04 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) configuration: --prefix=/Users/callan/app/ffmpeg --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libtheora --enable-libvorbis --enable-libvpx --enable-ffplay libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 1.100 / 56. 1.100 libavformat 56. 3.100 / 56. 3.100 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 0.103 / 5. 0.103 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 0.100 / 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100
Attachments (1)
Change History (3)
by , 12 years ago
| Attachment: | avi_with_png_compression.avi added |
|---|
comment:1 by , 12 years ago
| Component: | undetermined → avformat |
|---|---|
| Keywords: | avi png added |
| Priority: | normal → wish |
| Reproduced by developer: | set |
| Resolution: | → fixed |
| Status: | new → closed |
| Summary: | Unable to display stream metadata for AVI with PNG compression → Unable to decode ImageJ AVI with PNG compression |
| Type: | defect → enhancement |
Should be fixed in 3668168a - thank you for the sample!
comment:2 by , 12 years ago
Thanks for the quick fix! Confirmed working in 3668168a:
$ ffprobe -show_streams -print_format json avi_with_png_compression.avi
ffprobe version N-66039-g3668168 Copyright (c) 2007-2014 the FFmpeg developers
built on Sep 2 2014 11:19:26 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/Users/callan/app/ffmpeg --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libtheora --enable-libvorbis --enable-libvpx --enable-ffplay
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
{
Input #0, avi, from 'avi_with_png_compression.avi':
Duration: 00:00:10.23, start: 0.000000, bitrate: 223 kb/s
Stream #0:0: Video: png (png / 0x20676E70), rgb24, 30x26, 215 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
Metadata:
title : ImageJ AVI
"streams": [
{
"index": 0,
"codec_name": "png",
"codec_long_name": "PNG (Portable Network Graphics) image",
"codec_type": "video",
"codec_time_base": "1/30",
"codec_tag_string": "png ",
"codec_tag": "0x20676e70",
"width": 30,
"height": 26,
"has_b_frames": 0,
"sample_aspect_ratio": "0:1",
"display_aspect_ratio": "0:1",
"pix_fmt": "rgb24",
"level": -99,
"r_frame_rate": "30/1",
"avg_frame_rate": "30/1",
"time_base": "1/30",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 307,
"duration": "10.233333",
"bit_rate": "215059",
"nb_frames": "307",
"disposition": {
"default": 0,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
},
"tags": {
"title": "ImageJ AVI "
}
}
]
}
Note:
See TracTickets
for help on using tickets.



AVI with PNG compression created with ImageJ