[问题]mencoder格式转换

Totem,mplayer,sopcast,realplayer,bmp
回复
头像
tnger
帖子: 69
注册时间: 2007-10-06 0:07

[问题]mencoder格式转换

#1

帖子 tnger » 2008-07-09 19:52

使用mplayer播放rmvb格式的文件时,老师出现死掉的情况,原因是播放的某一侦会出问题,一直找不到解决办法,今天突发奇想,把rmvb格式转换成linux下广泛支持的ogg格式,但转换的时候也会出现问题,如下:

代码: 全选

nux:/home/wangtq$ mencoder \[教你学游泳(01—06集)-总6集\].3学仰泳.RM -o yang4.ogg -vf scale=640:480 -oac pcm -ovc lavc -lavcopts vcodec=mpeg4
MEncoder 1.0rc2-4.1.2 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (Family: 15, Model: 2, Stepping: 9)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
编译用了针对 x86 CPU 的扩展指令集: MMX MMX2 SSE SSE2


警告: 输出文件格式是 _AVI_。请查看 -of help。
成功: 格式: 0数据: 0x0 - 0x1768b19
检测到 REAL 文件格式。
Stream description: Audio Stream
Stream mimetype: audio/x-pn-realaudio
[real] 找到音频流,-aid 0
Stream description: Video Stream
Stream mimetype: video/x-pn-realvideo
[real] 找到视频流,-vid 1
VIDEO:  [RV30]  352x288  24bpp  25.000 fps    0.0 kbps ( 0.0 kbyte/s)
[V] 文件格式:11  fourcc:0x30335652  大小:352x288  帧速:25.00  帧时间:=0.0400
==========================================================================
打开音频解码器: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 44.1 kbit/3.12% (ratio: 5512->176400)
已选音频编解码器: [ffcook] afm: ffmpeg (FFmpeg COOK audio decoder)
==========================================================================
打开视频滤镜: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
打开视频滤镜: [scale w=640 h=480]
==========================================================================
打开视频解码器: [realvid] RealVideo decoder
realvideo: 1 bytes of unknown extradata remaining.
已选视频编解码器: [rv3040] vfm: realvid (Linux RealPlayer 10 RV30/40 decoder)
==========================================================================
VDec: vo 配置请求 - 352 x 288 (色彩空间首选项: Planar I420)
VDec: 使用 Planar I420 作为输出 csp (没有 0)
电影宽高比为 1.22:1 - 预放大到正确的电影宽高比。
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
[swscaler @ 0x8801450]SwScaler: BICUBIC scaler, from yuv420p to yuv420p using MMX2
[swscaler @ 0x8801450]SwScaler: using 4-tap MMX scaler for horizontal luminance scaling
[swscaler @ 0x8801450]SwScaler: using 4-tap MMX scaler for horizontal chrominance scaling
[swscaler @ 0x8801450]SwScaler: using n-tap MMX scaler for vertical scaling (YV12 like)
[swscaler @ 0x8801450]SwScaler: 352x288 -> 640x480
videocodec: libavcodec (640x480 fourcc=34504d46 [FMP4])
New_Face failed. Maybe the font path is wrong.
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
正在写帧头...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
正在写帧头...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Pos:   0.0s      1f ( 0%)  0.00fps Trem:   0min  29mb  A-V:0.000 [0:0]
跳帧中!
Pos:   0.0s      2f ( 0%)  0.00fps Trem:   0min  55mb  A-V:0.004 [0:0]
跳帧中!
Pos:  25.1s    630f ( 5%) 78.49fps Trem:   2min 133mb  A-V:-0.016 [836:1411]]
1 帧重复!
Pos:  75.7s   1893f (14%) 77.60fps Trem:   2min 138mb  A-V:-0.015 [827:1411]
1 帧重复!
Pos:  75.8s   1894f (14%) 77.60fps Trem:   2min 138mb  A-V:-0.012 [827:1411]
1 帧重复!
Pos:  75.8s   1895f (14%) 77.57fps Trem:   2min 139mb  A-V:-0.009 [827:1411]
1 帧重复!
Pos:  75.9s   1896f (14%) 77.55fps Trem:   2min 139mb  A-V:-0.006 [826:1411]
1 帧重复!
Pos:  76.0s   1897f (14%) 77.51fps Trem:   2min 139mb  A-V:-0.003 [826:1411]
1 帧重复!
Pos:  90.2s   2250f (16%) 77.62fps Trem:   2min 141mb  A-V:-0.018 [810:1411]
1 帧重复!
*** glibc detected *** mencoder: malloc(): memory corruption: 0x08bbb250 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7c39ef3]
/lib/tls/i686/cmov/libc.so.6(__libc_malloc+0x7e)[0xb7c3b60e]
mencoder[0x8197cd3]
======= Memory map: ========
08048000-087ce000 r-xp 00000000 08:01 454986     /usr/local/bin/mencoder
087ce000-08820000 rw-p 00786000 08:01 454986     /usr/local/bin/mencoder
08820000-08d7d000 rw-p 08820000 00:00 0          [heap]
b6200000-b6221000 rw-p b6200000 00:00 0 
b6221000-b6300000 ---p b6221000 00:00 0 
b6325000-b6490000 rw-p b6325000 00:00 0 
b64b1000-b6731000 rw-p b64b1000 00:00 0 
b6731000-b6732000 ---p b6731000 00:00 0 
b6732000-b6f32000 rwxp b6732000 00:00 0 
b6f32000-b6f33000 ---p b6f32000 00:00 0 
b6f33000-b7733000 rwxp b6f33000 00:00 0 
b7733000-b7819000 rw-p b7733000 00:00 0 
b7819000-b78c9000 r-xp 00000000 08:01 423787     /usr/lib/libstdc++.so.5.0.7
b78c9000-b78ce000 rw-p 000af000 08:01 423787     /usr/lib/libstdc++.so.5.0.7
b78ce000-b78d3000 rw-p b78ce000 00:00 0 
b78e4000-b7931000 r-xp 00000000 08:01 861648     /usr/lib/codecs/drvc.so
b7931000-b7933000 rw-p 0004c000 08:01 861648     /usr/lib/codecs/drvc.so
b7933000-b7b75000 rw-p b7933000 00:00 0 
b7b75000-b7bb0000 r--p 00000000 08:01 454276     /usr/lib/locale/zh_CN.utf8/LC_CTYPE
b7bb0000-b7bb2000 rw-p b7bb0000 00:00 0 
b7bb2000-b7bd0000 r-xp 00000000 08:01 423294     /usr/lib/libexpat.so.1.0.0
b7bd0000-b7bd2000 rw-p 0001d000 08:01 423294     /usr/lib/libexpat.so.1.0.0
b7bd2000-b7d0d000 r-xp 00000000 08:01 33760      /lib/tls/i686/cmov/libc-2.5.so
b7d0d000-b7d0e000 r--p 0013b000 08:01 33760      /lib/tls/i686/cmov/libc-2.5.so
b7d0e000-b7d10000 rw-p 0013c000 08:01 33760      /lib/tls/i686/cmov/libc-2.5.so
b7d10000-b7d13000 rw-p b7d10000 00:00 0 
b7d13000-b7d1e000 r-xp 00000000 08:01 1249312    /lib/libgcc_s.so.1
b7d1e000-b7d1f000 rw-p 0000a000 08:01 1249312    /lib/libgcc_s.so.1
b7d1f000-b7d20000 rw-p b7d1f000 00:00 0 
b7d20000-b7d45000 r-xp 00000000 08:01 33768      /lib/tls/i686/cmov/libm-2.5.so
b7d45000-b7d47000 rw-p 00024000 08:01 33768      /lib/tls/i686/cmov/libm-2.5.so
b7d47000-b7d49000 r-xp 00000000 08:01 33766      /lib/tls/i686/cmov/libdl-2.5.so
b7d49000-b7d4b000 rw-p 00001000 08:01 33766      /lib/tls/i686/cmov/libdl-2.5.so
b7d4b000-b7d5e000 r-xp 00000000 08:01 33786      /lib/tls/i686/cmov/libpthread-2.5.so
b7d5e000-b7d60000 rw-p 00013000 08:01 33786      /lib/tls/i686/cmov/libpthread-2.5.so
b7d60000-b7d62000 rw-p b7d60000 00:00 0 
b7d62000-b7e41000 r-xp 00000000 08:01 423789     /usr/lib/libstdc++.so.6.0.8
b7e41000-b7e44000 r--p 000de000 08:01 423789     /usr/lib/libstdc++.so.6.0.8
b7e44000-b7e46000 rw-p 000e1000 08:01 423789     /usr/lib/libstdc++.so.6.0.8
b7e46000-b7e4c000 rw-p b7e46000 00:00 0 
b7e4c000-b7e6f000 r-xp 00000000 08:01 423300     /usr/lib/libfontconfig.so.1.2.0
b7e6f000-b7e77000 rw-p 00023000 08:01 423300     /usr/lib/libfontconfig.so.1.2.0
b7e77000-b7edf000 r-xp 00000000 08:01 422090     /usr/lib/libfreetype.so.6.3.10
b7edf000-b7ee2000 rw-p 00068000 08:01 422090     /usr/lib/libfreetype.so.6.3.10
b7ee2000-b7ee3000 rw-p b7ee2000 00:00 0 
b7ee3000-b7f01000 r-xp 00000000 08:01 423576     /usr/lib/libjpeg.so.62.0.0
b7f01000-b7f02000 rw-p 0001d000 08:01 423576     /usr/lib/libjpeg.so.62.0.0
b7f02000-b7f15000 r-xp 00000000 08:01 423853     /usr/lib/libz.so.1.2.3
b7f15000-b7f16000 rw-p 00012000 08:01 423853     /usr/lib/libz.so.1.2.3
b7f16000-b7f38000 r-xp 00000000 08:01 423309     /usr/lib/libpng12.so.0.15.0
b7f38000-b7f39000 rw-p 00021000 08:01 423309     /usr/lib/libpng12.so.0.15.0
b7f42000-b7f43000 rw-p b7f42000 00:00 0 
b7f43000-b7f4a000 r--s 00000000 08:01 227371     /usr/lib/gconv/gconv-modules.cache
b7f4a000-b7f4c000 rw-p b7f4a000 00:00 0 
b7f4c000-b7f65000 r-xp 00000000 08:01 1249269    /lib/ld-2.5.so
b7f65000-b7f67000 rw-p 00019000 08:01 1249269    /lib/ld-2.5.so
bff81000-bff95000 rwxp bff81000 00:00 0          [stack]
bff95000-bff97000 rw-p bff95000 00:00 0 
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
忽略

目前,我的解决办法是,先查看转换好的文件的长度,比如说,这一个是109s,那么将上面的命令中的输出文件改一下,在最后加一个参数“ -ss 110“,重新从110秒开始转换,如何还出现问题,照这个方法继续。视频长度不长,文件问题不多的话还可以,手动调节几次就行了。

然后,用这条命令合并文件:

代码: 全选

mencoder -oac copy -ovc copy -idx -o 111.ogg yang1.ogg yang2.ogg yang3.ogg yang4.ogg 
然而,这个办法终究还是不太舒服,不知道mencoder有没有自动跳过错误的选项,在mencoder手册里面查了好久,倒是查到了一个“-lavdopts bug=1” 但用了之后也没身作用,还是会中断,不能一次转换整个文件,不知道xdjm们有没有解决办法?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2008-07-09 20:39

试试ffmpeg吧。
● 鸣学
头像
laowu2141
帖子: 530
注册时间: 2007-06-19 11:25
系统: kubuntu 13.04
来自: 北京
联系:

#3

帖子 laowu2141 » 2008-07-09 22:48

首先,用realplay播放看看有没有这个问题,如果还有可以肯定是文件问题了,建议在windows下用rmfix之类的工具修复一下,至于格式转换和ls的方法我都不太了解,看到lz的视频文件我也不建议下载avi或mkv这样的格式了,似乎是没有
头像
laowu2141
帖子: 530
注册时间: 2007-06-19 11:25
系统: kubuntu 13.04
来自: 北京
联系:

#4

帖子 laowu2141 » 2008-07-09 22:49

请注意,如果用rmfix修复后文件变短很多,内容不完整,比如109s后的东西没了,很可能是下载不完整导致的
头像
tnger
帖子: 69
注册时间: 2007-10-06 0:07

#5

帖子 tnger » 2008-07-10 19:24

在win下用realplayer播放是可以的,但某些地方也会顿一下
回复