flv视频转换和flash播放的解决方案

本文介绍如何使用mencoder将视频转换为FLV格式,以及使用ffmpeg进行截图的方法。同时,文章还提供了生成Flash视频播放器的相关信息,并讨论了视频压缩及播放的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原贴:http://www.linuxrpm.com/forums/viewtopic.php?f=8&t=222

flv视频转换和flash播放的解决方案


youtube火起来以后,国内外跟进的一大把,不过技术和流程上没有任何突破,基本上就是服务器自动对用户上传的视频进行压缩,压成可以用flash在 线播放的flv,缩小尺寸并降低码率。然后再用Flash制作一个播放器,可以根据参数在线播放指定的flv视频,当然有些还会加上水印和跳自己网站等功 能。

转换工具可以选择ffmpeg和mencoder,这2个都是gnu项目,并且可以非常完美的在linux/Mac/Win32等平台下使用。不 过ffmpeg支持的视频格式较少(不能很方便的支持rmvb,mov等,不过据说Google Video用的是这个),而mencoder则不能进行截图,所以可以考虑2者结合使用,mencoder负责转换,ffmpeg负责截图。

关于下载和安装,ffmpeg烦一点,官方网站上只提供了svn,需要自己编译。具体可以参考这篇文章,Windows还需要装MinGW来MSYS模拟linux环境,偷懒的话可以直接找个编译好的版本,不过功能可能会不全。

mencoder则很简单,本来就是mplayer的一部分,会装mplayer就成。注意把codecs都装全了


首先通过mencoder把普通视频转化为flv格式,命令如下


代码: 全选
mencoder test.avi -o test.flv -of lavf -oac mp3lame -lameopts abr:br=32:mode=3 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -vf scale=350:-3 -sws 2



mencoder 的参数超级复杂,视音频压缩本身又是一门非常高深的学问,本人略知皮毛,下面只对自己了解的一些参数做些说明,详细解释请看手册

引用
test.avi
输入文件路径,是Mplayer能支持的格式即可

-o test.flv
输出路径

-of lavf
输出格式 lavf表示libavcodec

-oac mp3lame
输出音频编码方式,lame是最好的mp3编码器

-lameopts abr:br=32:mode=3
lame的选项
abr代表平均码率,相对于cbr(固定码率)和vbr(可变码率,貌似不支持)
br就是音频的码率,越高音质越好
mode=3,0-3分别代表Stereo,Joint Stereo,Force ms_stereo,Mono(默认为自动,事实上1和3对文件大小的影响并不是很大)
另外可选的还有 vol(音量,取值0-10,数值越大音量越大,不建议修改)等

-srate 22050
声音采样频率设置,也可以选11025,文件可以稍小一点

-ovc lavc
输出视频编码 lavc就是libavcodec

-lavcopts
lavc的的选项
codec=flv flv格式压缩
vbitrate=150 视频码率
其他几个选项一概不懂,请看手册(一般来说看了还是不懂)

-vf scale=350:-3 -sws 2
缩放视频,指定宽度为350,高度按比例来。质量由-sws选项控制,具体看手册

-ofps 23 设定帧数,缩小帧数对节约文件大小效果不明显,且可能造成画面声音同步。建议不设置


mencoder压缩后生成的flv缺少meta信息,会造成播放时没有进度条等问题,需要再用flvmdi修复一下

代码: 全选
flvmdi test.flv



生成后的flv通过[url=http://www.stormplayer.org]MPC[url]就可以预览。

ffmpeg截图

代码: 全选
ffmpeg -i test.flv -ss 10 -vframes 1 -r 1 -ac 1 -ab 2 -s 320×240 -f image2 test.jpg


-ss 10 就是说1秒后的那一帧

然后生成flash视频播放器的话,网上例子很多,自己对Flash研究也不深,也就不多说了,要自定义播放器界面的参考这里

唯一需要补充一下的是视频的smoothing属性,现在的在线播放器尺寸一般都回比实际压缩后的视频尺寸大一些,smoothing=true可以保证放大的质量(包括全屏后的),具体的文章见这里。


很长时间没在技术方面做些研究了,难得在晚上可以清静些。我所了解的内容都已列出,也不会再作进一步研究,所以其他的问题就不要问我了,Google一下会比问我更有效率。 
资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距填充,对 html body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值