Opened 13 years ago
Closed 13 years ago
#2592 closed defect (fixed)
Bug with b-frames?
| Reported by: | microchip | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avcodec |
| Version: | git-master | Keywords: | regression |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Hi,
I pulled ffmpeg from git today and started to encode to mpeg2video with 2 b-frames in 2-pass mode. I noticed that the git version behaves differently than the 1.2.1 version of ffmpeg. I looked at the passlog file and noticed that all type:3 entries have in:0 and out:0. In 1.2.1, the type:3 entries have entries > 0. My command line for both git and 1.2.1 version is identical and is as follows:
/usr/local/bin/ffmpeg -i /home/neutrino/file2dvd/Con_Air/tmp30017.avi -f dvd -c:v mpeg2video -vf scale=720:368,pad=720:480:0:56,setdar=16/9 -sws_flags spline -aspect 16:9 -mbd 2 -precmp 2 -cmp 2 -subcmp 2 -trellis 2 -dia_size -1 -last_pred 4 -flags +mv0 -mpv_flags +cbp_rd -bf 2 -dc 11 -preme 2 -mv0_threshold 0 -bidir_refine 2 -g 18 -r 24000/1001 -b:v 4653k -c:a ac3 -b:a 192k -ar 48000 -passlogfile /home/neutrino/file2dvd/Con_Air/Con_Air -pass 1 -y /dev/null
The second pass is identical but with -pass 2 option. I also noticed that when using the git version, during the second pass, the bitrate seems very low compared to the first pass. This is not the case when using the 1.2.1 version of ffmpeg.
Both ffmpeg's are compiled with the following options;
./configure --enable-shared --enable-gpl --enable-version3 --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-avresample
I am attatching 2 log files, one from ffmpeg 1.2.1 and one from the git version.
Attachments (2)
Change History (7)
by , 13 years ago
| Attachment: | 1.2.1-log.log added |
|---|
by , 13 years ago
| Attachment: | git-log.log added |
|---|
comment:1 by , 13 years ago
| Component: | FFmpeg → avcodec |
|---|---|
| Keywords: | regression added |
| Priority: | normal → important |
comment:2 by , 13 years ago
Hi Carl,
Thanks for the response. It produces a valid output but it's of low quality compared to the output of 1.2.1. I contribute this to the 0 entries for b-frames (in: 0 and out: 0) in the log file I attached for the git version. When I say low quality, I mean that I can see blocks all over the place while when using 1.2.1 this is not the case. I no longer have the film I used when I noticed this problem so I tried on a sample here and the problem is the same.
About the bitrate, in 1.2.1 when using 4600k as bitrate, the second pass would go up to 3000k while the git ffmpeg will go just over 1600k. That's a pretty big difference between the two versions
The second pass output for the sample I tried is as follows:
ffmpeg version N-53304-g2187600 Copyright (c) 2000-2013 the FFmpeg developers
built on May 20 2013 19:53:33 with gcc 4.7 (SUSE Linux)
configuration: --enable-shared --enable-gpl --enable-version3 --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-avresample --prefix=/home/neutrino/local
libavutil 52. 33.100 / 52. 33.100
libavcodec 55. 10.101 / 55. 10.101
libavformat 55. 7.100 / 55. 7.100
libavdevice 55. 1.100 / 55. 1.100
libavfilter 3. 68.101 / 3. 68.101
libavresample 1. 1. 0 / 1. 1. 0
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
[mpeg @ 0xff89c0] max_analyze_duration 5000000 reached at 5000000 microseconds
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mpeg, from '/home/neutrino/file2dvd/jlo/tmp22404.mpg':
Duration: 00:05:12.91, start: 0.280000, bitrate: 8234 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0xa0]: Audio: pcm_s16be, 48000 Hz, stereo, s16, 1536 kb/s
[mpeg2video @ 0xffaa20] [lavc rc] Using all of requested bitrate is not necessary for this video with these parameters.
[dvd @ 0xffa140] VBV buffer size not set, muxing may fail
Output #0, dvd, to '/home/neutrino/file2dvd/jlo/jlo.mpg':
Metadata:
encoder : Lavf55.7.100
Stream #0:0: Video: mpeg2video, yuv420p, 720x576 [SAR 16:15 DAR 4:3], q=2-31, pass 2, 8000 kb/s, 90k tbn, 25 tbc
Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> mpeg2video)
Stream #0:1 -> #0:1 (pcm_s16be -> ac3)
Press [q] to stop, [?] for help
[mpeg2video @ 0xff9340] warning: first frame is no keyframe
Last message repeated 1 times
How to reproduce: just compile latest git and use -bf 2 for encoding. Then look at the log file and you'll see that all "type: 3" entries have "in: 0" and "out: 0" entries. Then look at the output file and you'll see blocks all over the place. At least this is the case here when comparing to the 1.2.1 version
comment:3 by , 13 years ago
A bit more information on this... Encoding with latest MEncoder from SVN exhibits the same problem but I guess this is because MEncoder uses libavcodec. If using 1-pass in both MEncoder and ffmpeg git with 2 b-frames then MediaInfo reports that they are used. If doing a 2-pass with both MEncoder and ffmpeg git, MediaInfo reports no b-frames. The log file of MEncoder also has all "type:3" entries set to "in:0" and "out:0", just like it is the case in ffmpeg git
comment:4 by , 13 years ago
| Reproduced by developer: | set |
|---|---|
| Status: | new → open |
Also reproducible with mpeg4:
$ ffmpeg -i fate_suite/svq3/Vertical400kbit.sorenson3.mov -an -bf 2 -vb 400k -pass 1 out.avi
...
$ ffmpeg -i fate_suite/svq3/Vertical400kbit.sorenson3.mov -an -bf 2 -vb 400k -pass 2 -y out.avi
ffmpeg version N-53363-g1fded9b Copyright (c) 2000-2013 the FFmpeg developers
built on May 23 2013 11:05:47 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration: --enable-gpl
libavutil 52. 33.100 / 52. 33.100
libavcodec 55. 10.101 / 55. 10.101
libavformat 55. 7.100 / 55. 7.100
libavdevice 55. 1.101 / 55. 1.101
libavfilter 3. 69.100 / 3. 69.100
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x2e53a80] max_analyze_duration 5000000 reached at 5000998 microseconds
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fate_suite/svq3/Vertical400kbit.sorenson3.mov':
Metadata:
creation_time : 2001-03-20 16:17:18
title : Vertical Online SV3 Demo
title-eng : Vertical Online SV3 Demo
artist : Logan Kelsey
artist-eng : Logan Kelsey
copyright : © Vertical Online 2001
copyright-eng : © Vertical Online 2001
encoder : Sorenson Video 3
encoder-eng : Sorenson Video 3
Duration: 00:00:43.58, start: 0.000000, bitrate: 580 kb/s
Stream #0:0(eng): Video: svq3 (SVQ3 / 0x33515653), yuvj420p, 320x240, 391 kb/s, 30.02 fps, 30 tbr, 600 tbn, 600 tbc
Metadata:
creation_time : 2001-03-20 16:17:18
handler_name : Apple Alias Data Handler
Stream #0:1(eng): Audio: adpcm_ima_qt (ima4 / 0x34616D69), 44100 Hz, mono, s16p, 176 kb/s
Metadata:
creation_time : 2001-03-20 16:17:18
handler_name : Apple Alias Data Handler
Output #0, avi, to 'out.avi':
Metadata:
encoder-eng : Sorenson Video 3
INAM : Vertical Online SV3 Demo
title-eng : Vertical Online SV3 Demo
IART : Logan Kelsey
artist-eng : Logan Kelsey
ICOP : © Vertical Online 2001
copyright-eng : © Vertical Online 2001
ISFT : Lavf55.7.100
Stream #0:0(eng): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 320x240, q=2-31, pass 2, 400 kb/s, 30 tbn, 30 tbc
Metadata:
creation_time : 2001-03-20 16:17:18
handler_name : Apple Alias Data Handler
Stream mapping:
Stream #0:0 -> #0:0 (svq3 -> mpeg4)
Press [q] to stop, [?] for help
frame= 1308 fps=247 q=0.0 Lsize= 2247kB time=00:00:43.56 bitrate= 422.6kbits/s
video:2211kB audio:0kB subtitle:0 global headers:0kB muxing overhead 1.669231%
The output file contains no b-frames, if -vb 400k is omitted, encoding fails which is also a regression.
comment:5 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |



I am not sure I understand this ticket: Do you just want to report that current git head does not produce the same output as FFmpeg 1.2 for a given command line? Or is there something wrong with the output file made with current git head?
Is the problem you see a different bit-rate? I wonder if there is input that allows to reach 4600k for dvd video, or to say it differently, I suspect everything looks great if you specify 4600k for dvd video. Or do you think that the incorrect frame numbers in the log file indicate a problem?
In any case: Please add the console output of the failing command (the second pass if two-pass encoding is necessary to reproduce the problem) to make this a valid ticket.
Looks like a regression since 80e9e63.