[NUUG video] Snøggare videokomprimering

Odin Omdal Hørthe odin.omdal at gmail.com
Wed Apr 28 12:27:40 CEST 2010


Hei!

Eg hev kaupt meg ny, dritgamal PC (Lenovo X60s frå 2006).
ffmpeg2theora maxa ut CPU-en slik at eg måtte laaangt ned i kvalitet
fyrr ting fungerte. Men denne pcen er ein core2duo, so han hev tvo
prosessorar. So eg byrja leita etter ein måte å gjera dei forskjellege
stega i trådar (t.d. skalering i ein og komprimering i ein annan).

Eg fann fort ut at her måtte me gå attende til Gstreamer i staden for
ffmpeg2theora, men det heile var ganske yverraskande til slutt, for
med same kvalitet so tek Gstreamer ein god del mindre CPU for å gjera
nett det same. I frå ~80% cpu-bruk til ~60%.

So ikkje berre er gstreamer ein mester i å tråda ting, men han gjer
videostreaming raskare enn ffmpeg2theora+oggfwd. Kannhenda noko å byta
ut i uppsettet vårt?

Her er skriptet eg hev skrive nett no for å gjera sjølve streamingi
(basert på eit for HDV som eg fekk frå xiphmont, byt ut dvgrab med
dvsink-command når det ikkje er testing sjølvsagt ;-)  ):



#!/bin/sh

dvgrab - | gst-launch-0.10 \
        fdsrc \
                ! queue \
                ! dvdemux name=demux \
        demux. \
                ! queue \
                ! dvdec quality=5 \
                ! video/x-raw-yuv \
                ! ffvideoscale \
                ! video/x-raw-yuv,width=512,height=288,pixel-aspect-ratio=1/1 \
                ! tee name=preview \
                ! ffmpegcolorspace \
                ! queue \
                ! theoraenc bitrate=300 keyframe-force=64 \
                ! queue \
                ! mux. \
        demux. \
                ! queue \
                ! decodebin2 \
                ! audioconvert \
                ! audioresample \
                ! audio/x-raw-float,channels=1,rate=16000 \
                ! queue \
                ! vorbisenc max-bitrate=36864 \
                ! queue \
                ! mux. \
        preview. \
                ! queue \
                ! xvimagesink sync="false" \
        oggmux name=mux \
                ! queue \
                ! progressreport \
                ! shout2send ip=server \
                port=8000 password=pass mount=/stream.ogv




-- 
Beste helsing,
Odin Hørthe Omdal <odin.omdal at gmail.com>
http://velmont.no


More information about the video mailing list