安装完成ffmpeg后,就可以使用ffmpeg进行音频文件格式转换。比如 /ffmpeg -i /media/1mp3 /media/1wav, 通过该命令行可以将/media文件夹下1mp3文件转换成WAV格式的。
但是反过来 /ffmpeg -i /media/1WAV /media/1MP3 却不能转换成Mp3格式,提示如下错误(找不到编码器):
Stream mapping:
Stream #0:0 -> #0:0 (wav -> )
Encoder (codec none) not found for output stream #0:0
如果强行指定编码器 /ffmpeg -i /media/1wav -acodec mp3 /media/1mp3, 仍提示找不到编码器错误:
Unknown encoder 'mp3'
这是因为,ffmpeg虽然是个开源软件,但因为具体格式的版权原因,它并没有包含所有的编解码格式,或者有个格式只有对应的解码器,但没有编码器,比如 Mp3就只有解码器,能播放Mp3文件,但却没有Mp3的编码器,无法将其它格式转换成Mp3。可以通过命令行 /ffmpeg -codecs 查询编解码配置,第一个D表示Decoder,该格式能够解码;E表示Encoder,该格式可以编码。从中可以看出Mp3不能编码,Mp2倒是即可解码 也可编码。如何解决这个问题呢?
D A D mp1 MP1 (MPEG audio layer 1)
D A D mp1float MP1 (MPEG audio layer 1)
DEA D mp2 MP2 (MPEG audio layer 2)
D A D mp2float MP2 (MPEG audio layer 2)
D A D mp3 MP3 (MPEG audio layer 3)
D A D mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A D mp3adufloat ADU (Application Data Unit) MP3 (MPEG audio layer 3)
我的第一个方法是自己写代码来完成。源码文件中,Allcodecsc中对各个格式进行注册,先修改Mp3的注册行,改为同时注册解码器和编码器:
REGISTER_ENCDEC (MP2, mp2);
REGISTER_DECODER (MP2FLOAT, mp2float);
REGISTER_DECODER (MP3, mp3) // 此行修改为 REGISTER_ENCDEC (MP3, mp3)
然后新增Mp3编码器的实现Struct,里面Init函数、encode函数、close函数使用Mp2的函数,因为我也不知道如何去实现Mp3的函数,或者说到代码实现级我也不知道Mp3和Mp2的区别在哪。
AVCodec ff_mp3_encoder = {
name = "mp3",
type = AVMEDIA_TYPE_AUDIO,
id = CODEC_ID_MP3,
priv_data_size = sizeof(MpegAudioContext),
init = MPA_encode_init,
encode = MPA_encode_frame,
close = MPA_encode_close,
sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
supported_samplerates= (const int[]){44100, 48000, 32000, 22050, 24000, 16000, 0},
long_name = NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
defaults = mp3_defaults,
};
重新编译上线。 用命令行/ffmpeg -i /media/1WAV /media/1MP3 试了一下,能成功生成1mp3文件,文件也能播放。似乎没有问题了,单用 file /media/1mp3 查看了一下,发现文件不是Mp3格式的,而是Mp2格式的:
/media/1mp3: MPEG ADTS, layer II, v1, 128 kbps, 441 kHz, Stereo
很遗憾,自行修改代码的方式行不通,因为不是每个编解码格式协议的专家,自行修改代码失败的风险很大,不仅是Mp3,还有一些其他格式比如AMR OGG H263是没有编码器的。所以,第二个方案,使用成熟的第三方编码器和ffmpeg结合。
Mp3比较好的开源第三方库是libmp3lame(简称Lame)。我下了一个最新版本(3994)的Lame源码,编译它:
首先配置: /configure --prefix=/shared --enable-shared --enable-static
然后编译: make
make install
生成文件: 动态链接库 /shared/lib/libmp3lameso 和 静态链接库 /shared/lib/libmp3lamea。这里只需要使用动态链接库,将so文件拷贝到/lib中,这个文件夹是动态链接库的默认搜索路径, 让ffmpeg运行时可以找到。
然后对ffmpeg配置libmp3lame: /configure --enable-libmp3lame
重新编译ffmpeg,运行转化命令,看看效果如何。
首先执行 /ffmpeg -codecs 查看可用编解码的变化,可以看到多出了libmp3lame编码器,带E的:
D V D lagarith Lagarith lossless
EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)
EV ljpeg Lossless JPEG
D V D loco LOCO
然后执行 /ffmpeg -i /media/1WAV /media/1MP3, 生成1mp3,用File命令查看,确实是Mp3文件。
/media/1mp3: Audio file with ID3 version 240, contains: MPEG ADTS, layer III, v1, 128 kbps, 441 kHz, Stereo
大功告成,问题解决。
也可在命令行中指定编解码生成Mp3文件:/ffmpeg -i /media/1WAV -acodec libmp3lame /media/1MP3
这是脚本。。。。
先是判断~/euca/mykeypriv 这个文件存不存在,
不存在 就建一个目录 ~/euca
然后建一个文件 ~/euca/mykeypriv
euca-add-keypair mykey > ~/euca/mykeypriv
这个应该是使用这个文件,具体就搞不清楚了
不知道你问的什么意思,mysql中用户的权如下:
Select_priv。确定用户是否可以通过SELECT命令选择数据。
Insert_priv。确定用户是否可以通过INSERT命令插入数据。
Update_priv。确定用户是否可以通过UPDATE命令修改现有数据。
Delete_priv。确定用户是否可以通过DELETE命令删除现有数据。
Create_priv。确定用户是否可以创建新的数据库和表。
Drop_priv。确定用户是否可以删除现有数据库和表。
Reload_priv。确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表。
Shutdown_priv。确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎。
Process_priv。确定用户是否可以通过SHOW
PROCESSLIST命令查看其他用户的进程。
File_priv。确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA
INFILE命令。
Grant_priv。确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。
References_priv。目前只是某些未来功能的占位符;现在没有作用。
Index_priv。确定用户是否可以创建和删除表索引。
Alter_priv。确定用户是否可以重命名和修改表结构。
Show_db_priv。确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因。
Super_priv。确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET
GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令。
Create_tmp_table_priv。确定用户是否可以创建临时表。
Lock_tables_priv。确定用户是否可以使用LOCK
TABLES命令阻止对表的访问/修改。
Execute_priv。确定用户是否可以执行存储过程。此权限只在MySQL
50及更高版本中有意义。
Repl_slave_priv。确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信。
Repl_client_priv。确定用户是否可以确定复制从服务器和主服务器的位置。
Create_view_priv。确定用户是否可以创建视图。此权限只在MySQL
50及更高版本中有意义。关于视图的更多信息,参见第34章。
Show_view_priv。确定用户是否可以查看视图或了解视图如何执行。此权限只在MySQL
50及更高版本中有意义。关于视图的更多信息,参见第34章。
Create_routine_priv。确定用户是否可以更改或放弃存储过程和函数。此权限是在MySQL
50中引入的。
Alter_routine_priv。确定用户是否可以修改或删除存储函数及函数。此权限是在MySQL
50中引入的。
Create_user_priv。确定用户是否可以执行CREATE
USER命令,这个命令用于创建新的MySQL账户。
Event_priv。确定用户能否创建、修改和删除事件。这个权限是MySQL
516新增的。
Trigger_priv。确定用户能否创建和删除触发器,这个权限是MySQL 516新增的。
给你找了点相关的解答,希望有帮助吧~
服务器正常运行CUP一般应该都在60%以下,有时候CUP出现上下波动很大,或者是服务器突然很卡,或很慢查看任务管理器,可以发现很多的w3wpexe消耗CPU,结束后立即有新的w3wpexe出现占CPU,管管理员在这种情况只好重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。
直接原因:
有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在w3wpexe中。
解决办法:1
在iis管理器里面设置多个应用程序池, 并把虚拟主机站点分别加入应用程序池。在多应用程序池的情况下,每个应用程序池会对应生成一个w3wpexe文件。通过任务管理器可以查看到所有w3wpexe占用cpu利用率情况。 通过iis管理器打开应用程序池,可以逐个停掉应用程序池。一边停应用程序池,一边在任务管理器里面观察哪个w3wpexe的cpu利用率一下子从降下来,cpu利用率恢复正常。这样可以判断是那个应用程序池出了问题。然后可以再建立多个应用程序池,每一个应用程序池对应一个站点。这样逐个停应用程序池,就可以确定到底是哪个网站出问题。最有问题的往往是计数器类的ACCESS文件,例如:“COUNTMDB” ,“COUNTASP”,找到这个文件后,可以删除它,或下载下来,用ACCESS2000修复它,问题就解决。
解决办法:2
w3wpexe占用cpu过高查询方法,很多web提供商最头疼的问题,在任务管理器经常出现w3wpexe占cup过高,导致整台服务器受影响解决办法如下:
1先把任务管理器打开,发现那个w3wpexe占cup关高就结束进程
2在我的电脑-管理-事件查看器-系统-会找到关w3wpexe的错误报告,把程序池名字记录下,再把具体时间记录下来(如125956)
3在到系统上面的安全性找到对应时间(如125956)登陆过的用户
4打开iis找到2中查询到的程序池,和3查询到登陆过的用户,取交集,即可精确查到是那个web占点站cup
在某台DB上准备运行一个SQL语句,就是用SELECT INTO OUTFILE把查询结果写入到文件的时候提示以下信息:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
出现这个问题的原因是因为启动MySQL的时候使用了--secure-file-priv这个参数,这个参数的主要目的就是限制LOAD DATA INFILE或者SELECT INTO OUTFILE之类文件的目录位置,我们可以使用
SELECT @@globalsecure_file_priv;
查询到你当前设置的路径,默认应该是/var/lib/mysql-files
如果要解决这个问题,我们可以通过下面2种方式:
将你要导入或导出的文件位置指定到你设置的路径里
由于不能动态修改,我们可以修改mycnf里关于这个选项的配置,然后重启即可。
欢迎分享,转载请注明来源:品搜搜测评网