Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: Spojování audia.  (Přečteno 2924 krát)

Ventero

  • Závislák
  • ****
  • Příspěvků: 2506
    • Zobrazit profil
Spojování audia.
« kdy: 28 Říjen 2020, 19:53:01 »
Prosím o tip na SW pro spojení asi 20ti krátkých záznamů .m4a do jednoho zvukového souboru, tak aby to prostě navazovalo chronologicky na sebe - podle čísla nebo abecedně nebo tak něco - prostě aby se to dalo zajistit, že nebudou spojeny na přeskáčku.
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

juwa2

  • Závislák
  • ****
  • Příspěvků: 4129
    • Zobrazit profil
Re:Spojování audia.
« Odpověď #1 kdy: 28 Říjen 2020, 20:08:20 »
ffmpeg
A skript si snad dokážeš napsat sám - věřím ti.  :)

Ventero

  • Závislák
  • ****
  • Příspěvků: 2506
    • Zobrazit profil
Re:Spojování audia.
« Odpověď #2 kdy: 28 Říjen 2020, 20:52:35 »
Nedokazi, ale muzu se pokusit konsolidovat vse, co uz znam a pustit se do toho. Jen bude tezke najit ten zachytny bod - aspon mam namet na zitrejsi cinnost.

Nevedel jsem ze ffmpeg umi i spojovat.
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

juwa2

  • Závislák
  • ****
  • Příspěvků: 4129
    • Zobrazit profil
Re:Spojování audia.
« Odpověď #3 kdy: 28 Říjen 2020, 21:29:28 »
Nedokazi, ale muzu se pokusit konsolidovat vse, co uz znam a pustit se do toho. Jen bude tezke najit ten zachytny bod - aspon mam namet na zitrejsi cinnost.

Nevedel jsem ze ffmpeg umi i spojovat.

ffmpeg toho umí opravdu hodně... ;)
Ty soubory je třeba si napřed (pokud už nejsou) vhodně seřadit/pojmenovat (01_file.m4a, 02_file.m4a, 03_file.m4a, .......20_file.m4a).
Pak uložit jejich seznam do souboru list.txt  a nakonec je spojit:
Kód: [Vybrat]
printf "file '%s'\n" ./*.m4a > list.txt && ffmpeg -f concat -i list.txt -c copy output.m4a
Více zde.

« Poslední změna: 28 Říjen 2020, 21:42:31 od juwa2 »

Ventero

  • Závislák
  • ****
  • Příspěvků: 2506
    • Zobrazit profil
Re:Spojování audia.
« Odpověď #4 kdy: 30 Říjen 2020, 12:14:29 »
Díky - s drobnou úpravou funguje skvěle:
Kód: [Vybrat]
printf "file '%s'\n" *.m4a > list.txt && ffmpeg -f concat -i list.txt -c copy output.m4aMůže mi být polopatě vysvětlena syntaxe té tvorby list.txt? - zejména tato sekce "file '%s'\n"
U toho ffmpeg je mi celkem srozumitelná, snad jen trochu udivuje parametr copy.

Edit: Už asi chápu i tu nutnost úpravy - nejspíše souvisí s tím, že jsem byl v terminálu v cílovém adresáři.
« Poslední změna: 30 Říjen 2020, 12:20:14 od Ventero »
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

singularis

  • Člen
  • **
  • Příspěvků: 143
    • Zobrazit profil
Re:Spojování audia.
« Odpověď #5 kdy: 30 Říjen 2020, 19:46:38 »
Kód: [Vybrat]
printf "file '%s'\n" *.m4a > list.txtTa syntaxe je funkční, ale detailně vzato chybná (nebo alespoň zavádějící) — zpětné lomítko má být ve dvojitých uvozovkách zdvojeno, i v nich totiž zůstává zvláštním znakem, na což bys narazil, kdybys v něm chtěl vypsat zpětné lomítko jako takové — to by tam muselo být čtyřikrát, protože jednou ho zredukuje bash a podruhé příkaz printf.

A nyní to vysvětlení: příkaz „printf“ je „vylepšené echo“; jeho první parametr je „formátovací řetězec“, který se většinou vypisuje na výstup tak, jak je, ale může obsahovat formátovací značky začínající procentem. Každá taková značka „načte“ jeden z dalších parametrů a zformátuje ho způsobem, který vyjadřuje; formátovací značka „%s“ znamená vypsat obsah parametru jako řetězec beze změny. Pokud po zpracování celého formátovacího řetězce ještě nějaké parametry zbudou, příkaz printf ty již zpracované zahodí a se zbytkem začne znovu. V tomto případě bash za „*.m4a“ dosadí seřazené názvy souborů s příponou „*.m4a“ a to jsou parametry, které bude printf číst. A protože formátovací řetězec obsahuje jen jednu formátovací značku, celý řetězec se zopakuje pro každý parametr. Příkaz printf také ve formátovacím řetězci interpretuje značky začínající zpětným lomítkem jako v tomto případě „\n“, za kterou dosadí znak konce řádky (na rozdíl od echo, printf konec řádky sám od sebe nepřidává). A přesměrování do souboru je snad jasné...

Pro jiné vysvětlení (možná srozumitelnější), zadej v bashi příkaz:

Kód: [Vybrat]
help printf
Osobně se snažím formátovací řetězec printf uvádět co nejvíc v apostrofech, protože se tím šetří problémy se zpětnými lomítky, ale pokud sám má obsahovat apostrof jako v tomto případě, je to problém, takže nejlepší řešení je všechna zpětná lomítka ve dvojitých uvozovkách zdvojit:
Kód: [Vybrat]
printf "file '%s'\\n" *.m4a > list.txt

CyberCodeDroid

  • Návštěvník
  • *
  • Příspěvků: 20
    • Zobrazit profil
Re:Spojování audia.
« Odpověď #6 kdy: 31 Říjen 2020, 17:55:37 »