Ffmpeg kysymyksiä

Mitenkäs seuraavanlainen operaatio tulisi hoitaa:

Haluaisin muuttaa ~50 kappaletta .mp3 -tiedostoja hakemistosta /home/user/a/ .aac -tiedostoiksi hakemistoon /home/user/b/. Tärkeää olisi, että .aac -muotoinen kappale olisi sitten saman niminen kuin alkuperäinen .mp3 -kappale (tietysti ilman .mp3 päätettä...)

Yhden kappaleen kohdalla tein näin:

# ffmpeg -i /home/user/a/kappale.mp3 -ab 165kbit/s -acodec aac /home/user/b/kappale.aac

Miten hoidan tuon niin, että saisin kaikki kappaleet kerralla uuteen muotoon tutuilla nimillä?

Kiitos!
23785
Äänestä

Muut lukivat myös

Vastaukset 23

Vanhimmat

jotenki näin ikkään ainaski

foreach f (/home/user/a/*.mp3)
ffmpeg -i /home/user/a/$f -ab 165kbit/s -acodec aac /home/user/b/$f.aac
end

Ei tuo ihan valmis ole mutta suuntaa antava kuiteskin.

Äänestä
  • foreach f (/home/user/a/*.mp3)
    ffmpeg -i /home/user/a/$f -ab 165kbit/s -acodec aac /home/user/b/`basename $f .mp3`.aac
    end

    Tuo taitaa olla jo täydellisyyttä hipova.

    Äänestä

  • duoda kirjoitti:

    foreach f (/home/user/a/*.mp3)
    ffmpeg -i /home/user/a/$f -ab 165kbit/s -acodec aac /home/user/b/`basename $f .mp3`.aac
    end

    Tuo taitaa olla jo täydellisyyttä hipova.

    ...

    Äänestä

  • scriptinä tietysti kirjoitti:

    ...

    Testasin tuota antamaasi, mutta en yrityksistä huolimatta saanut toimimaan, joten kehittelin sen pohjalta oman bash-skrptin:

    #!/bin/bash
    cd /home/user/a/
    fo=`find *.mp3`
    cd
    ffmpeg -i /home/user/a/$fo -ab 165kbit/s -acodec aac /home/user/b/"$fo".aac

    Tämä toimii, jos hakemistossa 'a' on yksi tiedosto, mutta kun tiedostoja on usempi, ffmpeg kopioi vain yhden tiedoston, jonka nimi on sitten niiden kaikkien eri tiedston nimi yhdessä... (sekavaa selitystä kyllä)

    Edelleen kaikki ideat otetaan vastaan, itse kun olen vielä täysi noviisi skriptien kirjoittamisessa...

    Äänestä

  • ...ainakaan suoraan... kirjoitti:

    Testasin tuota antamaasi, mutta en yrityksistä huolimatta saanut toimimaan, joten kehittelin sen pohjalta oman bash-skrptin:

    #!/bin/bash
    cd /home/user/a/
    fo=`find *.mp3`
    cd
    ffmpeg -i /home/user/a/$fo -ab 165kbit/s -acodec aac /home/user/b/"$fo".aac

    Tämä toimii, jos hakemistossa 'a' on yksi tiedosto, mutta kun tiedostoja on usempi, ffmpeg kopioi vain yhden tiedoston, jonka nimi on sitten niiden kaikkien eri tiedston nimi yhdessä... (sekavaa selitystä kyllä)

    Edelleen kaikki ideat otetaan vastaan, itse kun olen vielä täysi noviisi skriptien kirjoittamisessa...

    cd /home/user

    find a/ -type f -name '*.mp3' | while read tiedosto;
    do

    ffmpeg -i "$tiedosto" -ab 165 kbit/s -acodec aac "b/$(basename "$tiedosto" .mp3).aac"

    done

    Äänestä

  • TRRY kirjoitti:

    cd /home/user

    find a/ -type f -name '*.mp3' | while read tiedosto;
    do

    ffmpeg -i "$tiedosto" -ab 165 kbit/s -acodec aac "b/$(basename "$tiedosto" .mp3).aac"

    done

    Tuo ehdottamasi oli jo todella lähellä toimivaa, näin sain homman sitten lopulta luistamaan:

    #!/bin/bash
    #
    cd /home/user/a/
    for tiedosto in `ls`
    do
    ffmpeg -i "$tiedosto" -ab 165kbit/s -acodec aac "/home/user/b/$(basename "$tiedosto" .mp3).aac"
    done

    Tuo tekee nyt juuri sen, mitä aloitusviestissäni yritin kuvailla.

    Äänestä

Joko meiltä täältä löytyy Linux taitajaa joka pystyy tarjoamaan toimivan ratkaisun avaajan ongelmaan. Kaikki yllä olevat soopaa, vaikka niissä väitetäänkin niiden toimivan.

Äänestä
  • 50 tiedostoa ei ole paljonkaan. Hyödyntää pystynuolinäppäintä niin onpa siinä ajassa kun skriptejä mietiskelisi niin kaikki tiedostot muunnettu jo.

    Äänestä

simppeli muunnos on find *.mp3 -exec ffmpeg -i {} {}.aac \;

Äänestä
  • "pystynuolinäppäin"
    Nostit kädet heti pystyyn ja luovutit, ei hyvä.

    "Mikko_Tku"
    Tätäkään ei voi hyväksyä.
    Ensinnäkin: — muunnettu tiedosto tulee samaan kansioon.
    Toiseksi: — muunnettu tiedosto on väärällä nimellä.

    Jos nyt ajatellaan että komentoputki suoritetaan Ctrl Alt T näppäinten painamisella avautuvassa kansiossa, ja muunnettavat on ~/a/ kansiossa ja valmiit pitää olla kansiossa ~/b/ ja niin nimettynä että vain tiedosto-pääte mp3 vaihtuu aac tiedostopäätteeseen, muun nimen säilyessä ennallaan, ei antamasi ohje toimi.

    Hyväksytään nyt vaikka tälläinen kansion vaihto, kun se sisältyy samaan komentoputkeen

    cd ~/a && find *.mp3 -exec ffmpeg -i {} {}.aac \;

    Tuokaan muutos ei tosin saa tuota "Mikko_Tku" ohjetta vielä toimimaan.

    Äänestä

  • Turbo-Urpo1 kirjoitti:

    "pystynuolinäppäin"
    Nostit kädet heti pystyyn ja luovutit, ei hyvä.

    "Mikko_Tku"
    Tätäkään ei voi hyväksyä.
    Ensinnäkin: — muunnettu tiedosto tulee samaan kansioon.
    Toiseksi: — muunnettu tiedosto on väärällä nimellä.

    Jos nyt ajatellaan että komentoputki suoritetaan Ctrl Alt T näppäinten painamisella avautuvassa kansiossa, ja muunnettavat on ~/a/ kansiossa ja valmiit pitää olla kansiossa ~/b/ ja niin nimettynä että vain tiedosto-pääte mp3 vaihtuu aac tiedostopäätteeseen, muun nimen säilyessä ennallaan, ei antamasi ohje toimi.

    Hyväksytään nyt vaikka tälläinen kansion vaihto, kun se sisältyy samaan komentoputkeen

    cd ~/a && find *.mp3 -exec ffmpeg -i {} {}.aac \;

    Tuokaan muutos ei tosin saa tuota "Mikko_Tku" ohjetta vielä toimimaan.

    Koska+aloittelijalla+ei+ole+itsestään+selvyyksiä,+on+ehkä+paikallaan+selittää+tuon+polkumäärittelyn+lyhennystä+Tilde-merkillä++(+~+).Tämä+on+lyhyempi+muoto+ilmaista+käyttäjän+kotihakemiston+polku./home/matti/+on+lyhyempänä+versiona+~/Kysymys+oli+asetettu+vuonna+2008,+eli+noin+kymmenen+vuotta+sitten,+ja+tosi+kärsivällinen+kysyjä+kyllä+muisen+ajan+jaksaa+vastausta+vuottaa.RATKAISU+TÄSSÄ:+https://i.postimg.cc/mZPMTLxf/Valinta-223.pngSyy+miksi+tämän+nostin+ylös+on+noissa+hipsuissa,+jos+käytät+esimerkistä+poiketen+normaaleja+hipsuja+jotka+löytyy+ENTER+-näppäimen+vierestä+sinun+on+annettava+komentoputkessa+absoluuttinen+polku,+ei+riitä+se+tilde+merkki+(+~+).+Ja+taas+me+opittiin+lisää.Pistän+vielä+tähänkin+tuon+komentoputken,+jonka+kuintenkin+saattaa+tämän+sivuston+suotimet+pilata,+mutta+yrittänyttä+ei+laiteta,+sano+joku+.+.+.cd+~/a+&&+for+file+in+*.mp3;+do+ffmpeg+-i+"$file"+`~/b/${file%.mp3`.aac;+done

    Äänestä

  • Turbo-Urpo1 kirjoitti:

    "pystynuolinäppäin"
    Nostit kädet heti pystyyn ja luovutit, ei hyvä.

    "Mikko_Tku"
    Tätäkään ei voi hyväksyä.
    Ensinnäkin: — muunnettu tiedosto tulee samaan kansioon.
    Toiseksi: — muunnettu tiedosto on väärällä nimellä.

    Jos nyt ajatellaan että komentoputki suoritetaan Ctrl Alt T näppäinten painamisella avautuvassa kansiossa, ja muunnettavat on ~/a/ kansiossa ja valmiit pitää olla kansiossa ~/b/ ja niin nimettynä että vain tiedosto-pääte mp3 vaihtuu aac tiedostopäätteeseen, muun nimen säilyessä ennallaan, ei antamasi ohje toimi.

    Hyväksytään nyt vaikka tälläinen kansion vaihto, kun se sisältyy samaan komentoputkeen

    cd ~/a && find *.mp3 -exec ffmpeg -i {} {}.aac \;

    Tuokaan muutos ei tosin saa tuota "Mikko_Tku" ohjetta vielä toimimaan.

    "
    "pystynuolinäppäin"
    Nostit kädet heti pystyyn ja luovutit, ei hyvä.
    "
    Pragmaattinen lähestymistapa: turha jäädä miettimään mitään eleganttia ratkaisua, jos tavoitteena pelkästään ratkaista joku ongelma kertaluontoisesti.

    Äänestä

  • Turbo-Urpo1 kirjoitti:

    Koska+aloittelijalla+ei+ole+itsestään+selvyyksiä,+on+ehkä+paikallaan+selittää+tuon+polkumäärittelyn+lyhennystä+Tilde-merkillä++(+~+).Tämä+on+lyhyempi+muoto+ilmaista+käyttäjän+kotihakemiston+polku./home/matti/+on+lyhyempänä+versiona+~/Kysymys+oli+asetettu+vuonna+2008,+eli+noin+kymmenen+vuotta+sitten,+ja+tosi+kärsivällinen+kysyjä+kyllä+muisen+ajan+jaksaa+vastausta+vuottaa.RATKAISU+TÄSSÄ:+https://i.postimg.cc/mZPMTLxf/Valinta-223.pngSyy+miksi+tämän+nostin+ylös+on+noissa+hipsuissa,+jos+käytät+esimerkistä+poiketen+normaaleja+hipsuja+jotka+löytyy+ENTER+-näppäimen+vierestä+sinun+on+annettava+komentoputkessa+absoluuttinen+polku,+ei+riitä+se+tilde+merkki+(+~+).+Ja+taas+me+opittiin+lisää.Pistän+vielä+tähänkin+tuon+komentoputken,+jonka+kuintenkin+saattaa+tämän+sivuston+suotimet+pilata,+mutta+yrittänyttä+ei+laiteta,+sano+joku+.+.+.cd+~/a+&&+for+file+in+*.mp3;+do+ffmpeg+-i+"$file"+`~/b/${file%.mp3`.aac;+done

    cd+~/a+&&+for+file+in+*.mp3;+do+ffmpeg+-i+"$file"+`~/b/${file%.mp3`.aac;+done+Tuo+ei+toimi.+Siinä+syntaksivirhe...+Oma+muutokseni+toimii,+mutta+toki+vaatii+vielä+sen,+että+tiedostot+pitää+siirtää+oikeaan+paikkaan+mikä+ei+vaikeaa+mikä+menee+helposti+mv+komennolla.+Jätin+harjoitukseksi.

    Äänestä

  • Mikko_Tku kirjoitti:

    cd+~/a+&&+for+file+in+*.mp3;+do+ffmpeg+-i+"$file"+`~/b/${file%.mp3`.aac;+done+Tuo+ei+toimi.+Siinä+syntaksivirhe...+Oma+muutokseni+toimii,+mutta+toki+vaatii+vielä+sen,+että+tiedostot+pitää+siirtää+oikeaan+paikkaan+mikä+ei+vaikeaa+mikä+menee+helposti+mv+komennolla.+Jätin+harjoitukseksi.

    Joo,+muutin+tuon+tilde+merkkin+(+~+)+ympäristömuuttujaksi+$HOMEJa+jotenkin+siitä+putosi+toinen+aaltoselkeismerkki+pois,+mutta+tässä+nyt+korjattuna.https://i.postimg.cc/0QcCFcJY/Valinta-224.pngSinulla+ei+säily+tiedostonimi+sellaisen+kun+kysyjä+tarkoitti,+vaan+*.mp3+tiedostopääte+tulee+jo+täydelliseen+tiedostonimeen+lisäksi,+eli+siinä+on+muunnoksen+jälkeen+kaksinkertainen+tiedostopääte.+näin+—+testi.mp3+muuttuu+tälläiseksi+—+testi.mp3.aac+ja+sen+pitäisi+mennä+näintesti.mp3+->+testi.aacja+tähän+vielä+korjattunacd+~/a+&&+for+file+in+*.mp3;+do+ffmpeg+-i+"$file"+"$HOME/b/${file%.mp3}".aac;+done

    Äänestä

  • pystynuolinäppäin kirjoitti:

    "
    "pystynuolinäppäin"
    Nostit kädet heti pystyyn ja luovutit, ei hyvä.
    "
    Pragmaattinen lähestymistapa: turha jäädä miettimään mitään eleganttia ratkaisua, jos tavoitteena pelkästään ratkaista joku ongelma kertaluontoisesti.

    Eikö illalla ole mukava mennä nukkumaan kun voi tuntea oppineensa jotain uutta. Eikä tässä nyt haeta mitään kertaluonteista ratkaisua, vaan komentoputkea jota voi soveltaa melkein mihin hyväänsä muunnokseen.

    Minä muistelen joskus joutuneeni vastaavan tilanteen ratkaisemaan karttapohjien kanssa. Se oli joku OSI tai sen suuntainen ohjelma jonka kartat koottiin oliko *.JPG tai jotai muuta formaattia olevista kartan paloista. Nuo palat sai kasaan jonkin toisen kartta-ohjelman kuvista, mutta kuvat piti muunntaa formaatista toiseen ja niitä paloja oli paljon.

    Äänestä

  • Mikko_Tku kirjoitti:

    cd+~/a+&&+for+file+in+*.mp3;+do+ffmpeg+-i+"$file"+`~/b/${file%.mp3`.aac;+done+Tuo+ei+toimi.+Siinä+syntaksivirhe...+Oma+muutokseni+toimii,+mutta+toki+vaatii+vielä+sen,+että+tiedostot+pitää+siirtää+oikeaan+paikkaan+mikä+ei+vaikeaa+mikä+menee+helposti+mv+komennolla.+Jätin+harjoitukseksi.

    Mikko_Tku
    Näin saadaan tuohon sinun komentoputkeen tuo kansio virhe korjattua, mutta miten tästä sitten saadaan se nimi virhe pois. https://i.postimg.cc/3r4JbWG6/Valinta-225.png

    cd ~/a && find *.mp3 -exec ffmpeg -i {} "$HOME/b/{}".aac \;

    Äänestä

  • Turbo-Urpo1 kirjoitti:

    Mikko_Tku
    Näin saadaan tuohon sinun komentoputkeen tuo kansio virhe korjattua, mutta miten tästä sitten saadaan se nimi virhe pois. https://i.postimg.cc/3r4JbWG6/Valinta-225.png

    cd ~/a && find *.mp3 -exec ffmpeg -i {} "$HOME/b/{}".aac \;

    Jätin tahallaan tuon kansiojutun pois. Niin sitä voi käyttää kaikissa kansioissa. Siirtämisen voi tehdä helposti mv komennolla minne tykkää. mv voi uudelleen nimetä tiedostoja. Putkessa voi nimeä muuttaa sed komennolla. sed tarkoitettu enempi tiedostojen muokkaukseen. Linux komentotulkki on hyvin tehokas. Syntaksin muistaminen hankalaa jos ei käytä päivittäin. {} sulkuihin voi muistaakseni lisätä -r, mutta en jaksa selvittää...
    find *.mp3 -exec ffmpeg -i {} {}.aac \;

    Yllä oleva on simppeli ja vielä ymmärrettävissä. Jos siihen lisää paljon tavaraa niin ei sitä kukaan ymmärrä. Joku jo kysyikin mihin sitä exec-komentoa tarvitaan.

    Äänestä

  • Mikko_Tku kirjoitti:

    Jätin tahallaan tuon kansiojutun pois. Niin sitä voi käyttää kaikissa kansioissa. Siirtämisen voi tehdä helposti mv komennolla minne tykkää. mv voi uudelleen nimetä tiedostoja. Putkessa voi nimeä muuttaa sed komennolla. sed tarkoitettu enempi tiedostojen muokkaukseen. Linux komentotulkki on hyvin tehokas. Syntaksin muistaminen hankalaa jos ei käytä päivittäin. {} sulkuihin voi muistaakseni lisätä -r, mutta en jaksa selvittää...
    find *.mp3 -exec ffmpeg -i {} {}.aac \;

    Yllä oleva on simppeli ja vielä ymmärrettävissä. Jos siihen lisää paljon tavaraa niin ei sitä kukaan ymmärrä. Joku jo kysyikin mihin sitä exec-komentoa tarvitaan.

    Älä nyt hitossa anna periksi, kyllä se siitä selviää. Tuo väärä nimi on pahempi onglma kuin tuo väärä kansio. Kun tuo *.mp3 pitäisi korvata *.aac päätteellä. Tuo uuden päätteen lisääminen entisen nimen perään on liian helppo tehtävä. Meillä tässä ei ole muuttujaa käytettävissä kuten tuossa FOR -silmukassa oli, ja sen takia tuo nimen jalostaminen on hankalaa.

    Nämä meidän GURUT taitaa ratkoa onko Windows parempi kuin Linux, kyllä tämä ratkeaa kun ovat ensin päässeet yhteisymmärrykseen tuosta järjestelmien paremmuudesta. Sitä odotellessa me pistetään komentoputket kuntoon.

    "ei-tarvi-gurustella" tarjosi jo Bash skripti ohjelman käyttöä, ja se taas olisi periksi antamista, siihen ei ole tarvetta. Kyllä se jollakin tavalla saadaan tuon FIND komennon ympärille rakennettua.

    Äänestä

Missä ne kaikki GURUT luuraa, tämän haastavampaa pähkäilyä ei näillä sivuilla ole nähty, luulisi jokaisen olevan mukana täydellä innolla, vain "Mikko_Tku" jaksoi innostua.

Äänestä
  • Gurut varmaan arvelevat ettei kysyjä ole jaksanut odottaa vastausta kymmentä vuotta.

    Äänestä

itsekin halusin file1.cdda.wav -> file1.mp3

helppohan on tehdä näin: itsekin halusin file1.cdda.wav -> file1.cdda.wav.mp3

MUTTA jos nuo moninkertaiset tiedostopäätteet alkavat harmittaa, tässä vinkki:

lataa koneellesi lazarus freepascal

pascalin copy, pos -funktiot ovat ystäviäsi.

Hyödyllisiä ovat komentoriviohjelmissa myös ParamCount ja ParamStr(N:Integer)

sitten vielä lisäät (tai muokkaat olemassaolevaa $mode -riviä, jos sellainen jo on) lähdekooditiedoston alkuun:

{$mode delphi}
{$asmmode intel}


Tuolla mode delphi:llä Freepascal (eli fpc) osaa objectpascalia pelkän pascalin sijasta.

myös:

uses
SysUtils, Classes;

em. on hyvä laittaa, niin pääsee nauttimaan FCL -luokkakirjaston eduista.

EI Jaksa opetella turhia BASH -skriptikoodauksia, kun objectpascalilla koodaus on paljon helpompaa !

mp3 -tiedostoja muuten EI kannata tehdä ffmpegillä (jollei halua paskaa äänenlaatua).

Sekä BladeEnc että Windowsin mukana tuleva Frauenhofer -koodekki tekevät molemmat parempaa jälkeä kuin ffmpeg.

BladeEnc on muuten erään osaavan norjalaisen koodaajan käsialaa.

Pohjoismaissa osataan, ja hyvä niin !

Muistathan: myös DVD -levyjen salauksen murtuminen oli erään silloin 16 -vuotiaan norjalaiskoodaajan ansiota. ns. dvd-Jon.

Suomella on muuten enemmän maarajaa Norjan kuin Ruotsin kanssa !

Äänestä

Miksi niitä pitäisi muuttaa?

Äänestä

Kommentoi aloitusta


...mutta niin vähän vastauk... kirjoitti:

Mitenkäs seuraavanlainen operaatio tulisi hoitaa:

Haluaisin muuttaa ~50 kappaletta .mp3 -tiedostoja hakemistosta /home/user/a/ .aac -tiedostoiksi hakemistoon /home/user/b/. Tärkeää olisi, että .aac -muotoinen kappale olisi sitten saman niminen kuin alkuperäinen .mp3 -kappale (tietysti ilman .mp3 päätettä...)

Yhden kappaleen kohdalla tein näin:

# ffmpeg -i /home/user/a/kappale.mp3 -ab 165kbit/s -acodec aac /home/user/b/kappale.aac

Miten hoidan tuon niin, että saisin kaikki kappaleet kerralla uuteen muotoon tutuilla nimillä?

Kiitos!

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu