当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-11-30 11:55 

注册: 2009-03-29 18:15
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
下载了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


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-11-30 12:06 

注册: 2009-03-29 18:15
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
效果图:
附件:
Screenshot-1.png
Screenshot-1.png [ 572.04 KiB | 被浏览 1173 次 ]



页首
 用户资料  
 
3 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-11-30 13:14 
头像

注册: 2009-10-20 21:13
帖子: 2089
地址: Pacific Western University
送出感谢: 0 次
接收感谢: 7
ppa源升级很快,coreavc要自己配,但ffmpeg-mt是装上就支持的,cpu只要不太差,不配coreavc也是可以的。
https://launchpad.net/~ripps818/+archive/coreavc


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-11-30 14:32 

注册: 2009-03-29 18:15
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
hasee.wu 写道:
ppa源升级很快,coreavc要自己配,但ffmpeg-mt是装上就支持的,cpu只要不太差,不配coreavc也是可以的。
https://launchpad.net/~ripps818/+archive/coreavc

如果源里有就好了,就是coreavc是收费的,估计不能添加到源里面去。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-11-30 14:58 
头像

注册: 2009-10-20 21:13
帖子: 2089
地址: Pacific Western University
送出感谢: 0 次
接收感谢: 7
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的,升级太快了


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-12-07 18:39 

注册: 2010-07-13 14:27
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
mark. 5L签名很有深度。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2010-12-07 21:49 

注册: 2007-10-29 10:58
帖子: 613
送出感谢: 0 次
接收感谢: 2
我用ffmpeg-mt,几乎什么片子也能流畅播放!现在的双核U超过2.5的差不多放什么都没问题!


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2011-01-16 22:30 

注册: 2011-01-10 22:04
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
我按照楼主所说的修改了,在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


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2011-01-25 12:38 

注册: 2009-03-29 18:15
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
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。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 最新SVN(2010-11-17)mplayer+coreavc2.0打patch补丁出错的请进(包含解决方案)
帖子发表于 : 2011-01-29 0:08 

注册: 2011-01-10 22:04
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
:em11 果然如楼主所说,可以编译了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译