[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