分类: C#|DOTNET
发布: yaosansi
浏览:
日期: 2008年4月30日
Working with non-nullable types in C# can be a bit of a pain. For instance when I have a date as a string and need to parse it into a DateTime what should the value be if the parse fails? I can’t use null because DateTime is not a nullable type.
This is exactly the dilema I encountered today. No worries, I’ll use DateTime.MinValue that way it is constant and I don’t have to worry about being consistent if I had chosen an arbitrary value of my own.
Well as it turns out I did have some worries. Sql Server 2000’s minimum DateTime value is not the same, in fact it is quite different. This kept causing errors.
For your reference here are some values you should take note of.
分类: WebSite
发布: yaosansi
浏览:
日期: 2008年4月25日
Internet Information Services 7.0
Error Summary HTTP Error 404.11 - Not Found The request filtering module is configured to deny a request that contains a double escape sequence. Detailed Error Information Module RequestFilteringModule Notification BeginRequest Handler StaticFile Error Code 0x00000000
Requested URL http://www.yaosansi.com/kpiwORZR+QVEIJjeRcST5g== Physical Path Z:\yaosansi.com Logon Method Not yet determined Logon User Not yet determined
Most likely causes: The request contained a double escape sequence and request filtering is configured on the Web server to deny double escape sequences. Things you can try: Verify the configuration/system.webServer/security/requestFiltering@allowDoubleEscaping setting in the applicationhost.config or web.confg file.
Links and More Information This is a security feature. Do not change this feature unless the scope of the change is fully understood. You should take a network trace before changing this value to confirm that the request is not malicious. If double escape sequences are allowed by the server, modify the configuration/system.webServer/security/requestFiltering@allowDoubleEscaping setting. This could be caused by a malformed URL sent to the server by a malicious user.
在使用IIS7.0过程中发现如上错误,查了一下资料,说IIS7.0拒绝+号.
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
经过一次不痛快的和他人合作之后,我写了这段shell脚本,主要用于视频文件的转换队列处理,和视频大文件的截取.涉及到诸如3gp,asf,wmv,avi,mp4,mpeg,mov,vob,rm,rmvb等格式的转换成flv,同时分段截取各种格式的大文件.主要采用的工具无非就是开源的ffmpeg ,mencoder ,MediaInfo ,前两者转换和截取,后者获取视频元数据.多谢sleetdrop 推荐. 对于视频文件的元数据而言,是否都存在都柏林元数据,特征元数据是否值得信赖是一个问题,因此在脚本中做了一些信任机制的处理,脚本写的很清晰,应该不是太难懂,而且里面都做了撇脚的英文注释.已经通过功能测试,至于压力测试,正在进行中.不过对于脚本运行环境,是在ffmpeg+mencoder环境下运行的,对于怎样搭建ffmpeg+mencoder ,可以参考这篇文章 . 可能会要应用于实际比较恶劣的情况中,因此还需要对代码进行改进,甚至可能要用到shc ,日志功能和错误处理功能还要加强,还有就是根据不同格式和不同质量的视频文件,采用不同的方法进行转换也是在下一步策划之中.如果大家有什么更好的方法,或者对此进行了改进,请共享出来吧.
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
截取一张352x240尺寸大小的,格式为jpg的图片:
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
把视频的前30帧转换成一个Animated Gif :
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
目前还没有找到截取任意一帧为图片的方法。
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
今天利用FFmpeg -h > ffmpeg.txt,把FFmpeg的命令打印出来后,才发现了这一参数:
-ss time_off set the start time offset
使用-ss参数,可以从指定的时间开始处理转换任务.如:
ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg
那么从任意一帧截图的问题也就解决了.只要-ss后的时间参数是随机产生,并且在视频的有效时间内,就可以了.
另外,-ss后跟的时间单位为秒。
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
先从ffmpeg开始。 http://ffmpeg.sourceforge.net 上有说明,音视频的分离,转换,解码的完全解决方案。 其中最重要的就是libavcodec库。它被mplayer或者xine使用作为解码器。还有,国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也是使用ffmpeg的解码库的。 ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。 ffmpeg作为媒体文件处理软件,基本用法如下: ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile 输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件,纯粹的视频文件,或者混合的。 大部分常见的格式都能够“通杀”。象常见的各种mpeg,AVI封装的DIVX和Xvid等等 具体的格式支持列表可以使用ffmpeg -formats查看或直接查阅文档。
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
有很多软件能够截取影片图像、合并图像,但如果影片太多,比如视频网站为用户上传的图像生成预览图之类的,人工在gui方式下操作就不可取了,我们需要在命令行方式下来截取、合并。
首先,截取影片图像使用最多的就是mplayer或者ffmpeg,我用mplayer比较熟,本文就以此为例了,ffmpeg功能也是非常强大的,但据说支持的文件格式却不丰富。mplayer截取影片图像的基本命令为:
mplayer -ss START_TIME -noframedrop -nosound -vo jpeg -frames N NAME_OF_VIDEO_FILE
上例中,-ss指定开始的时间,结合-frames参数,限定从某个时间开始、截取几帧图像。为了体现整个影片的内容,我需要在影片中间隔时间相同的几个点、每个点截取1帧图像,所以按道理应该用-frames 1,但是mplayer这样截图的情况下,第一帧似乎永远都会截取到一个黑屏,所以我常用-frames 2。截取下来的图像保存在了当前目录,名称从00000001.jpg开始依次递增,按照-frames 2,就是取00000002.jpg为结果,删除00000001.jpg即可。经过简单实验,在截取wmv、rmvb影片时,前面的好几帧都会是黑屏,也只能参考上面的做法多取几帧了。
为了取影片中间隔大致相同的几个点,可以用-ss指定时间,也可以用-sb指定开始字节,在我的实际使用中,使用-sb只会得到黑屏,所以通过文件大小来设置间隔点的办法不行,只能用-ss时间间隔了,这就需要首先得到影片的总时间。好在mplayer为我们提供了类似的功能:
mplayer -identify movie-filename -nosound -vc dummy -vo null
分类: C#|DOTNET
发布: yaosansi
浏览:
日期: 2008年4月22日
前公司在制作播客系统(Web程序)中,用到从视频截图功能.
下边是截图CatchImg方法,可从大多数的视频文件中截图成功,大家可测试; 如果截图不成功,大多是因为视频本身的问题,如编码标准或加了密. 但从在线录制的视频Flv文件中截图,还未发现截图失败;
/// <summary> /// @从视频文件截图,生成在视频文件所在文件夹 /// 在Web.Config 中需要两个前置配置项: /// 1.ffmpeg.exe文件的路径 /// <add key="ffmpeg" value="E:\ffmpeg\ffmpeg.exe" /> /// 2.截图的尺寸大小 /// <add key="CatchFlvImgSize" value="240x180" /> /// 3.视频处理程序ffmpeg.exe
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
ffmpeg+mencoder几乎可以完成目前基于web的播客平台任何音视频处理的操作.如果还需要添加一些什么的话,那么就是视频在线录制功能了,这个也可以用ffmpeg+fms来完成,因此一般的类似于YouTube的一些可见功能都可以在ffmpeg+mencoder+fms来做后台实现.由于fms没有实践,因此这里不描述. 本文档有三部分: 1)ffmpeg+mencoder环境搭建 2)常见操作说明 3)个人的一些使用心得 1.ffmpeg+mencoder环境搭建 1)概论 音视频界众多的编解码协议和各个公司定义的专用格式导致目前的视频音频文件纷繁复杂,单纯的ffmpeg支持的格式并不完全包括所有种类,至少swf,rmvb(rv4)目前的版本是不支持的.同时wma9似乎可以支持了.但没有测试.同时mencoder能支持rm,rmvb等格式,但是从视频中获取某帧截图的工作只能由ffmpeg完成.因此可以采用ffmpeg+mencoder完成目前所有流行格式的视频压缩转换,设置视频信息,截取视频中的图片等功能了,同时,采用其他的一些开源工具如MediaInfo可以获取视频的元数据信息.
分类: Video
发布: yaosansi
浏览:
日期: 2008年4月22日
下载电影的时候,我们总希望在全部下载完成之前能够预览一下影片内容,于是发布者时常会放一些影片截图在种子文件中,或者直接贴到网上,也有一些截图是一张图片,但包含很多幅影片在一起,就像下面这张: 有很多软件能够截取影片图像、合并图像,但如果影片太多,比如视频网站为用户上传的图像生成预览图之类的,人工在gui方式下操作就不可取了,我们需要在命令行方式下来截取、合并。
首先,截取影片图像使用最多的就是mplayer或者ffmpeg,我用mplayer比较熟,本文就以此为例了,ffmpeg功能也是非常强大的,但据说支持的文件格式却不丰富。mplayer截取影片图像的基本命令为:
mplayer -ss START_TIME -noframedrop -nosound -vo jpeg -frames N NAME_OF_VIDEO_FILE 上例中,-ss指定开始的时间,结合-frames参数,限定从某个时间开始、截取几帧图像。为了体现整个影片的内容,我需要在影片中间隔时间相同 的几个点、每个点截取1帧图像,所以按道理应该用-frames 1,但是mplayer这样截图的情况下,第一帧似乎永远都会截取到一个黑屏,所以我常用-frames 2。截取下来的图像保存在了当前目录,名称从00000001.jpg开始依次递增,按照-frames 2,就是取00000002.jpg为结果,删除00000001.jpg即可。经过简单实验,在截取wmv、rmvb影片时,前面的好几帧都会是黑屏, 也只能参考上面的做法多取几帧了。
为了取影片中间隔大致相同的几个点,可以用-ss指定时间,也可以用-sb指定开始字节,在我的实际使用中,使用-sb只会得到黑屏,所以通过文件 大小来设置间隔点的办法不行,只能用-ss时间间隔了,这就需要首先得到影片的总时间。好在mplayer为我们提供了类似的功能:
分类: ASP.NET
发布: yaosansi
浏览:
日期: 2008年4月22日
首先,我们部署一下文件夹.在工程的目录下新建几个文件夹如下: Upfiles,ffmpeg,Imgfile, mencoder,playfiles
将视频文件转换成.flv格式UpFiles文件夹是要保存你上传的文件,PlayFiles文件夹是用于你转换后保存的文件(用于网上播放) ImgFile文件夹是保存截取视频文件的图片,然后那两个mencoder和ffmpeg文件夹是视频转换工具.此视频转换也 可叫做mencoder+ffmpeg视频转换.
首先,在配置文件中给这些文件夹进行路径的配置.如下 〈appSettings〉 〈!--工具文件夹--〉 〈add key=“ffmpeg“ value=“ffmpeg/ffmpeg.exe“/〉 〈add key=“mencoder“ value=“mencoder/mencoder.exe“/〉 〈add key=“mplayer“ value=“mencoder/mplayer.exe“/〉 〈!--上传文件的路径--〉 〈add key=“upfile“ value=“UpFiles“/〉 〈!--上专文件图片路径--〉 〈add key=“imgfile“ value=“ImgFile“/〉 〈!--上传文件图片大小--〉 〈add key=“CatchFlvImgSize“ value=“240x180“/〉 〈add key=“widthSize“ value=“400“/〉 〈add key=“heightSize“ value=“350“/〉 〈!--转换后文件路径--〉 〈add key=“playfile“ value=“PlayFiles“/〉 〈/appSettings〉在上传.ASPX页面中