zoukankan      html  css  js  c++  java
  • Html 5 video/audio 格式转换 ogg

    Html5 开始支持video和audio标签,但是各个浏览器支持的格式不一样,见下图

    Codec support in modern desktop browsers
    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:\Users\Administrator>ffmpeg2theora-0.27.exe -o G:\Users\Administrator\Desktop\simplehtmldom_1_
    11\simplehtmldom\test.ogg G:\Users\Administrator\Desktop\simplehtmldom_1_11\simp
    lehtmldom\026d9859-dea9-4e4f-9c60-6545e51bf547.wav

    Html示例

    
    
    
     
  • 相关阅读:
    攻防世界wp--web robots
    kubernetes二: kubernetes 重要组件安装和集群管理
    kibana配置页面跳转
    二进制安装的k8s添加新的node节点
    分布式和微服务的区别
    kubernetes一: 二进制安装k8s集群
    kibana导入导出dashborad
    elk 创建一个只读用户
    x-pack模式下修改es集群密码
    docker基础命令
  • 原文地址:https://www.cnblogs.com/xiaoqi/p/1918906.html
Copyright © 2011-2022 走看看