Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#828 closed defect (worksforme)

Processing DV gives no output -- AC EOB marker is absent?

Reported by: rrauenza Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: dvvideo
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

I see a lot of this complaint on the net, and subsequent claims that this was fixed in a particular CVS release number -- but now ffmpeg is using git -- but surely that fix was merged into git!

I cloned the git repo yesterday and built ffmpeg

[rrauenza@tendo ~]$ /rjr/ffmpeg-git/bin/ffmpeg -version
ffmpeg N-36111-gd1c28e3
libavutil 51. 32.100 / 51. 32.100
libavcodec 53. 47.100 / 53. 47.100
libavformat 53. 28.100 / 53. 28.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 53. 0 / 2. 53. 0
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 5.100 / 0. 0.100
libpostproc 51. 2.100 / 51. 2.100
[rrauenza@tendo ~]$

And I still get those errors -- although I've seen many people say they are harmless and to ignore them. But I get them, and my resulting encodings are empty of video.

I got these both when I used dvgrab on linux (format raw) to pull the dv content in and using windv (dv avi, type 2)

When postprocessing these with ffmpeg, I get empty mp4's... or at least I only see audio.

Hmm -- there's an assumption I'm making here which is that this file ought to play on windows. The original DV's play in quicktime, the window's avi's play in media player.

[rrauenza@tendo tmp]$ /rjr/ffmpeg-git/bin/ffmpeg -i foo.dv -vcodec libx264 -preset faster foo.mp4
ffmpeg version N-36111-gd1c28e3, Copyright (c) 2000-2011 the FFmpeg developers

built on Dec 22 2011 21:34:58 with gcc 4.5.1 20100924 (Red Hat 4.5.1-4)
configuration: --prefix=/rjr/ffmpeg-git --enable-gpl --enable-nonfree --enable-pthreads --enable-hardcoded-tables --enable-memalign-hack --enable-bzlib --enable-libdc1394 --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libxvid --enable-zlib --enable-libdirac --enable-libx264 --extra-cflags='-I/rjr/x264/include -L/rjr/x264/lib/' --extra-ldflags='-Wl,-rpath=/rjr/x264/lib -L/rjr/x264/lib'
libavutil 51. 32.100 / 51. 32.100
libavcodec 53. 47.100 / 53. 47.100
libavformat 53. 28.100 / 53. 28.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 53. 0 / 2. 53. 0
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 5.100 / 0. 0.100
libpostproc 51. 2.100 / 51. 2.100

[dv @ 0x9d1af00] Estimating duration from bitrate, this may be inaccurate
Input #0, dv, from 'foo.dv':

Duration: 00:02:11.03, start: 0.000000, bitrate: 28771 kb/s

Stream #0:0: Video: dvvideo, yuv411p, 720x480, 28771 kb/s, SAR 8:9 DAR 4:3, 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s

File 'foo.mp4' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'yuv411p' for codec 'libx264', auto-selecting format 'yuv422p'
[buffer @ 0x9d21580] w:720 h:480 pixfmt:yuv411p tb:1/1000000 sar:8/9 sws_param:
[buffersink @ 0x9d21740] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out'
[scale @ 0x9d1c400] w:720 h:480 fmt:yuv411p -> w:720 h:480 fmt:yuv422p flags:0x4
[libx264 @ 0x9d22640] using SAR=8/9
[libx264 @ 0x9d22640] using cpu capabilities: MMX2 SSE2Slow SlowCTZ
[libx264 @ 0x9d22640] profile High 4:2:2, level 3.0, 4:2:2 8-bit
[libx264 @ 0x9d22640] 264 - core 120 r2085+35 0c7dab9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=4 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=20 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'foo.mp4':

Metadata:

encoder : Lavf53.28.100
Stream #0:0: Video: h264 (![0][0][0] / 0x0021), yuv422p, 720x480 [SAR 8:9 DAR 4:3], q=-1--1, 30k tbn, 29.97 tbc
Stream #0:1: Audio: aac (@[0][0][0] / 0x0040), 48000 Hz, 2 channels, s16, 128 kb/s

Stream mapping:

Stream #0:0 -> #0:0 (dvvideo -> libx264)
Stream #0:1 -> #0:1 (pcm_s16le -> libfaac)

Press [q] to stop, ? for help
AC EOB marker is absent pos=64e= 442kB time=00:00:03.26 bitrate=1108.4kbits/s
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=65
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=64
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=69
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=64

Last message repeated 1 times

[....]
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=66
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=67
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=65
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=64
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=65
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=67
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=64
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=68
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=64
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=67
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=66
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=69
[dvvideo @ 0x9d21160] AC EOB marker is absent pos=64

Last message repeated 1 times

[dvvideo @ 0x9d21160] AC EOB marker is absent pos=65
frame= 3927 fps= 24 q=-1.0 Lsize= 24027kB time=00:02:10.96 bitrate=1502.9kbits/s
video:21838kB audio:2047kB global headers:0kB muxing overhead 0.594100%
[libx264 @ 0x9d22640] frame I:18 Avg QP:22.45 size: 31619
[libx264 @ 0x9d22640] frame P:1676 Avg QP:25.07 size: 10165
[libx264 @ 0x9d22640] frame B:2233 Avg QP:28.00 size: 2130
[libx264 @ 0x9d22640] consecutive B-frames: 1.5% 53.3% 44.2% 1.0%
[libx264 @ 0x9d22640] mb I I16..4: 5.2% 60.1% 34.7%
[libx264 @ 0x9d22640] mb P I16..4: 1.9% 14.4% 0.7% P16..4: 39.5% 17.2% 6.4% 0.0% 0.0% skip:19.9%
[libx264 @ 0x9d22640] mb B I16..4: 0.2% 1.9% 0.0% B16..8: 18.8% 3.2% 0.2% direct:16.3% skip:59.3% L0:30.0% L1:52.9% BI:17.1%
[libx264 @ 0x9d22640] 8x8 transform intra:83.8% inter:51.2%
[libx264 @ 0x9d22640] coded y,uvDC,uvAC intra: 47.7% 64.3% 9.5% inter: 18.2% 28.6% 1.2%
[libx264 @ 0x9d22640] i16 v,h,dc,p: 48% 19% 18% 14%
[libx264 @ 0x9d22640] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 14% 41% 2% 5% 5% 3% 3% 3%
[libx264 @ 0x9d22640] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 26% 17% 3% 10% 8% 6% 5% 6%
[libx264 @ 0x9d22640] i8c dc,h,v,p: 54% 16% 25% 4%
[libx264 @ 0x9d22640] Weighted P-Frames: Y:7.6% UV:1.6%
[libx264 @ 0x9d22640] ref P L0: 69.7% 30.3%
[libx264 @ 0x9d22640] ref B L0: 74.9% 25.1%
[libx264 @ 0x9d22640] ref B L1: 94.7% 5.3%
[libx264 @ 0x9d22640] kb/s:1365.27
[rrauenza@tendo tmp]$

videolan says the results are h264 - mpeg-4 (part 10) (avc1)
resolution 720x480
frame rate: 29.970029

2/3rds into play the vide it claims it has decoded 347 video blocks and displayed 3461 frames, and lost 1.

Is this just user error? Am I doing something wrong here?

These are these same scripts (using ffmpeg) I used a couple years ago to turn raw dv's into h264 mp4.

I guess my h264 encoder could be broken... I just took an iphone .mov and retranscoded it fine:

Stream #0:0 -> #0:0 (h264 -> libx264)
Stream #0:1 -> #0:1 (aac -> libfaac)

so I'm stumped -- any ideas?

Attachments (2)

foo.2mb.dv (2.0 MB ) - added by rrauenza 12 years ago.
raw dv
foo.2mb.mp4 (106.5 KB ) - added by rrauenza 12 years ago.
Output from /rjr/ffmpeg-git/bin/ffmpeg -i foo.2mb.dv -vcodec libx264 -preset faster foo.2mb.mp4

Change History (11)

comment:1 by Carl Eugen Hoyos, 12 years ago

Component: FFmpegundetermined

Please provide a sample.

by rrauenza, 12 years ago

Attachment: foo.2mb.dv added

raw dv

by rrauenza, 12 years ago

Attachment: foo.2mb.mp4 added

Output from /rjr/ffmpeg-git/bin/ffmpeg -i foo.2mb.dv -vcodec libx264 -preset faster foo.2mb.mp4

comment:2 by Carl Eugen Hoyos, 12 years ago

Since it works fine here:

Is the problem only reproducible when also encoding audio or also with -an?
Is the problem only reproducible using an external library (libx264) or also when using -qscale 2 -vcodec mpeg4?

$ ffmpeg -i foo.2mb.dv -an out.avi
ffmpeg version N-36163-g5257743, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 25 2011 01:39:23 with gcc 4.3.2 [gcc-4_3-branch revision 141291]
  configuration:
  libavutil      51. 32.100 / 51. 32.100
  libavcodec     53. 47.100 / 53. 47.100
  libavformat    53. 28.100 / 53. 28.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 53.100 /  2. 53.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  5.100 /  0.  5.100
[dv @ 0x8e4faa0] Estimating duration from bitrate, this may be inaccurate
Input #0, dv, from 'foo.2mb.dv':
  Duration: 00:00:00.58, start: 0.000000, bitrate: 28770 kb/s
    Stream #0:0: Video: dvvideo, yuv411p, 720x480, 28771 kb/s, SAR 8:9 DAR 4:3, 29.97 tbr, 29.97 tbn, 29.97 tbc
    Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Incompatible pixel format 'yuv411p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x8e562a0] w:720 h:480 pixfmt:yuv411p tb:1/1000000 sar:8/9 sws_param:
[buffersink @ 0x8e65a00] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out'
[scale @ 0x8e54f20] w:720 h:480 fmt:yuv411p -> w:720 h:480 fmt:yuv420p flags:0x4
Output #0, avi, to 'out.avi':
  Metadata:
    ISFT            : Lavf53.28.100
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 720x480 [SAR 8:9 DAR 4:3], q=2-31, 200 kb/s, 29.97 tbn, 29.97 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (dvvideo -> mpeg4)
Press [q] to stop, [?] for help
frame=   18 fps=  0 q=20.6 Lsize=     170kB time=00:00:00.60 bitrate=2319.7kbits/s
video:164kB audio:0kB global headers:0kB muxing overhead 3.691619%

out.avi looks fine.

comment:3 by rrauenza, 12 years ago

worked: /rjr/ffmpeg-git/bin/ffmpeg -i foo.2mb.dv -qscale 2 -vcodec mpeg4 foo.mp4

worked: /rjr/ffmpeg-git/bin/ffmpeg -i foo.2mb.dv -an out.avi

not worked: /rjr/ffmpeg-git/bin/ffmpeg -an -i foo.2mb.dv -vcodec libx264 -preset faster foo.2mb.mp4

Ok, so the dvvideo format is probably not bad -- it must be something out the output side..

comment:4 by rrauenza, 12 years ago

I'm going to do a make clean of x264 followed by a make clean of ffmpeg ...

comment:5 by rrauenza, 12 years ago

clean builds didn't change the behavior. Are you able to encode them with -vcodec libx264?

comment:6 by rrauenza, 12 years ago

OK, I think it turns out it was my compilation of x264 that ffmpeg was using. It had "gpac no" shown during the configure, which was fixed by installing gpac-devel-static (on fedora).

Thanks for helping me troubleshoot. I thought surely it was the "AC EOB" problem as that is the only diagnostic I had.

So for anyone reading this later, it does look like the AC EOB problem is just a warning now, and not a real issue.

This bug can be closed...

comment:7 by Carl Eugen Hoyos, 12 years ago

Keywords: dvvideo added
Resolution: worksforme
Status: newclosed

I am closing this ticket because the sample you provided does not show the "AC EOB" error for me (it is not a warning).

comment:8 by rrauenza, 12 years ago

I may not have provided a long enough sample to produce the AC EOB message. If you want to pursue that cause, I can provide longer ones, but not by uploading them here.

Either way, I'm able to proceed with my work -- the AC EOB was not the cause of empty h264 output.

comment:9 by Carl Eugen Hoyos, 12 years ago

Please upload either to http://www.datafilehost.com/ or to incoming as explained on http://ffmpeg.org/bugreports.html

Note: See TracTickets for help on using tickets.