mencoder (media-video/mplayer-1.0_pre4) have some code for maintain A/V sync or something, which can skips frames. It's nessesary for video files with irregular frame length, but I see no reason for this for avi. Yet, on most recoding it skips two frames near the beginning of avi file. Problem is, with -ovc copy this result in broken avi in (usual) case any other frame depend on skipped frame. This error can crash sensitive decoders and if it's not in black screen it's clearly visible (luckily in many cases it is in black screen). Without -ovc copy, missing frame is usually not noticable. With -ovc copy -oac copy, no skipping frame is present. With -oac lavc -lavcopts acodec!=mp3 or -oac pcm, another frames is skipped. (Maybee some audio codec don't skip frames ?) Reproducible: Always Steps to Reproduce: 1. mencoder something.avi -ovc copy -oac copy -o result.avi 2. notice "skipping frame" message 3. play result.avi Actual Results: .... Writing AVI header... ODML: Aspect information not (yet?) available or unspecified, not writing vprp header. Pos: 0.9s 22f ( 0%) 0fps Trem: 0min 0mb A-V:0.084 [0:169] Skipping frame! Pos: 1.6s 40f ( 0%) 0fps Trem: 4min 177mb A-V:0.080 [904:172]] Skipping frame! Pos: 87.2s 2182f (10%) 110fps Trem: 2min 180mb A-V:0.045 [1670:194] .... Expected Results: ... Writing AVI header... ODML: Aspect information not (yet?) available or unspecified, not writing vprp header. Pos: 87.2s 2182f (10%) 110fps Trem: 2min 180mb A-V:0.045 [1670:194] .... Portage 2.0.50-r8 (default-x86-2004.0, gcc-3.3.2, glibc-2.3.2-r9, 2.4.26) ================================================================= System uname: 2.4.26 i686 AMD Duron(tm) Processor Gentoo Base System version 1.4.16 distcc 2.13 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] Autoconf: sys-devel/autoconf-2.59-r3 Automake: sys-devel/automake-1.8.3 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-O2 -mcpu=athlon -march=i686 -fomit-frame-pointer -pipe" CHOST="i686-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.2/share/config /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/bind /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-O2 -mcpu=athlon -march=i686 -fomit-frame-pointer -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache distcc sandbox" GENTOO_MIRRORS="http://ftp.sh.cvut.cz/MIRRORS/gentoo/gentoo/ http://www.mirror.ac.uk/sites/www.ibiblio.org/gentoo/ http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j4" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/mnt/hda04/gentoo-var-tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="3dnow X Xaw3d aalib apache2 apm arts avi berkdb caps cdr crypt cups curl dga doc dvd encode esd flac foomaticdb gd gdbm gif gpm gtk gtk2 imagemagick imlib innodb ipv6 java jpeg lcms lesstif libg++ libwww mad mbox mcal memlimit mikmod mmx mng motif mozilla mpeg mysql ncurses nls oggvorbis opengl oss pam pdflib perl png python qt quicktime readline samba sdl slang snmp spell sqlite sse ssl svga tcltk tcpd tetex theora tiff truetype unicode usb vhosts videos wmf x86 xml xml2 xmms xosd xv zlib"
Someone told me that "-mc 0" can help in this cases. I didn't test it yet ... and I still think this can be only workaround, not repair.
*bump* latest mplayer fixes this?
Which one ? mplayer-1.0_pre5-r5 still has that problem.
what about one of the newer versions?
Please try with pre7.
Problem is still present with media-video/mplayer-1.0_pre7. Note: I just noticed I made mistake in bug report. First step to reproduce is 1. mencoder something.avi -ovc copy -oac mp3lame -o result.avi (or mencoder something.avi -ovc copy -oac lavc -lavcopts acodec=mp3, but it skip different frame(s) in -pre7. Also it seems it skips less frames.) Sorry to all who didn't get it from sentence "With -oac lavc -lavcopts acodec!=mp3 or -oac pcm, another frames is skipped."
Note: just noticed three skipped frames after command 'mencoder *801* -o 8xx-Znelka.avi -ss 1:03 -endpos 0:1:0 -oac copy -ovc copy'. It also was visible in video (skipped frame referenced from later frame problem). -mc 0 workaround worked.<BR>mplayer-1.0_pre7-r1 (1.0pre7try2-3.3.2)
No activity on this for ~6 months - does it still happen with 1.0.20060415? Can anyone even reproduce this? It works fine here.
Yes, it still happens. On first video I tried one missing frame. Or, more reproducible: download http://movies.apple.com/movies/fox/ice_age_2/ice_age_2-tlrD_h480.mov (it's free trailer), then mencoder ice_age_2-tlrD_h480.mov -ovc copy -oac mp3lame -o ice_age.avi. Two skipped frames.
Ok, I can reproduce this now. You can use -noskip -mc 0, to stop this happening - does that get rid of the crashing with certain decoders that you reported? Apart from that, I think this is more of an upstream issue (I'm only a lowly arch tester, though).
After almost two years I don't remember what sensitive decoders I was talking about (I suppose it was something on windows). But I reported the crashing and visibility of error only to prove skipping frames with -ovc copy is bug (also, theoretically, if only frames just before I-frames will be skipped, it won't be bug, but I think -ovc copy don't have access to information about what frames are I-frames). There's no reason while decoders should crash if no frames is skipped. While -noskip don't work, I already reported -mc 0 is usable workaround. It probably is upstream issue. But I still don't lost belief that peoples from gentoo bugzilla have contact with developers and even if they don't, we can at least track the bug (and workarounds) here for peoples searching for it.
I'm sorry about that, hopefully the problem will be mitigated in the future once the support for this kind of files improves. I'm marking it as REMIND
Due to the way -ovc copy works, I don't think there is a way to properly fix this. You should use -mc 0 -noskip (I think using only -mc 0 can lead to A-V desync in some cases). (Yes, of course it would be possible to make -ovc copy imply these options, but that would reduce functionality e.g. for raw streams or all-keyframes streams, thus I think the "workaround" is the right solution).
I was thinking there is in fact some bug in A-V sync code, because recoded video should be already synced (of course, there might be bug in A-V sync of program used to create it). Or something as using algorithm which is correct in most cases instead of optimal algorithm, and it doesn't work on begin of stream ... And this bug is only product of this hidden bug. And there is still that posibility with deleting frames just before keyframes or something like that. But yes, with -mc 0 workaround this bug is not so severe. Also, maybee this should be mentioned in documentation ...