Olen valmis videon muokkaamiseen, joten anna anteeksi, jos pyydän jotain naurettavaa.

Saan videoleikkeitä tallentimesta. Leikkeet ovat AVI-tiedostoja:

Resolution: 1920 x 1080 Frames Per Second: 60 Video Format: ITU H.264 Audio Format: MPEG 1 Audio, Layer 3 (MP3) 

Tarkkuus ja FPS ylittävät selvästi vaadittani, joten yritän suorittaa komennon pienentämään asioita:

ffmpeg -i highres.avi -r 30 -s 960x540 lowerres.avi 

Tämä on onnistunut antamaan minulle halutun tarkkuuden, kuvanopeuden ja pienemmän tiedostokoon, mutta se heikensi myös laatutapaa enemmän kuin odotin.

Katsoin uutta tiedostoa ja huomasin, että jostain syystä FFmpeg muunsi käytetyn muodon:

Video Format: FFmpeg MPEG-4 Audio Format: MPEG 1 Audio, Layer 2 

Minusta on epäselvää, miksi se ei käyttäisi samoja tulostemuotoja kuin syöttömuodot. Yritin pakottaa tämän komennon avulla käyttämään H.264: ää:

ffmpeg -i highres.avi -r 30 -s 960x540 -f h264 lowerresforceh264.avi 

Valitettavasti se epäonnistui seuraavalla lähdöllä:

ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers built on Jan 4 2012 16:21:50 with gcc 4.6.1 configuration: --extra-version="4:0.7.3-0ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static WARNING: library configuration mismatch avutil configuration: --extra-version="4:0.7.3ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay avcodec configuration: --extra-version="4:0.7.3ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay avformat configuration: --extra-version="4:0.7.3-0ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay avdevice configuration: --extra-version="4:0.7.3-0ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay avfilter configuration: --extra-version="4:0.7.3-0ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay swscale configuration: --extra-version="4:0.7.3-0ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay postproc configuration: --extra-version="4:0.7.3-0ubuntu0.11.10.1" --arch=i386 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/i686/cmov --cpu=i686 --enable-shared --disable-static --disable-ffmpeg --disable-ffplay libavutil 51. 7. 0 / 51. 7. 0 libavcodec 53. 6. 0 / 53. 6. 0 libavformat 53. 3. 0 / 53. 3. 0 libavdevice 53. 0. 0 / 53. 0. 0 libavfilter 2. 4. 0 / 2. 4. 0 libswscale 2. 0. 0 / 2. 0. 0 libpostproc 52. 0. 0 / 52. 0. 0 Input #0, avi, from "highres.avi": Metadata: comment : Quality_GOOD encoder : Lavf52.64.2 encoded_by : AverMedia_c281_1.7.2 Duration: 00:01:59.28, start: 0.000000, bitrate: 10263 kb/s Stream #0.0: Video: h264 (High), yuv420p, 1920x1080, 59.94 fps, 59.94 tbr, 59.94 tbn, 119.88 tbc Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s [buffer @ 0x8f438a0] w:1920 h:1080 pixfmt:yuv420p [scale @ 0x8f431e0] w:1920 h:1080 fmt:yuv420p -> w:960 h:540 fmt:yuv420p flags:0x4 [libx264 @ 0x8f0fb40] broken ffmpeg default settings detected [libx264 @ 0x8f0fb40] use an encoding preset (e.g. -vpre medium) [libx264 @ 0x8f0fb40] preset usage: -vpre <speed> -vpre <profile> [libx264 @ 0x8f0fb40] speed presets are listed in x264 --help [libx264 @ 0x8f0fb40] profile is optional; x264 defaults to high Output #0, h264, to "lowerresforceh264.avi": Stream #0.0: Video: libx264, yuv420p, 960x540, q=2-31, 200 kb/s, 90k tbn, 30 tbc Stream mapping: Stream #0.0 -> #0.0 Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height 

En ole varma, miksi en voi tehdä tätä. Suoritettaessa ”ffmpeg -formaatit” h264 luetellaan yhtenä käyttökelpoisena sekä syötteille että tuotoksille.

Jos joku pystyy osoittamaan minut oikeaan suuntaan, arvostan sitä suuresti. Kiitos.

PS: Käytän FFmpeg-versiota 0.7.3-4: 0.7.3-0 Ubuntu 11.10 -käyttöjärjestelmässä.

MUOKKAA

Olen ”ve” löysi ratkaisun esiasetusten käyttöön. Kun etsin tietoa esiasetuksista, löysin seuraavan opetusohjelman, jossa keskusteltiin niistä:

http://juliensimon.blogspot.com/2009/01/howto-ffmpeg-x264-presets.html

Minun tarvitsi vain määrittää koodekki ja oikea esiasetusasetus, kuten näin:

ffmpeg -i highres.avi -r 30 -s 960x540 -vcodec libx264 -vpre medium lowerresforceh264vpremedium.avi 

Minulla on vielä joitakin säätöjä, mutta tämä on pohjimmiltaan mitä halusin. Kiitos.

Kommentit

  • Jotkut ihmiset yksinkertaisesti haluavat tietää, kuinka muuntaa Avermedia .avi-tiedostot .mp4, jotta he soittavat Mountain Lion / Mavericks -ohjelmassa < pre > ffmpeg -i 140203-1229.avi -vcodec copy -acodec copy fromavermedia_cog.mp4 < / pre >

Vastaa

I ” Yritän auttaa. Ensinnäkin, en ymmärrä, miksi sanot, että FFMPEG H.264 ei ole syötemuoto?

En tiedä FFMPEG-komentoriviä tarpeeksi hyvin (onko ketään, joka tekee? 😉 ). Siellä on oltava kytkin monilähetyskoodausta varten. Tiedän, että on joitain sisäänrakennettuja esiasetuksia, joita voit todennäköisesti käyttää ja tehdä melkein varmasti siihen, mihin tähdät. Näitä kutsutaan yleensä x264-esiasetuksiksi tai x264-virityksiksi. Löydätkö jotain sellaista?

Kommentit

  • Kiitos. Keskustelusi esiasetuksista on auttanut minua löytämään todennäköisen ratkaisun. ’ muokkaan viestiä näyttämään tekemäni.
  • Hieno ratkaisu. Lisätty katkelmakokoelmaani. Kiitos.
  • @BigBeagle: Kun löydät vastauksen kysymykseesi, voit lähettää sen vastauksena. Kysymystä muokataan, jotta kysymys saadaan selkeämmäksi. Kuten ymmärrän, vastaukset menevät vastausosioon.

Vastaus

ffmpeg on poistanut x264-esiasetuksensa, joten -vpre -asetus ei toimi enää.

Minulla on nyt komentosarja videotiedostojen muuntamiseksi matkapuhelimesi käsittelemään muotoon.

ffmpeg -i input.avi -sws_flags lanczos+accurate_rnd -vf "scale=320:240" -c:v libx264 -crf 20 -preset veryslow -profile:v main -tune fastdecode -c:a copy output.mkv 

Selitän kaikki vaihtoehdot

-sws_flags lanczos+accurate_rnd tämä vaihtoehto on skaalausalgoritmi, lanczoja suositellaan, koska se tuottaa vähiten esineitä ilman hämärtymistä, mutta se on hidas.

-vf "scale=..." on itsestään selvää, määritä lähtöresoluutio

-crf 20 tämä on laatu, 20 on hyvä lopullinen (älä käytä sitä ennen muokkausta) tulostusasetus, tämä on vakiolaatu ja on paras vaihtoehto, kun tiedostokoko ei ole tiukka ja tuottaa parempaa laatua pienimmällä tiedostokoolla kuin mikään muu, muuten käytä kaksi passia parhaan mahdollisen laadun saamiseksi tietyllä tiedostokoolla (kuten tarve sovittaa se CD- tai DVD-levylle), kiinteä bittinopeus (esim. ) tulisi käyttää vain suoratoistona, erityistapaus on” 0 ”, joka on häviötön ja tämän vaihtoehdon alue on 1 (korkein laatu) – 50 (heikoin laatu).

Hyvä testi tälle on suorittaa koodaus läpi -crf 20: llä, ottaa huomioon bittinopeus ja käyttää sitten sitä, että tiedoston 2. version -b-asetuksen tulisi molemmat olla saman kokoiset, vertaa näitä laatuerot.

-preset veryslow tämä valitsee, kuinka paljon suoritinta haluat käyttää, sitä hitaammin se on pienempi tiedostokoko ja parempi laatu.

-profile:v main tämä on H.264-profiili käyttää. korkea on tehokkain tiedostokoko viisas, mutta dekoodaamiseen käytetään paljon CPU: ta verrattuna muihin muotoihin, mikä on sanottu sen suosituimmaksi, koska useimmissa matkapuhelimissa on sisäänrakennettu laitteistodekooderi ja flash-soitin tukee sitä, minun ei, joten minun on käytä pääkoodia.

-tune fastdecode matkapuhelimeni ei pidä tiedostojen toistamisesta ilman tätä vaihtoehtoa, mutta yleensä tämä voidaan jättää tyhjäksi tai asettaa ”elokuvaksi” videopeleille, tärkein syy tämän käyttämiseen on saada vähän ylimääräistä laatua.

Ja viimeiseksi suosittelen erittäin modernin säilömuodon käyttämistä .avi ei ole suunniteltu pitämään H.264: ää ja siitä, mitä siellä ymmärrän ” s ei ole standardia H.264: n tallentamiseen tai tiedoston tekemiseen yli 2 Gt, useimmat toteutukset ovat hakkereita ja niillä voi olla ongelmia, käytä mkv: tä tai mp4: ää.

Kommentit

  • Libx264: n esiasetukset määritetään nyt -preset kuten kohdassa -preset slow
  • -tune fastdecode poistaa käytöstä deblockingin, painotetut B- ja P-kehykset sekä CABAC: n. On dekoodereita, jotka pystyvät käsittelemään B-kehyksiä, mutta eivät CABACia? Ehdotan -profile:v baseline , jos sinun on kohdennettava vanhoihin laitteistodekoodereihin. (fastdecode voi olla hyödyllinen, jos kohdennetaan ohjelmistoa dekooderi uudelleen hitaalla suorittimella, mutta ei laitteistodekooderia.) Pää B-kehyksillä, mutta ei deblockingia tai CABAC saattaa näyttää tai ei ehkä näyttää paremmalta kuin perusviiva deblockingilla. +1 suositellaksesi ei-AVI: tä h.264: n tallentamiseen. IIRC, tärkein on B-kehys, mutta joo h.264 avi-muodossa ei ole hyvin standardoitu, ja se ’ on hakkeroiva.
  • I ’ d kutsuu -crf 20 korkean finaalin. Voit muuttaa sen arvoksi 22 tai jopa 24 ja todennäköisesti kunnossa, ellei se ’ ole kovaa liikettä, kuten urheilutapahtuma.

Vastaa

Joitakin asioita on tehtävä selväksi:

  • Muoto on ei koodekki; haluat saada tiedoston avi -muodossa , jonka video on koodattu h264 -koodekki. Käytä vain -vcodec libx264 ja tiedostonimeä .avi kanssa. Ffmpegin pitäisi tunnistaa muoto katsomalla tiedostopääte, mutta saatat myös olla erityinen lisäämällä -f avi . et et halua käyttää mpeg1: tä, koska se antaa huonompaa laatua kuin mpeg2 tai jopa huonompi verrattuna mpeg4: ään, jota suosittelen.
  • Ongelmasi oli, että ffmpeg käytti vain alhaisinta mahdollista laatua, koska et määrittänyt mitään. Vaihtoehto -sameq näyttää harvoin toimivan minulle. Itse asiassa on erittäin kätevää asettaa bittinopeus manuaalisesti. Lisää esimerkiksi -vb 3000k saadaksesi tiedoston, jonka keskimääräinen video bittinopeus on 3 Mt / s, mikä antaa varsin hyvän laadun. Luulen, että se riittäisi jopa sinulle on 2 Mt / s mainittua tarkkuutta varten.
  • Tiedostokoon pienentämisen avain ei ole tarkkuus, vaan edellä mainittu bittinopeus. Pidän mieluummin alkuperäisestä tarkkuudesta ja vain manipuloin bittinopeutta.
  • Luulen, että haluat myös pitää äänen ilman muuntamista (joten ilman laadun heikkenemistä), joten käytä -acodec copy .

Kokeile tätä: ffmpeg -i highres.avi -acodec copy -vcodec libx264 -vb 2000k alempi res.avi

kommentit

  • Jatkuva bittinopeus on huonoin (laadun ja koon suhteen) kaikista nopeuden säätötavoista x264 ja sitä tulisi välttää. Määritä vakiolaatuinen tila -crf -toiminnon avulla.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *