mkv és az ffmpeg

Fórumok
#!/bin/bash

meret="1600:680"

ffmpeg -i $1 -filter:v scale=$meret -c:a copy $1-atmeretezett.mkv

Sziasztok.

A fenti scripttel szoktam mkv állományokat átméretezni.
Kérdésem az, hogy ha a magyar hangsávot szeretném angol és magyar felirattal tovább menteni a kimeneti állományba, miként tehetem meg?

Elvesztem a manualokban, három nap alatt sem jutottam a végére, pedig ennyi idő mindenre elég szokott lenni. :-(

Tudom, használhatnék handbrake meg hasonló GUI-kat, de inkább mindent parancssorban végeznék, hogy valamennyire felfogjam, mi történik.

Hozzászólások

Szerkesztve: 2021. 12. 20., h – 13:02

Sosem csináltam ilyet, de esetleg ez?

 

Szerk.: Ebből a teszt fájlból ezzel a paranccsal:

ffmpeg -i test5.mkv -filter:v scale=640x480 -map 0:v:0 -map 0:a:1 -map 0:s:1 -map 0:s:2 -c:a copy output.mkv

átméreteztem, csak a kommentár audiót adtam hozzá, és a magyar és német feliratot. (output.mkv file)

(Ennél a fájlnál elég a map 0: nélkül is:

ffmpeg -i test5.mkv -filter:v scale=640x480 -map v:0 -map a:1 -map s:1 -map s:2 -c:a copy output.mkv

)

Szerkesztve: 2021. 12. 20., h – 10:02

 

A http://sign-el-soft.hu oldalon található program videó szerkesztője, ha mentéskor nyomva tartod a Ctrl gombot, meghívja az ffmpeg-et, de előtte mutat egy panelt. Itt láthatod/szerkesztheted a parancssori formát. Másold ki azt a szöveget Ctrl+c-vel, és használd ahol akarod.

A beállításoktól függően valami ehhez hasonlót fogsz látni:

ffmpeg -ss 1761.70 -i "%s" -t 1749.12 -map 0:v -map 0:a -f mpegts -vcodec libx264 -s 1280x720 -b:v 2700k -qmin 11 -qmax 51 -g 25 -acodec mp3 -b:a 128k "%s"

Szerkesztve: 2022. 01. 02., v – 13:29

en handbrake-kel mereteztem at .mkv fajlt, es ott is at lehetett masolni a hangot es a feliratokat is. A kimenetet ott is meg lehet nezni. Most nincs elottem a program.

 

update:

A handbrakenek, mencodernek es az ffmpegnek semmi kozuk egymashoz, egyik se hivja meg a masikat, mindegyik sajat maga enkodol, vagy kulso library-t hiv meg.

 

Most egy ilyet csinaltam meg:

Egy konyvtarban van 165 videofajl, es handbrake-kel atmereteztem, es levettem a minoseget, az audio pedig passthrough (atmasolas).

Laptopon csinaltam, de ha szerveren futtattam volna, akkor van handbrake gui-ban egy olyan opcio, hogy queue->options->export export queue.

Ami csinal egy queue.json fajlt.

Es utana a handbrake-cli-nek van egy ilyen, hogy --queue-import-file.

 

Ha laptopon csinalod, akkor maradhatsz guin belul. Annyi a lenyeg, hogy beallitod a minoseget, es elmented egy uj presets-nek, es azt allitod be defaultnak.

Hogy az audio passthrough legyen a default azt innen vettem:

https://www.reddit.com/r/handbrake/comments/f2vmnm/audio_passthru_issue…

 

Igy megnyitsz egy fajlt, es alapban minden jo, csak az "Add to queue" gombra kell kattintani. Es utana elinditod a queue-t, vagy kiexportalod es elinditod command line-bol (akar masik gepen).

 

Mondjuk, azt, hogy a fajlok es az enkodolas is szerveren legyen, a beallitas meg egy laptopon, ott lehet, hogy meg annyi bibi van, hogy a fajloknak meg kell lenniuk a laptopon (vagy halozati megosztas), hogy tudja olvasni, mert a queue.json-ba bekerulnek a fajl adatai (audio track lista, minoseg, bitrata, meg csomo ilyen).

 

Eleg nyakatekert egy programlogika, valoszinu francia lehet az eredeti iroja.

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Lusta vagyok utánanézni, de én úgy tudom, hogy a Handbrake az az ffmpeg-et használja default, mivel a Handbrake csak egy GUI frontend, csak arra szolgál, hogy opciókat grafikusan be tudj állítani, és ne kelljen az ffmpeg mögé kézzel kapcsolókat hegeszteni, meg manualt nyálazni. Az se lehetetlen, hogy mencoder-t is be lehet neki drótozni, de hát azt minek. A másik, hogy az ffmpeg saját maga is meghívhat külső encodereket, pl. x264, x265, svt-av1, stb..

Én egyébként az ffmpeg-et mindenféle GUI nélkül használom. Igen, elsőre nehezebb, de egy adott konvertálási feladathoz csak egyszer kell kikísérletezni, megtanulni a kapcsolókat, amit aztán scriptbe is el lehet menteni, és onnan automatizálva több médiafájlra ráereszteni. Így nem kell a rendszerre minden egyes újratelepítéskor mindenféle grafikus bloatokat felrakni, amik állandóan frissülgetnek is. Ennek ellenére elismerem, hogy aki nem olyan IT/tech véna, annak hasznosak ezek a GUI frontendek, mert átlátja mit lehet állítani, kész profilok vannak, és kb. 1-2 kattintásból össze tudja hozni, amit akar. Amit én nem szeretek, azok a windowsos proprietary, one click gányolós encoder/converter szoftverek, és nem a windowsos meg a proprietary rész zavar bennük, hanem elég szarul konvertálnak mindent, hiába egyszerű őket használni, a végeredmény általában borzalom, nem csak az a baj, hogy vízjeleznek, hanem bitrátát, codec-et, konténertípust, stb.-t is alapvetően rosszul állítják be, és az egyszerű használatuk miatt sok felhasználó rácsábul, hogy ezekkel gányoljon. Nem csak ez egyszerűségük miatt, hanem a rommá SEO-zott oldalaik is elsőnek jönnek fel a keresőben, így a laikusok ezeket találják meg. Na, ezeket a Handbrake ffmpeg-gel meg rendes profilokkal bőven veri, mert nem csak hogy multiplatform, meg free open-source, de legalább tisztességesen, gányolásmentesen megcsinálja, amit kell, meg általában normálisan támogatja a többszálú kódolást is.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Rosszul tudod, nem cli előtét, nem direkt az ffmpeget paraméterezi. Használja viszont az ffmpeg függvénykönyvtárait, de nem csak azt, hanem még sok mást (lásd itt). Alapvetően nem szoktam polírozni azokat a GUI-s programokat amiknek a feladataira van bevált cli megoldás, de a handbrake az tényleg elég profin meg van csinálva.
Az ffmpeg meg vitán felül az egyik legjobb tool. Az hogy elsőre nehezebb nem feltétlen igaz, emlékszem még a mencoder paraméterezésére, annál sokszor egyszerűbb az ffmpeg :) szóval az attól függ ki honnan indult.

én fejből úgy csinálnám, hogy

ffmpeg -i $sourcevideo -f srt -i $hunsub -f srt -i $engsub -map 0 -map 1:0 -map 2:0 -c:v copy -c:a copy -c:s srt output.mkv

itt most nem írtam a filteredet, itt egyszerűen copy-ztam a streameket.

azt csinálja h vesz 3 inputfilet, majd az 0. összes streamjét (videó+audiók), az első 0. és a második 0. streamjét egymás után teszi. (bocs a magyartalanság miatt, de érthetőbb átindexelés nélkül azt hiszem)

btw. valahogy lehet filtert állítani, hogy a felirat kezelje rendesen az utf-8-at. talán "-sub_charenc 'UTF-8'"

4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.

Ritkán használom. Először eleresztem ffmpeg -i fájl - így kiírja az összes "streamet" és aztán a map (ha kell beleteszem).
Szerintem, az mkvtoolnix (gui) segítségével a hang és felirat fájlokat utólag is hozzáadhatod, sokkal egyszerűbb mint az ffmpeg -et felparaméterezni.

* Én egy indián vagyok. Minden indián hazudik.