FFmpeg

Allikas: Kuutõrvaja

Sissejuhatus

*** THIS PROGRAM IS DEPRECATED ***

This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

logo

Tuleb..

Debianis käib paigaldus järnevalt

# apt-get install libav-tools

Kasutamine

http://www.ffmpeg.org/

Süntaks

ffmpeg input_filename.mpg
-ovc codec for video output
-oac codec for audio output
-o output_filename.avi

ffmpegi toetatud formaate saab vaadata käsurealt, vastavalt:

$ ffmpeg -codecs
$ ffmpeg -formats

Videokohta infot saab

$ ffmpeg -i video.avi

Muudame aktiivses kataloogis olevad jpg failid mpg failiks. Selleks nimetame oma pildifailid sobilikule kujule:

# x=1; for i in *jpg; do counter=$(printf %03d $x); ln "$i" img"$counter".jpg; x=$(($x+1)); done

Teeme konvertimise

# ffmpeg -qscale 5 -r 20 -b 9600 -i img%03d.jpg /tmp/a2.mpg

Lammutame vastupidi videofaili jpg failideks

$ ffmpeg -i video.mpg image%d.jpg

(This will create 25 images for every 1 second, but it may serve us to have more or less images, this can be achieved with the parameter -r, -r fps Set frame rate [default 25])

Liidame 2 mpg faili kokku

# cat 2012-08-02/a3.mpg 2012-08-03/a4.mpg > a1_all.mpg

Eemaldame videost heli ja salvestame mp3 formaati

$ ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3

Pakime avi faili divx koodekiga

$ ffmpeg -i source_video.avi -s 320x240 -vcodec msmpeg4v2 final_video.avi

Konverdime avi faili mpg formaati

$ ffmpeg -i video_origine.avi video_finale.mpg

Konverdime avi faili dvd mängijatele sobivaks mpeg failiks

$ ffmpeg -i source_video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 finale_video.mpeg

Ffmpeg suudab salvestada X11 pilti

$ ffmpeg -f x11grab -r 24 -s cif -i :0.0 /tmp/out.mpg

0.0 is display.screen number of your X11 server, same as the DISPLAY environment variable.

Kopeeri ainult lõik vieost

$ ffmpeg -vcodec copy -acodec copy -i orginalfile -ss 00:01:30 -t 0:0:20 newfile

Salvesta lõik veebikaamerast

$ ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg

Nii heli kui video salvestamiseks

$ ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg

Soovides DVD vaile backupida kettale varuks

fmpeg -i sisendfail.vob -vcodec libx264 -preset veryfast -tune film -crf 18 \
-acodec ac3 -ab 256k -sn -threads 0 Valjundfail.crf18.mkv

Kodeerime tihendamata kõrgkvaliteedilise video kokku x264 formaati ffmpeg abil

$ ffmpeg -i algfail -vf "crop=1920:816, scale=1280:544" -vcodec libx264 -preset veryfast -tune film -crf 18 \
-acodec ac3 -ab 256k -sn -threads 0 Videofail.crf18.mkv

lõppfailiks Videofail.crf18.mkv

Crop ja scale tuleb iga konkreetse video puhul järgi vaadata. Kui mustad ääred ei häiri siis lihtsalt -vf "scale=1280:720"

Audio 5 kanaliga saamiseks muuta parameetrit -ab 448k

-benchmark perform faster than realtime --crf 20 to enable constant quality mode, --threads auto enables parallel encoding --output output.264 outputs the raw h264/avc bytestream to output.264 (this is the encoded video), -2>x264.log sends the terminal output from x264 to x264.log (you can open another terminal and monitor x264's progress with tail -f x264.log).

One-pass CRF (Constant Rate Factor) using the slow preset. One-pass CRF is good for general encoding and is what I use most often. Adjust -crf to change the quality. Lower numbers mean higher quality and a larger output file size. A sane range is 18 to 28 For more info see x264 --fullhelp | less and man mplayer.

FFmpeg server

Eesmärk, jagada veebikaamera streami võrku

Avame selleks faili ffserver.conf (nt Linuxis /etc/ffserver.conf)

Ja kirjutame sinna järgneva info

 Port 8090 
 # bind to all IPs aliased or not 
 BindAddress 0.0.0.0 
 # max number of simultaneous clients 
 MaxClients 1000 
 # max bandwidth per-client (kb/s) 
 MaxBandwidth 10000 
 # Suppress that if you want to launch ffserver as a daemon. 
 # NoDaemon
 
 <Feed feed1.ffm> 
 File /tmp/feed1.ffm 
 FileMaxSize 5M 
 </Feed> 
 
 # FLV output - good for streaming 
 <Stream test.flv> 
 # the source feed 
 Feed feed1.ffm 
 # the output stream format - FLV = FLash Video 
 Format flv 
 VideoCodec flv 
 # this must match the ffmpeg -r argument 
 VideoFrameRate 15 
 # generally leave this is a large number 
 VideoBufferSize 80000 
 # another quality tweak 
 VideoBitRate 200 
 # quality ranges - 1-31 (1 = best, 31 = worst) 
 VideoQMin 1 
 VideoQMax 5 
 VideoSize 352x288 
 # this sets how many seconds in past to start 
 PreRoll 0 
 # wecams don't have audio 
 Noaudio 
 </Stream> 
 
 # ASF output - for windows media player 
 <Stream test.asf> 
 # the source feed 
 Feed feed1.ffm 
 # the output stream format - ASF 
 Format asf 
 VideoCodec msmpeg4 
 # this must match the ffmpeg -r argument 
 VideoFrameRate 15 
 # generally leave this is a large number 
 VideoBufferSize 80000 
 # another quality tweak 
 VideoBitRate 200 
 # quality ranges - 1-31 (1 = best, 31 = worst) 
 VideoQMin 1 
 VideoQMax 5 
 VideoSize 352x288 
 # this sets how many seconds in past to start 
 PreRoll 0 
 # wecams don't have audio 
 Noaudio 
 </Stream>

Stardime tehtud konfiga ffserveri, selleks

# ffserver

Ning seejärel paneme kliendi pumpama ffserveri peale videpilti. Seadmeks mille taga asub kaamera on /dev/video0

# ffmpeg -r 15 -s 352x288 -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm 

Video vaatamiseks tuleb enda lemmik videomängijaga avada url http://localhost:8090/test.flv või http://localhost:8090/test.asf.

Windows playeri puhul mms://localhost:8090/test.asf

Võimalik on videot kodeerida ka swf, mpg või mõnda teise formaati. Dokumentatsioonis seletakse pikemalt Juhul kui interneti ühendus on aegnale võib seadistada VideoFrameRate madalamaks (1-5).

Selleks, et streamida flashi mängijale (swf)

Tuleb lisada ffserver.conf faili järgnevad read

<Stream test.swf>
Feed feed1.ffm
Format swf
VideoCodec flv
VideoFrameRate 2
VideoBufferSize 80000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 352x288
PreRoll 0
Noaudio
</Stream>

Vaadata saab urlilt

http://localhost:8090/test.swf

Algses näites on nii server kui klient ühes masinas aga tüüpiliselt võib neid kasutada ka täiesti eraldi.

Soovides kiiremat reaktsiooniaega ning olles kvaliteetsemas võrgus võib buffreid väiksemaks keerata.

http://wiki.maemo.org/Manual_video_encoding

DVD loomine videofaili baasil

Probleem järgmine, meil on arvutis suurel hulgal avi, mkv vms formaadis faile. Sooviksime tekitada sellest dvd mängijas toimiva DVD plaadi.

Esmalt konverdime enda mkv formaadis oleva faili mpg formaati

# avconv -i yourfile.mkv -b:v 6000000 -target pal-dvd yournewfile.mpg

-b:v (bittrate:video) on oluline parameeter kvaliteedi määramisel. -b:v 6000000 - määrab selleks 6Mbps. Bitrate võib välja arvutada vastavalt enda faili suurusele, oluline on mahtuda DVD ruumalasse ära koos heli ja videoribaga.

Kui tegemist on laiekraan filmiga tuleb anda parameeter "-aspect 16:9" mis aitab laiekraani võimaluse säilitada

# avconv -i yourfile.mkv -target pal-dvd -aspect 16:9 yournewfile.mpg

Võib juhtuda olukord, et meil on filmil kaks audiorada - saksakeelne ja ingliskeelne ning saksakeelne on esimene. Sellisel juhul võtab avconv vaikimisi kasutusele esimese ehk saksakeelse. Sellest ülesaamiseks tuleb esiteks teada, et videoraja koordinaadiks on 0.0, esimese heliraja, ehk saksakeele, 0.1 ja ingliskeelel 0.2. Soovides lisada vaikimisi videoheliks ingliskeele tuleb meil seega määrata map parameetriga 0.2.

# avconf -i yourfile.mkv -target pal-dvd -aspect 16:9 -map 0.0 -map 0.2 yournewfile.mpg

Saadud faili söödame ette dvdauthor nimelisele programmile

# mkdir dvd
# dvdauthor -o dvd -t yournewfile.mpg

Võti -o defineerib väljundikataloogi ja -t tiitelfaili. Soovides lisada DVD peale mitu faili tuleb see käsk uuesti anda lisades igakord -t võtmega erineva algfaili

# dvdauthor -o dvd -T

Jällegi -o võti defineerib väljundi ja -T defineerib TOCi ehk sisukorra.

# genisoimage -dvd-video -o yourimage.iso dvd

Võti "-dvd-video" ütleb genisoimage utiliidile, et luua tuleb dvd video fail ja -o teatab mis nimega see luua tuleb. Kõige viimane parameeter defineerib aga kausta mille baasil fail tekitatkase.

  • -qscale:v on video kvaliteet näiteks -qscale:a 5, kõige kõrgem kvaliteet on 10. 5-7 on hea vahemik katsetamiseks. Testimisel paistis, et qscale:v ei suutnud pildi kvaliteeti märkimisväärselt muuta isegi kui see sai 10 peale seatud. Palju olulisem tundus birtrate seadistamine.
  • -s [720x576|720x480]] - Reslutsioon. PAL video size of 720x576px or x480px if NTSC.

Subtiitrite lisamiseks tuleb kasutada spumux utiliiti shttp://dvdauthor.sourceforge.net/doc/spumux.html

Abistav spikker birate kohta.

  • 128–384 kbit/s – business-oriented videoconferencing quality using video compression
  • 1.5 Mbit/s max – VCD quality (using MPEG1 compression)[16]
  • 9.8 Mbit/s max – DVD (using MPEG2 compression)[17]
  • 8 to 15 Mbit/s typ – HDTV quality (with bit-rate reduction from MPEG-4 AVC compression)
  • 19 Mbit/s approximate — HDV 720p (using MPEG2 compression)[18]
  • 24 Mbit/s max — AVCHD (using MPEG4 AVC compression)[19]
  • 25 Mbit/s approximate — HDV 1080i (using MPEG2 compression)[18]
  • 29.4 Mbit/s max – HD DVD
  • 40 Mbit/s max – Blu-ray Disc (using MPEG2, AVC or VC-1 compression)[20]

Kuna ülalkirjeldatud protsess on üsnagi aeganõudev, nõuab paljude erinevate utiliitide kasutusoskust ning konfiguratsioonide kirjutamist võib selle kõige lihtsustamiseks paigaldada dvdauthori graafilise liidese nimega Devede http://www.rastersoft.com/programas/devede.html

http://www.bobdroog.nl/2009/11/13/create-a-dvd-from-mpg-and-add-subtitles-using-spumux-in-bash/

http://wiki.indie-it.com/index.php?title=FFmpeg_DVD

http://amitmund.blogspot.com/2013/05/media-coversion-with-avconv.html erinevate videote bitrate tabelid