最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

Totem,mplayer,sopcast,realplayer,bmp
回复
zjfcctv
帖子: 18
注册时间: 2009-03-29 18:15

最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#1

帖子 zjfcctv » 2010-11-30 11:55

下载了SVN版本mplayer之后发现FFmpeg不支持多线程解码,FFmpeg-mt又下载不下来,只能使用coreavc来解决解码效率低的问题。
但是打补丁(补丁时间:2010-03-12)时却一直出错,捣鼓了一个早上,终于发现问题了。
首先我们观察该补丁文件dshowserver.patch:

代码: 全选

Index: libmpcodecs/vd.c
===================================================================
--- libmpcodecs/vd.c.orig	2010-03-12 07:47:10.000000000 -0800
+++ libmpcodecs/vd.c	2010-03-12 07:48:02.000000000 -0800
@@ -43,6 +43,7 @@
 extern const vd_functions_t mpcodecs_vd_ffmpeg;
 extern const vd_functions_t mpcodecs_vd_theora;
 extern const vd_functions_t mpcodecs_vd_dshow;
+extern const vd_functions_t mpcodecs_vd_dshowserver
 extern const vd_functions_t mpcodecs_vd_dmo;
 extern const vd_functions_t mpcodecs_vd_vfw;
 extern const vd_functions_t mpcodecs_vd_vfwex;
注意红色文件部分是补丁文件将在源文件中添加的一行,前面有一个“+”号,上面的“-43,6 +43,7”是用来定位所加这一行在libmpcodecs/vd.c
这个文件中的位置的。
那么只要mplayer的作者修改了vd.c和其它需要打补丁的文件(请具体观察patch文件修改了那些文件)时,该补丁也就会出错。
但这个补丁依然可以使用
当我们使用命令

代码: 全选

patch -p0 < "补丁文件"
这个命令可以部分打上补丁。之所以说是“部分”,因为有些文件打补丁出错了:

代码: 全选

Hunk #1 succeeded at 40 (offset -3 lines).
Hunk #2 succeeded at 71 with fuzz 2 (offset -3 lines).
patching file Makefile
Hunk #1 succeeded at 20 with fuzz 2.
Hunk #2 FAILED at 530.
Hunk #3 FAILED at 909.
2 out of 3 hunks FAILED -- saving rejects to file Makefile.rej
patching file libmpcodecs/vd_dshowserver.c
patching file libmpcodecs/timeout_sem.c
patching file libmpcodecs/timeout_sem.h
显然在为Makefile打补丁时出错了,原因很显然:通过./configure 命令生成的Makefile不匹配,既然不匹配那么我们就手动为
Makefile打补丁,观察patch文件:

代码: 全选

Index: Makefile
===================================================================
--- Makefile.orig	2010-03-12 07:47:19.000000000 -0800
+++ Makefile	2010-03-12 07:48:02.000000000 -0800
@@ -20,6 +20,7 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 include config.mak
+EXTRALIBS += -lrt
 
 .SUFFIXES:
 
@@ -529,6 +530,7 @@
               stream/stream_mf.c \
               stream/stream_null.c \
               stream/url.c \
+              libmpcodecs/vd_dshowserver.c \
               $(SRCS_COMMON-yes)
 
 
@@ -908,6 +910,7 @@
 libdvdnav/%:   CFLAGS := -Ilibdvdnav -D__USE_UNIX98 -D_GNU_SOURCE -DHAVE_CONFIG_H -DVERSION=\"MPlayer-custom\" $(CFLAGS)
 libdvdread4/%: CFLAGS := -Ilibdvdread4 -D__USE_UNIX98 -D_GNU_SOURCE $(CFLAGS_LIBDVDCSS_DVDREAD) $(CFLAGS)
 libfaad2/%:    CFLAGS := -Ilibfaad2 -D_GNU_SOURCE -DHAVE_CONFIG_H $(CFLAGS_FAAD_FIXED) $(CFLAGS)
+libmpcodecs/%: CFLAGS := $(CFLAGS) -g -O0
 
 loader/%: CFLAGS += -fno-omit-frame-pointer $(CFLAGS_NO_OMIT_LEAF_FRAME_POINTER)
 #loader/%: CFLAGS += -Ddbg_printf=__vprintf -DTRACE=__vprintf -DDETAILED_OUT
显然带行首“+”号的是需要添加到Makefile中去的,至于定位很简单,比如我们要添加“libmpcodecs/vd_dshowserver.c \”这句代码
我们只要找到:
stream/stream_mf.c \
stream/stream_null.c \
stream/url.c \
在“ stream/url.c \”这句代码的下一行添加“libmpcodecs/vd_dshowserver.c \”就行,以此类推。
修改完Makefile之后,如果还提示有其它错误的话,就自己手动修改,思路一样。
最后

代码: 全选

make
sudo make install
使用命令:

代码: 全选

mplayer -demuxer mkv -vc coreserve 你的视频文件
大家还有问题可以回帖询问, :em11
zjfcctv
帖子: 18
注册时间: 2009-03-29 18:15

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#2

帖子 zjfcctv » 2010-11-30 12:06

效果图:
Screenshot-1.png
头像
hasee.wu
帖子: 2089
注册时间: 2009-10-20 21:13
来自: Pacific Western University

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#3

帖子 hasee.wu » 2010-11-30 13:14

ppa源升级很快,coreavc要自己配,但ffmpeg-mt是装上就支持的,cpu只要不太差,不配coreavc也是可以的。
https://launchpad.net/~ripps818/+archive/coreavc
zjfcctv
帖子: 18
注册时间: 2009-03-29 18:15

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#4

帖子 zjfcctv » 2010-11-30 14:32

hasee.wu 写了:ppa源升级很快,coreavc要自己配,但ffmpeg-mt是装上就支持的,cpu只要不太差,不配coreavc也是可以的。
https://launchpad.net/~ripps818/+archive/coreavc
如果源里有就好了,就是coreavc是收费的,估计不能添加到源里面去。
头像
hasee.wu
帖子: 2089
注册时间: 2009-10-20 21:13
来自: Pacific Western University

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#5

帖子 hasee.wu » 2010-11-30 14:58

zjfcctv 写了:
hasee.wu 写了:ppa源升级很快,coreavc要自己配,但ffmpeg-mt是装上就支持的,cpu只要不太差,不配coreavc也是可以的。
https://launchpad.net/~ripps818/+archive/coreavc
如果源里有就好了,就是coreavc是收费的,估计不能添加到源里面去。
coreavc 注册机到处都有,我只是拿来进行科学实验,成功后就主动卸载了。

但用这个ppa源中的mplayer ,不配coreavc也是可以的,ffmpeg-mt是静态编译到mplayer的。

这个源中的mplayer,是git的,升级太快了
sg1
帖子: 9
注册时间: 2010-07-13 14:27

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#6

帖子 sg1 » 2010-12-07 18:39

mark. 5L签名很有深度。
supernan
帖子: 688
注册时间: 2007-10-29 10:58

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#7

帖子 supernan » 2010-12-07 21:49

我用ffmpeg-mt,几乎什么片子也能流畅播放!现在的双核U超过2.5的差不多放什么都没问题!
fido_cn
帖子: 2
注册时间: 2011-01-10 22:04

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#8

帖子 fido_cn » 2011-01-16 22:30

我按照楼主所说的修改了,在Makefile添加了 libmpcodecs/vd_dshowserver.c \

代码: 全选

              stream/stream_file.c \
              stream/stream_mf.c \
              stream/stream_null.c \
              stream/url.c \
              libmpcodecs/vd_dshowserver.c \
              sub/eosd.c \
结果make的时候提示说

代码: 全选

make: *** 没有规则可以创建“libmpcodecs/vd_dshowserver.o”需要的目标“libmpcodecs/vd_dshowserver.c”。 停止。
在libmpcodecs目录下查找也确实没有此文件,重新从SVN上下载过后也依然如此,请问vd_dshowserver.c要从何处导入?
我使用的CoreAVE版本2.0,mplayer为SVN当日下载的版本,本人使用ubuntu未满1个月,请各位前辈多多指点~~
:em06
zjfcctv
帖子: 18
注册时间: 2009-03-29 18:15

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#9

帖子 zjfcctv » 2011-01-25 12:38

fido_cn 写了:我按照楼主所说的修改了,在Makefile添加了 libmpcodecs/vd_dshowserver.c \

代码: 全选

              stream/stream_file.c \
              stream/stream_mf.c \
              stream/stream_null.c \
              stream/url.c \
              libmpcodecs/vd_dshowserver.c \
              sub/eosd.c \
结果make的时候提示说

代码: 全选

make: *** 没有规则可以创建“libmpcodecs/vd_dshowserver.o”需要的目标“libmpcodecs/vd_dshowserver.c”。 停止。
在libmpcodecs目录下查找也确实没有此文件,重新从SVN上下载过后也依然如此,请问vd_dshowserver.c要从何处导入?
我使用的CoreAVE版本2.0,mplayer为SVN当日下载的版本,本人使用ubuntu未满1个月,请各位前辈多多指点~~
:em06
必须先打补丁,这个打完这个补丁出错后,再修改Makefile。
fido_cn
帖子: 2
注册时间: 2011-01-10 22:04

Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)

#10

帖子 fido_cn » 2011-01-29 0:08

:em11 果然如楼主所说,可以编译了。
回复