Kirjoittaja Aihe: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset [ratkaistu osittain]  (Luettu 6207 kertaa)

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Kyselenpä taas paremmin näitä multimedia-asioita ymmärtäviltä…

Huomasin äskettäin, että Kodi sinänsä a) osaa toistaa Ylen TV-tallenteet tekstityksineen mutta b) ei enää löydä tekstityksiä, jos tallenne on leikattu ProjectX:llä (missä yhteydessä tekstitykset ensin irrotetaan spuunmuxilla ja sitten lisätään lopulliseen videoon uudestaan spumuxilla).

Kiusallisesti huomasin asian vasta leikeltyäni turhia alkuja ja loppuja lukemattomista tallenteista, enkä tietenkään ole säästänyt alkuperäisiä tiedostoja. RasPin LibreELEC-jakelu toimii sinänsä hienona mediatoistimena mutta tekstityksettömyys on varsin ongelmallista :P

(Olen tosin löytänyt jo kiertotien: irrotetaan spuunmuxilla tekstitykset videosta PNG-kuviksi, muunnetaan ImageMagickin convert-ohjelmalla PNG-kuvien värit mahdollisimman hyväkontrastisiksi for-silmukassa, OCR:ätään kuvat tekstitiedostoiksi Tesseractilla toisessa for-silmukassa, yhdistetään pienellä Python-skriptillä erilliset tekstitiedostot isoksi .srt-tiedostoksi ja korjataan lopuksi siitä virheet. Toimii mutta turhan paljon työtä, kun tekstitys kumminkin on jo videotiedostossa.)

Eli kysymys: Osaako joku sanoa, voiko tekstitykset spumuxata videoon niin, että Kodi ne huomaa?  Kokeilin jo -s-valitsimen eri arvoja, mutta se hyväksyy vain numeeriset arvot, kun taas alkuperäisessä leikkaamattomassa videossa tekstitykset ovat selvästi kielten nimillä. Vai voisiko spumuxatun videon vielä jatkokäsitellä jollain toisella ohjelmalla niin, että tekstitysvirtojen tunnuksista tulisi Kodinkin ymmärtämiä?
« Viimeksi muokattu: 03.01.19 - klo:20.18 kirjoittanut SuperOscar »
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #1 : 03.01.19 - klo:17.37 »
(Olen tosin löytänyt jo kiertotien: irrotetaan spuunmuxilla tekstitykset videosta PNG-kuviksi, muunnetaan ImageMagickin convert-ohjelmalla PNG-kuvien värit mahdollisimman hyväkontrastisiksi for-silmukassa, OCR:ätään kuvat tekstitiedostoiksi Tesseractilla toisessa for-silmukassa, yhdistetään pienellä Python-skriptillä erilliset tekstitiedostot isoksi .srt-tiedostoksi ja korjataan lopuksi siitä virheet. Toimii mutta turhan paljon työtä, kun tekstitys kumminkin on jo videotiedostossa.)

Eli toimit suurin piirtein samoin, kuin itsekin tein tässä säikeessä (kts. liite.) ?
https://forum.ubuntu-fi.org/index.php?topic=51035.msg391612#msg391612

Itselleni kyseinen tarkkuus riittää, vaikka Ei:n tilalle saattaakin tulla Fi, ja jotain muitakin bugeja muunnoksessa tulee...

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #2 : 03.01.19 - klo:18.00 »
Eli kysymys: Osaako joku sanoa, voiko tekstitykset spumuxata videoon niin, että Kodi ne huomaa?  Kokeilin jo -s-valitsimen eri arvoja, mutta se hyväksyy vain numeeriset arvot, kun taas alkuperäisessä leikkaamattomassa videossa tekstitykset ovat selvästi kielten nimillä. Vai voisiko spumuxatun videon vielä jatkokäsitellä jollain toisella ohjelmalla niin, että tekstitysvirtojen tunnuksista tulisi Kodinkin ymmärtämiä?

Alkuperäisessä tallenteessa tekstitys on DVB-SUB-muodossa. ProjectX & spunmux & spumux -käsittely muuntaa ne DVD-tekstitykseksi. Yksi vaihtoehto olisi muuntaa tekstitys ffmpegillä takaisin DVB-muotoon. Pelkkä uudelleenmuxaaminenkin saattaa riittää.

Koodia: [Valitse]
ffmpeg -i lähde.mpg -c:v copy -c:a copy -c:s copy kohde.mkv
Koodia: [Valitse]
ffmpeg -canvas_size 704x576 -i lähde.mpg -c:v copy -c:a copy -c:s dvbsub kohde.mkv(Tässä voi kokeilla myös ts:ää kohdeformaattina, jos mkv ei toimi kunnolla. canvas_sizen asettaminen saattaa olla tarpeetonta.)

Kokonaisuudessaan tällainen käsittelyprosessi on aika monimutkainen pelkän leikkauksen vuoksi. Itse ehkä käyttäisin ennemmin ohjelmaa, joka leikkaa TS-tallenteen sellaisenaan ja säilyttää alkuperäisen DVB-tekstityksen, jolloin myös tekstityksen laatu säilyy hyvänä.


Bittikarttatekstityksen tapauksessa OCR on kyllä mahdollista saada toimimaan sataprosenttisesti (ellei tekstityksessä ole heikosta signaalista johtuvia virheitä), mutta se vaatinee hieman syvällisempää perehtymistä Tesseractiin tai johonkin paremmin tarkoitukseen sopivaan OCR-moottoriin.
« Viimeksi muokattu: 03.01.19 - klo:18.03 kirjoittanut nm »

jarmala

  • Käyttäjä
  • Viestejä: 774
    • Profiili
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #3 : 03.01.19 - klo:18.03 »
Huomasin äskettäin, että Kodi sinänsä a) osaa toistaa Ylen TV-tallenteet tekstityksineen mutta b) ei enää löydä tekstityksiä, jos tallenne on leikattu ProjectX:llä (missä yhteydessä tekstitykset ensin irrotetaan spuunmuxilla ja sitten lisätään lopulliseen videoon uudestaan spumuxilla).

Minä olen nyt päätynyt käyttämään ffmpeg:iä. Alla esim. Fanny & Alexanderin koodaus Kaffeinen tallentamasta m2t-tiedostosta:

Koodia: [Valitse]
ffmpeg -probesize 110M -analyzeduration 160M -i fa2.m2t -ss 0:02:31 -to 01:17:25 -map 0:1 -map 0:2 -map 0:6 -c:v libx265 -crf 28 -preset ultrafast -c:a aac -b:a 128k -c:s copy fa2.mkv
- probesize ja analyseduration tarvittiin siksi, että suomenkielinen dvb-tekstitys streamissä 0:6 alkoi vasta runsaan parin minuutin kuluttua tallenteen alusta (yleensä tämä ei ole ongelma)

- lähdetiedosto on fa2.m2t

- turhat alku- ja loppupätkät on leikattu pois: ss ja to

- map valitsee, mitkä streamit otetaan koodaukseen mukaan: tässä tapauksessa 0:1 oli video, 0:2 ruotsinkielinen audio ja 0:6 suomenkielinen dvb-tekstitys

- video koodataan libx265:llä, jolle parametrit -crf 28 -preset ultrafast

- audio koodataan faac:lla, jolle parametri -b:a 128k

- dvb-tekstitys vaan kopioidaan mukaan omana vuonaan

- lopputulos tuupataan mkv-pakettiin

Tämä siis toimii minulla erinomaisesti, koska tulin hankkineeksi vanhan telkkarini pariksi Aliexpressistä halvan Android TV -boksin, joka osaa liittyä ethernetillä pc:ni leffakansioon ja toistaa sieltä myös x265:llä koodatut leffat. Kuva menee boksista HDMI:tä pitkin telkkariin.

« Viimeksi muokattu: 03.01.19 - klo:18.05 kirjoittanut jarmala »
Ubuntu 18.04 LTS, Gnome Flashback Metacity, Xeon E3-1245 V2, 8 GB
Ubuntu 22.04 LTS, KDE Plasma, Celeron N5105, 8 GB

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #4 : 03.01.19 - klo:19.18 »
Itselleni kyseinen tarkkuus riittää, vaikka Ei:n tilalle saattaakin tulla Fi, ja jotain muitakin bugeja muunnoksessa tulee...

Kunpa se vain jäisikin siihen, mutta ensinnäkin lähetyksen laatu on vaihdellut ja toisekseen Tesseract menettää pelin välillä aivan totaalisesti. Tämä on esimerkiksi olevinaan repla Lannistumaton Luke -elokuvasta:

Lainaus
llun.-
DllUQUSGQÖllSÖll

Jos tiedät, mitä tuossa sanotaan, olet aika fakiiri  ;D (Tässä on käynyt niin, että PNG-kuva on negatiivi: valkoiset ääriviivakirjaimet mustalla taustalla ja sisuksella. Tesseract ei osaa ääriviivakirjaimia lukea ollenkaan. Tekstissä sanottiin: ”Kyllä, pomo.<rivinvaihto> – Miksi se ei ole poissa siitä?”)

Kokonaisuudessaan tällainen käsittelyprosessi on aika monimutkainen pelkän leikkauksen vuoksi. Itse ehkä käyttäisin ennemmin ohjelmaa, joka leikkaa TS-tallenteen sellaisenaan ja säilyttää alkuperäisen DVB-tekstityksen, jolloin myös tekstityksen laatu säilyy hyvänä.

Näinhän se on, mutta niin kuin sanoin, en tiennyt näistä rajoitteista, kun aloin ProjectX:ää tähän käyttää.

Lainaus
vaatinee hieman syvällisempää perehtymistä Tesseractiin tai johonkin paremmin tarkoitukseen sopivaan OCR-moottoriin.

Minulla on kyllä parempikin OCR, ikivanha kräkätty kopio ABBYY FineReader Pro’sta, jota olen ajanut WinXP-virtuaalikoneessa. Siinä ongelma on tallennus: FineReader haluaa väen väkisin tehdä yhden ison tiedoston eikä edes osoita replojen rajoja mitenkään. Tesseractia voi kuitenkin ajaa silmukassa komentoriviltä. ABBYYn Linux-komentoriviohjelma ei viimeksi tarkistaessani ollut ladattavissa, ja muutenkin siinä on tiedostomäärään perustuva käyttörajoitus, mikä tämmöisessä hommassa olisi aivan pöhköä – yhdestä elokuvasta tulee heti luettavaksi toista tuhatta pientä parin rivin tiedostoa!

Täytyy kokeilla noita ffmpeg-loitsuja.

Muoks: Ensimmäinen ffmpeg-loitsu (.mkv-tiedostoksi) antoi virheilmoituksen:

Lainaus
[matroska @ 0x559f7c3d67e0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[matroska @ 0x559f7c3d67e0] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument

.ts-tiedostoksi kopiointi onnistui ja meni vilkkaasti läpi. Kokeillaan mitä Kodi sanoo.
« Viimeksi muokattu: 03.01.19 - klo:19.30 kirjoittanut SuperOscar »
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #5 : 03.01.19 - klo:19.37 »
Kunpa se vain jäisikin siihen, mutta ensinnäkin lähetyksen laatu on vaihdellut ja toisekseen Tesseract menettää pelin välillä aivan totaalisesti. Tämä on esimerkiksi olevinaan repla Lannistumaton Luke -elokuvasta:

Lainaus
llun.-
DllUQUSGQÖllSÖll

Jos tiedät, mitä tuossa sanotaan, olet aika fakiiri  ;D (Tässä on käynyt niin, että PNG-kuva on negatiivi: valkoiset ääriviivakirjaimet mustalla taustalla ja sisuksella. Tesseract ei osaa ääriviivakirjaimia lukea ollenkaan. Tekstissä sanottiin: ”Kyllä, pomo.<rivinvaihto> – Miksi se ei ole poissa siitä?”)

Lähetin privaattia aiheesta.

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #6 : 03.01.19 - klo:20.03 »
ffmpegillä käpälöity .ts-tiedosto toimi sinänsä videona mutta tekstitykset olivat tasan yhtä kateissa kuin ProjectX:n luomasta .mpg:stäkin. (Täsmennetään vielä, että ffmpeg-kokeiluni lähtökohtana oli ProjectX:llä leikattu ja mplexillä koottu .mpg-tiedosto, ei tallennusohjelman alkuperäinen .ts/.mpg.)
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Kodi, ProjectX ja Ylen TV-tallenteiden tekstitykset
« Vastaus #7 : 03.01.19 - klo:20.17 »
No voi p*ll*pensseli, ProjectX:ssähän on myös valittavissa asetus ”1:1 copy”! Silloin ohjelma vain leikkaa alut ja loput eikä käpälöi tiedostoa muuten.

Tämä ratkaisee kaikkien vielä leikkaamattomien tallenteiden ongelmat. Jo leikatut ovat tietysti toinen juttu, koska alkuperäinen tallenne ei ole tallessa ja .mpg-tiedostossa on nyt tekstitykset väärässä eli DVD-muodossa jos oikein nm:n selityksen ymmärsin. Jotta niihin saa minkäänlaisia tekstejä, pitää joko jatkaa .srt-tiedostojen luomista tai yrittää ffmpegillä muuntaa tekstitys muodosta toiseen.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Täältä löytyy uusin versio YLEpremanipulaatiosta...

https://forum.ubuntu-fi.org/index.php?topic=51035.0

... jonka tulos kelpaa itselleni, mutta niille jotka haluavat enemmän säätää, niin kannattaa katsoa tekstityksen tekemisen jälkeen errors.txt-tiedosto, johon on jätetty kääntämättömien rivien tiedot. Sen lisäksi ohjelma poistaa kääntämisessä onnistuneet tiedostot, joten varovaisuutta ohjelman käytössä, ettei tuhoa vääriä tiedostoja.

Ystävällisin terveisin kamara.

Postimies

  • Käyttäjä
  • Viestejä: 2619
    • Profiili
itse olen leikellyt tallenteita vdr-sxfe:llä. Käyttää xinelib kirjastoa ja kaatuilee helposti. ProjectX vaatii javan ja toimiiko HD lähetyksillä. Fanny & Alexander itsellä myös tallennettuna. täytyy kokeilla tuota pitkää  ffmpeg loitsua siihen joskus. isohkoja HD lähetyksiä tekisi mieli joskus pienentää.

jarmala

  • Käyttäjä
  • Viestejä: 774
    • Profiili
ProjectX vaatii javan ja toimiiko HD lähetyksillä. Fanny & Alexander itsellä myös tallennettuna. täytyy kokeilla tuota pitkää  ffmpeg loitsua siihen joskus.

Sikäli, kun olen itse kokeillut ProjectX:ää HD-tallenteisiin, niin en ole päässyt puusta pitkään, joten tein johtopäätöksen, että ProjectX ei toimi HD-tallenteiden kanssa. Jos joku on eri mieltä, kertokoon heti, miten se tehdään...

Ja tosiaan Fanny & Alexander koodaantui tuolla ffmpeg -loitsulla oikein hyvin x265:ksi. Toki alku- ja loppupää pitää säätää kunkin tallenteen mukaan. Itse katsoin alun ja lopun kohdat avidemuxilla. Ohjelmaa ei voinut koodata sillä, koska se ei osaa käsitellä dvb-tekstitystä. Se kuitenkin toimii loistavasti mainoskanavilla mainosten poistamiseksi, koska niiden lähetyksissä on kuvaan poltetut tekstitykset. Ts. Ylen ohjelmat koodataan täällä ffmpegillä x265:ksi ja mainoskanavien ohjelmat taas avidemuxilla.
Ubuntu 18.04 LTS, Gnome Flashback Metacity, Xeon E3-1245 V2, 8 GB
Ubuntu 22.04 LTS, KDE Plasma, Celeron N5105, 8 GB