Html 5 video/audio 格式转换 ogg
Html5 开始支持video和audio标签,但是各个浏览器支持的格式不一样,见下图
Browser |
Ogg Vorbis |
MP3 |
WAV |
---|---|---|---|
FireFox 3.6+ |
✓ |
✓ |
|
Safari 5+ |
✓ |
✓ |
|
Chrome 6 |
✓ |
✓ |
|
Opera 10.5+ |
✓ |
✓ |
|
Internet Explorer 9 (beta) |
✓ |
✓ |
因此,要想全面兼容,至少需要提供两种格式,由于wav文件体积太庞大,因此我们提供MP3和ogg
MP3转换很容易,下面简单说下ogg
Ogg全称应该是OGGVobis(oggVorbis)是一种新的音频压缩格式,类似于MP3等的音乐格式。Ogg是完全免费、开放和没有专利限制的。OggVorbis文件的扩展名是.OGG。Ogg文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器。
ogg编码转换有个开源项目可以通过ffmpeg2theor(http://v2v.cc/~j/ffmpeg2theora/index.html)来实现:
ffmpeg2theora 编码器,可以将任何格式的影音媒体档案,转换成 ogg 档案。作者以传统的 C 语言编写这套软件,主要是利用大量的数据结构和指标来编写程式,由于这个编码器是采用命令列的操作模式,对于不熟悉命令列接口的人来说较为不便。
下面是 ffmpeg2theora 的使用说明:
ffmpeg2theora 0.27 - Xiph.Org libtheora 1.1 20090822 (Thusnelda)
Usage: ffmpeg2theora [options] input
General output options: -o, --output alternative output filename --no-skeleton disables ogg skeleton metadata output --skeleton-3 outputs Skeleton Version 3, without keyframe indexes -s, --starttime start encoding at this time (in sec.) -e, --endtime end encoding at this time (in sec.) -p, --preset encode file with preset. Right now there is preview, pro and videobin. Run 'ffmpeg2theora -p info' for more informations
Video output options: -v, --videoquality [0 to 10] encoding quality for video (default: 6) use higher values for better quality -V, --videobitrate encoding bitrate for video (kb/s) --soft-target Use a large reservoir and treat the rate as a soft target; rate control is less strict but resulting quality is usually higher/smoother overall. Soft target also allows an optional -v setting to specify a minimum allowed quality.
--two-pass Compress input using two-pass rate control This option requires that the input to the to the encoder is seekable and performs both passes automatically.
--first-pass <filename> Perform first-pass of a two-pass rate controlled encoding, saving pass data to <filename> for a later second pass
--second-pass <filename> Perform second-pass of a two-pass rate controlled encoding, reading first-pass data from <filename>. The first pass data must come from a first encoding pass using identical input video to work properly.
--optimize optimize video output filesize (slower) (same as speedlevel 0) --speedlevel encoding is faster with higher values the cost is quality and bandwidth - 0: Slowest (best) - 1: Enable early skip (default) - 2: Disable motion compensation -x, --width scale to given width (in pixels) -y, --height scale to given height (in pixels) --max_size scale output frame to be within box of given size, height optional (%d[x%d], i.e. 640x480) --aspect define frame aspect ratio: i.e. 4:3 or 16:9 --pixel-aspect define pixel aspect ratio: i.e. 1:1 or 4:3, overwrites frame aspect ratio -F, --framerate output framerate e.g 25:2 or 16 --croptop, --cropbottom, --cropleft, --cropright crop input by given pixels before resizing -K, --keyint [1 to 2147483647] keyframe interval (default: 64) -d --buf-delay <n> Buffer delay (in frames). Longer delays allow smoother rate adaptation and provide better overall quality, but require more client side buffering and add latency. The default value is the keyframe interval for one-pass encoding (or somewhat larger if --soft-target is used) and infinite for two-pass encoding. (only works in bitrate mode) --no-upscaling only scale video or resample audio if input is bigger than provided parameters
Video transfer options: --pp Video Postprocessing, denoise, deblock, deinterlacer use --pp help for a list of available filters. -C, --contrast [0.1 to 10.0] contrast correction (default: 1.0) Note: lower values make the video darker. -B, --brightness [-1.0 to 1.0] brightness correction (default: 0.0) Note: lower values make the video darker. -G, --gamma [0.1 to 10.0] gamma correction (default: 1.0) Note: lower values make the video darker. -Z, --saturation [0.1 to 10.0] saturation correction (default: 1.0) Note: lower values make the video grey.
Audio output options: -a, --audioquality [-2 to 10] encoding quality for audio (default: 1) use higher values for better quality -A, --audiobitrate [32 to 500] encoding bitrate for audio (kb/s) -c, --channels set number of output channels -H, --samplerate set output samplerate (in Hz) --noaudio disable audio from input --novideo disable video from input
Input options: --deinterlace force deinterlace, otherwise only material marked as interlaced will be deinterlaced -f, --format specify input format --inputfps fps override input fps --audiostream id by default the first audio stream is selected, use this to select another audio stream --videostream id by default the first video stream is selected, use this to select another video stream --nosync do not use A/V sync from input container. try this if you have issues with A/V sync Subtitles options: --subtitles file use subtitles from the given file (SubRip (.srt) format) --subtitles-encoding encoding set encoding of the subtitles file supported are utf-8, utf8, iso-8859-1, latin1 --subtitles-language language set subtitles language (de, en_GB, etc) --subtitles-category category set subtitles category (default "subtitles") --subtitles-ignore-non-utf8 ignores any non UTF-8 sequence in UTF-8 text --nosubtitles disables subtitles from input (equivalent to --subtitles=none) --subtitle-types=[all,text,spu,none] select what subtitle types to include from the input video (default text)
Metadata options: --artist Name of artist (director) --title Title --date Date --location Location --organization Name of organization (studio) --copyright Copyright --license License --contact Contact link --nometadata disables metadata from input --no-oshash do not include oshash of source file(SOURCE_OSHASH)
Keyframe indexing options: --index-interval <n> set minimum distance between indexed keyframes to <n> ms (default: 2000) --theora-index-reserve <n> reserve <n> bytes for theora keyframe index --vorbis-index-reserve <n> reserve <n> bytes for vorbis keyframe index --kate-index-reserve <n> reserve <n> bytes for kate keyframe index
Other options: -P, --pid fname write the process' id to a file -h, --help this message --info output json info about input file, use -o to save json to file --frontend print status information in json, one json dict per line
Examples: ffmpeg2theora videoclip.avi (will write output to videoclip.ogv)
ffmpeg2theora videoclip.avi --subtitles subtitles.srt (same, with subtitles)
cat something.dv | ffmpeg2theora -f dv -o output.ogv -
Encode a series of images: ffmpeg2theora frame%06d.png -o output.ogv
Live streaming from V4L Device: ffmpeg2theora /dev/video0 -f video4linux --inputfps 15 -x 160 -y 128 -o - | oggfwd icast2server 8000 password /theora.ogv (you might have to use video4linux2 depending on your hardware)
Live encoding from a DV camcorder (needs a fast machine): dvgrab - | ffmpeg2theora -f dv -x 352 -y 288 -o output.ogv -
Live encoding and streaming to icecast server: dvgrab --format raw - | ffmpeg2theora -f dv -x 160 -y 128 -o /dev/stdout - | oggfwd icast2server 8000 password /theora.ogv
示例:
G:UsersAdministrator>ffmpeg2theora-0.27.exe -o G:UsersAdministratorDesktopsimplehtmldom_1_ 11simplehtmldomtest.ogg G:UsersAdministratorDesktopsimplehtmldom_1_11simp lehtmldom 26d9859-dea9-4e4f-9c60-6545e51bf547.wav
Html示例
Your browser does not support the video element.
- 5.7 vim实践
- Effective Modern C++翻译(7)-条款6:当auto推导出意外的类型时,使用显式的类型初始化语义
- 2.3 ls命令
- Effective Modern C++翻译(6)-条款5:auto比显示的类型声明要更好
- 大白话-prototype属性
- Effective Modern C++翻译(5)-条款4:了解如何观察推导出的类型
- Effective Modern C++翻译(4)-条款3:了解decltype
- 大白话-constructor
- Effective Modern C++翻译(3)-条款2:明白auto类型推导
- React Native在Android平台运行gif的解决方法
- Effective Modern C++翻译(2)-条款1:明白模板类型推导
- Android ormLite复杂条件查询
- Effective Modern C++翻译(1):序言
- C++操作mysql方法总结(2)
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- 一款基于 Python 语言的 Linux 资源监视器!
- 我讨厌这个绿油油的头像!我用opencv换一下背景
- 哈哈哈哈哈哈镜~
- 【对二寸照片的摧残】一:人脸马赛克
- 二寸照片识别/切边/矫正
- 给彦女王生成一副蒙太奇画像
- 设计模式~单例模式
- [Bazel]自定义工具链
- async和await的使用总结 ~ 竟然一直用错了c#中的async和await的使用。。
- 全网首发:12306抢票算法大曝光?(十张图搞定)
- 全网首发:12306抢票算法大曝光?(勘误)
- 新一代垃圾回收器ZGC的探索与实践
- Python GUI项目实战(一)登录窗体的设计与实现
- Python GUI项目实战(二)主窗体的界面设计与实现
- Python GUI项目实战(三)实现信息查询功能