因为我的itouch4不支持rmvb,想要在上网看动画片就必需要转成mp4。原本我用mediacoder来转,但最近的几个版本经常出错。前段时间写了一个用avs+x264来转换的,现在又想把avs也给去掉,准备用上ffmpeg。

使用

1、查看rmvb属性

转换之前先查看一下文件属性,将分辨率等信息看一下,如果分辨率超过960*640就需要调整。顺便看一下码率,压制成x264的时候参考一下。 :

ffmpeg -i 文件名

2、压制成mp4

1.pass1编码

ffmpeg -i 01.rmvb -an -vcodec libx264 -b 560k -pass 1 -f mp4 -y NUL

-an : 不编码音频
-vcodec : 设置视频的编码,我这里使用的是x264
-b : 这个是码率
-f : 强制使用格式
-y : 自动输y确认
NUL : 因为是pass1 所以不需要输出文件,直接用NUL

2.pass2编码

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -pass 2 -f mp4 01.mp4

因为现在很多rmvb的音频部分都是aac编码的,所以可以直接用-acodec copy复制音频部份

3、针对某些文件的参数调整

有些rmvb或着mkv之类的分辨率比较高,所以传到itouch需要调整一下。在ffmpeg里面可以用-s参数:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4

960x640需要自己计算一下,按比例进行调整

按时间截取:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -ss 00:00:00 -t 00:01:00 -f mp4 01.mp4

设置B-frame对动画片有些好处,2pass的时候不是很明显,1pass的比较明显:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -bf 6 -f mp4 01.mp4

想找动画片看,但那个肉丸网盘下载站的完结动漫没有按点击量排序,所以就把列表采集下来自己排。代码里用了gevent和urllib2,留着给自己以后参考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#-*- encoding:utf-8 -*-
# 作者:chronos

#完结作品的列表
urls = [('http://d.52rwdm.com/search.asp?page=%d&searchword=完结&searchtype=2'%i).decode('utf8').encode('gbk') for i in range(1,9)]

import gevent
from gevent import monkey
import re

monkey.patch_all()

import urllib2

class Comic():
process = 5#同时并发数

def __init__(self, urls):
self.urls = urls
self.urls.reverse()
self.rslist = []#保存结果
for p in range(self.process):
self.down()

def down(self):
try:
#添加到下载
gevent.joinall([gevent.spawn(self.getPage, self.urls.pop())])
except:
pass

def buildList(self, data):
tmplist = re.findall(ur'<a href=\"\/view\/\d+.html\"><b>(.*?)<\/b>\[完结\]<span>\[.*?\]<\/span><span>\((\d+)点击\)<\/span>', data.decode('gbk','ignore'))
self.rslist.extend(tmplist)

def getPage(self, url):
data = urllib2.urlopen(url).read()
print url,u'下载完成'.encode('gbk')
#下载完一个,开始下载另一个
self.down()
#处理数据
self.buildList(data)

def cmp(self, a, b):
'''对比大小,用于排序'''
if int(a[1]) > int(b[1]):
return 1
elif int(a[1]) == int(b[1]):
return 0
else:
return -1

def sortlist(self):
'''对结果进行排序'''
self.rslist.sort(self.cmp, reverse=True)

c = Comic(urls)
c.sortlist()

f = open('CompleteComic.txt','w+')
for comic in c.rslist:
try:
f.write((u'%s, %s\r\n'%(comic[1], comic[0])).encode('gbk'))
except:
print comic[0]
f.close()

默认用pip或easy_install安装一些需要编译的包的时候会调用vs来编译,但机子上不一定装了这东西。而且vs太大,可以考虑装个mingw32。

只要创建C:\Python27\Lib\distutils\distutils.cfg并添加如下内容。

1
2
[build]
compiler=mingw32

就默认会调用mingw32,当然mingw32的环境变量也是要设置的。

编译的时候有可能会提示你找不到msvcr90,只要在C盘搜索msvcr90.dll,然后复制到C:\Python27\libs目录下,并把后缀名改成lib。

1.用ssh-keygen生成公钥

ssh-keygen -t rsa

这条命令将会生成id_rsa和id_rsa.pub文件

2.将生成的公钥扔到远端机器上

将id_rsa.pub传到远端机器上:

scp id_rsa.pub userid@x.x.x.x:.ssh/tmp.pub

然后用ssh登陆到远端的机器上,并将tmp.pub的内容加入到authorized_keys文件中:

cat tmp.pub>>authorized_keys

然后就可以使用公钥免密码登陆了

将博客的域名改为blog.plotcup.com

第一个域名blog.mycyd.info快要到期了,并且不再打算使用。

第二个域名devtime.tk依旧可以访问,但百度不收录tk域名的,所以启用了现在的这个域名。

1.安装samba包

sudo apt-get install samba

2.配置用户认证

编辑/etc/samba/smb.conf文件,将里面的security = user前面的#号去掉。 执行下面的命令设置用户密码:

sudo smbpasswd 用户名

3.配置共享目录

在/etc/samba/smb.conf文件中加入:

[D]
    comment = D
    path = /media/D
    valid users = 用户名
    writable = yes

4.重启smbd

sudo /etc/init.d/smbd restart

1.首先在确定自己的CPU支持硬件虚拟化,有些可能要在BIOS中开启

找到 Intel Virtualization Technlogy 并打开

2.要确定自己的内核支持KVM

uname -a

2.6以上的内核一般都支持

3.安装KVM和virt软件包

virt-manager (图形化管理工具) python-vm-builder (创建基于Ubuntu的虚拟机的脚本,可选)

sudo apt-get install kvm ubuntu-virt-server kvm-pxe
sudo apt-get install virt-manager
sudo apt-get install python-vm-builder

4.配置kvm

加载相关内核模块:

sudo modprobe kvm
sudo modprobe kvm-intel

AMD 使用下面这条:

sudo modprobe kvm-amd

验证加载成功:

lsmod | grep kvm

kvm_intel              61643  0 
kvm                   383822  1 kvm_intel

5.确认开启libvirtd后台服务

sudo service libvirt-bin status

libvirt-bin start/running, process 6715
  1. 配置网络

在libvirt软件包安装完成之后,会默认配置一个虚拟的网络桥接设备virbr0。它提供了一个虚拟网络供guest使用(通过NAT转发,提供从guest到外部网络-outbound的通讯)。其默认ip地址为192.168.122.x。

如果要获得完整的网络访问(inbound/outbound),进行如下配置(可选):

sudo apt-get install bridge-utils
sudo vi /etc/network/interfaces

内容如下:

auto lo
iface lo inet loopback

# 添加以下部分
auto eth0
iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

重启网络:

sudo /etc/init.d/networking restart

检测网络配置:

ifconfig

可以同时看到br0和eth0

7.添加用户权限

将当前用户添加到libvirtd和kvm用户组:

sudo adduser userid libvirtd
sudo adduser userid kvm

然后重启一下电脑,不然权限可能会有问题。

8.用virt-manager创建kvm guest

virt-manager

在里面创建自己的虚拟机就可以了,用法跟其它的虚拟机差不多,然后安装系统即可。

ubuntu11.10的源里面已经加入了gnome直接安装就可以了 :

sudo apt-get install gnome-shell

安装完后注销一下,选择gnome登入。

使用下面的命令可以默认启用gnome3的桌面 :

sudo /usr/lib/lightdm/lightdm-set-defaults -s gnome-shell

折腾了三天,终于把自己想要的硬件驱动起来了。现在就声卡没去折腾,因为单位的电脑没音箱,装上声卡也没用。

配置如下:

电脑型号:联想ThinkCentre M6100T 台式电脑
CPU:Intel Core 2 Duo E7500
内存:2G ddr3
显卡:ATI Radeon HD 4350
声音:ALC662
网卡:Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller
    RTL8139 Fast Ethernet Adapter

刚装完的时候进不了系统,进安全模式把必要的驱动装进去就可以进去了。

然后因为查不到88E8057的驱动,所以找了一张旧的8139插上去,但网上下的几个版本的8139驱动死活驱动不起来。后来用了道奇兔发上来的一个8139的驱动成功了。原来是因为原先找的驱动都是i386的,装x86-64的就没问题了。

显卡是修改了ati 4600的驱动,把里面的ID发成4350的就可以驱动了。有水波纹的效果。

把ATI4600COntroller.kext里面的Info.plist打开 找到:

<key>IOPCIMatch</key>

把里面的内容改成:

<string>0x954F1002</string>

然后用Kext Wizard修复权限,并清除缓存重启一下就可以驱动了。

变色龙使用的是Chameleon 2 Rev 1500版本

Chameleon Install 1500.7z

Kext Wizard.zip

开机所需的必要的kext,放到S/L/E下面

Extra.zip

修改过的4600的驱动,用来驱动4350

ATI4600Controller.kext.7z

RTL8139Family_64bit_10a432.zip

上上个星期经大学同学介绍给杭州一家公司做了一个开单子的系统,界面上使用了easyui。起初用用还算挺不错的。里面的grid使用挺方便的,一些功能基本都能够实现,用json来传数据,速度也挺快的。上个星期给把程序给同学部署后就发现easyui的一些性能上的问题。在他们那边的IE6上面打开单子的页面花了10秒钟时间,简直让人抓狂。但用户管理列表页面就没那么长,所以我怀疑是easyui的控件放太多了,而且其中某些控件的性能很差的关系。

最后发现这个的原因应该是加载的 dateboxdatetimebox 这两个控件引用的,这两控件我加载了19个,当我把他们去掉后,页面加载的时候大概会变成3秒,比10秒少了很多。当初我的设计上也有些问题,因为我把添加单子和编辑单子都放在单子列表的页面里面,导致了打开列表的时候就加载全部的控件。

设想的解决方法,一是换别的控件,比如 jquery.ui.datepicker 。但这个控件没有选择时间的功能,老外似乎做了一个加上时间选择的版本。二是用 iframe 内嵌页面来加载,这个还没试,不知道在IE上面延迟加载会不会一样卡。