[MEncoder-users] MEncoder SVN-r26664 interlaced AVCHD decoding issues, sample PF24 M2TS clip available
Werner Johansson
wj at xnk.nu
Sun May 4 12:19:19 CEST 2008
Hi all,
I understand that AVCHD h.264 container support in MPlayer/MEncoder is a
recent addition and there seems to be some odd behavior. What I try to
accomplish with this setup is to extract true 24p footage for editing
from a Canon Vixia HF10 camcorder writing "PF24" AVCHD files in a
1920x1080i container (hard telecined, no flags present). The first odd
thing is that the framerate of the video cannot be automatically
detected but needs to be forced. I tried setting it to 30000/1001 which
would be the logical value, but the video then runs at half speed. I
googled some and found others having the same issue and they solved it
by using 60000/1001 and got the correct video length. To extract true
24p the detc or filmdint filters seems like a logical choice. I have
spotted two issues so far with this setup though:
1: For some reason the clips from the camcorder have 4 initial bad
frames with "B picture before any references, skipping" errors, must be
an issue with the Canon firmware - why would it create a file with
B-frames _first_ in a stand-alone clip? In the end I end up with a video
stream that is slightly shorter than the audio. Anyone else seen this?
Searching for this error didn't turn up anything AVCHD related, only DVB
stuff.
2: There are some blocky artifacts in the decoded video that I can't
spot when playing back the original file in Nero8 ShowTime or using the
component video terminals on the camcorder itself. Anything that gets
lost in demux/decode? Most of the frames look good but some goes
slightly bad (not all over the screen, just small portions). In my
example clip there's garbage in frame 62 in the resulting 24p file for
example. The garbage can be seen when decoding the original file in
MPlayer as well, so it's not a result of broken detc or filmdint filtering.
If anyone's interested the source clip (of a side-scrolling Nevada
desert) it is available here: http://xnk.nu/pf24/00028.mts . It's a
fairly short clip (~10 seconds / ~20MB), but it immediately shows any
broken 24p conversion! :)
This is a sample command line of what I try to do, accompanied by the
corresponding output (changing the video filter chain to
softskip,detc,scale=960:540,harddup will make the resulting file
substantially smaller, suitable as a proxy clip for faster editing) :
[root at rofs ~]# mencoder 00028.mts -noaspect -noskip -o 28ffvhuff.avi
-fps 60000/1001 -ofps 24000/1001 -oac pcm -ovc lavc -vf
softskip,detc,harddup -lavcopts vcodec=ffvhuff
MEncoder dev-SVN-r26664-4.1.2 (C) 2000-2008 MPlayer Team
CPU: AMD Athlon(tm) 64 Processor 4000+ (Family: 15, Model: 39, Stepping: 1)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2
success: format: 0 data: 0x0 - 0x1434000
TS file format detected.
VIDEO H264(pid=4113) AUDIO A52(pid=4352) NO SUBS (yet)! PROGRAM N. 1
[V] filefmt:29 fourcc:0x10000005 size:0x0 fps:0.000 ftime:=0.0000
Input fps will be interpreted as 59.940 instead.
==========================================================================
Opening audio decoder: [liba52] AC3 decoding with liba52
Using SSE optimized IMDCT transform
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 256.0 kbit/16.67% (ratio: 32000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)
==========================================================================
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [harddup]
Opening video filter: [detc]
Opening video filter: [softskip]
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
VDec: vo config request - 1920 x 1080 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
videocodec: libavcodec (1920x1080 fourcc=48564646 [FFVH])
[h264 @ 0x87bb8b0]B picture before any references, skipping0.002 [0:0]
[h264 @ 0x87bb8b0]decode_slice_header error
[h264 @ 0x87bb8b0]no frame!
Error while decoding frame!
[h264 @ 0x87bb8b0]B picture before any references, skipping0.003 [0:0]
[h264 @ 0x87bb8b0]decode_slice_header error
[h264 @ 0x87bb8b0]no frame!
Error while decoding frame!
[h264 @ 0x87bb8b0]B picture before any references, skipping0.005 [0:0]
[h264 @ 0x87bb8b0]decode_slice_header error
[h264 @ 0x87bb8b0]no frame!
Error while decoding frame!
[h264 @ 0x87bb8b0]B picture before any references, skipping0.007 [0:0]
[h264 @ 0x87bb8b0]decode_slice_header error
[h264 @ 0x87bb8b0]no frame!
Error while decoding frame!
New_Face failed. Maybe the font path is wrong.n 0mb A-V:0.007 [0:0]
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
New_Face failed. Maybe the font path is wrong.
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not
writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not
writing vprp header.
Pos: 9.8s 599f (100%) 10.19fps Trem: 0min 329mb A-V:0.036
[278846:1536]
Flushing video frames.
Writing index...
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not
writing vprp header.
Video stream: 278846.091 kbit/s (34855761 B/s) size: 343091068 bytes
9.843 secs 599 frames
Audio stream: 1536.000 kbit/s (192000 B/s) size: 1923072 bytes 10.016
secs
[root at rofs ~]#
Anyone with any ideas why it behaves this way, it's _almost_ correct but
not 100%, slightly annoying.. :)
/Werner
More information about the MEncoder-users
mailing list