Kirjoittaja Aihe: Video.ts muunnos video.mp4:ksi, miten?  (Luettu 4829 kertaa)

Illu

  • Käyttäjä
  • Viestejä: 1089
    • Profiili
Video.ts muunnos video.mp4:ksi, miten?
« : 13.06.22 - klo:19.56 »
Olisi tarve muuttaa Yleltä kaapeliverkon kautta digiboksille noudettua tallennetta toiseen muotoon. Video.ts pitäisi muuttaa video.mp4:ksi. Olen kiemurrellut nettiohjeiden paljoudessa, enkä silti ole saanut toivottua tulosta aikaiseksi. Se ei liene kovin erikoinen muunnos. Muunnosta olen yrittänyt saada aikaan ffmpegillä päätteessä. Onnistuisi varmaan Handbrakella, mutta siinä on liikaa muuttujia opiskeltavaksi. Varsinkin DVB-tekstin saaminen mukaan on tökkinyt.

Muunnostarve johtuu siitä, että kotona verkkolevyllä olevan video.ts:n striimaus Android-puhelimeen VLC:llä  ei toimi, vaan ensin joutuu siirtämään koko tiedoston. Sen sijaan video.mp4 on VLC:llä suoraan katsottavissa ilman erikseen latausta. Varsinkin katselu VPN:n yli (kotoa hidas ulospäin) on harmillista touhua.

VLC kertoo eräästä tallenteesta seuraavaa:
Koodia: [Valitse]
Virta 0
Alkup. tunniste (ID): 312
Koodekki: H264 - MPEG-4 AVC (part 10) (h264)
Tyyppi: Video
Video resolution: 1920x1080
Buffer dimensions: 1920x1088
Ruutunopeus: 25
Purettu formaatti:
Orientation: Top left
Color primaries: ITU-R BT.709
Color transfer function: ITU-R BT.709
Color space: ITU-R BT.709 Range
Chroma location: Vasen
Virta 1
Alkup. tunniste (ID): 860
Koodekki: A52 Audio (aka AC3) (a52 )
Kieli: suomi
Tyyppi: Ääni
Kanavat: Stereo
Näytteenottotaajuus: 48000 Hz
Bittejä näytettä kohti: 32
Virta 2
Alkup. tunniste (ID): 2127
Koodekki: DVB Subtitles (dvbs)
Kieli: suomi
Kuvaus: DVB-tekstitys
Tyyppi: Tekstitys
Virta 3
Alkup. tunniste (ID): 2128
Koodekki: DVB Subtitles (dvbs)
Kieli: ruotsi
Kuvaus: DVB-tekstitys
Tyyppi: Tekstitys
Virta 4
Alkup. tunniste (ID): 2150
Koodekki: DVB Subtitles (dvbs)
Kieli: suomi
Kuvaus: DVB-tekstitys: kuulovammaisille
Tyyppi: Tekstitys
Virta 5
Alkup. tunniste (ID): 5102
Koodekki: Teletext (telx)
Kieli: suomi
Kuvaus: Teksti-TV
Tyyppi: Tekstitys

Muokattu 13.6. klo 21.42
« Viimeksi muokattu: 13.06.22 - klo:21.42 kirjoittanut Illu »

nm

  • Käyttäjä
  • Viestejä: 16429
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #1 : 13.06.22 - klo:20.49 »
Yleisradion bittikarttapohjaista DVB-tekstitystä et saa MP4-tiedostoon muuten kuin polttamalla tekstin videoon tai lukemalla tekstityksen OCR:llä tekstimuotoon, jolloin sen saa sisällytettyä mukaan tekstitysraitana. Polttaminen onnistuu ffmpegillä. OCR vaatii skriptausta ja tulos ei ole välttämättä täysin virheetön.

MKV onnistuisi helpommin, mutta en ole kokeillut, osaako FFmpeg jo siirtää DVB-tekstit suoraan MKV-tiedostoon, vai tarvitaanko väliin jokin muunnos. Lisäksi soittimien tuki DVB-teksteille voi olla jokseenkin puutteellista etenkin mobiilipuolella.

Onko alkuperäinen TS-tiedosto tosiaan Areenasta, eikä esimerkiksi DVB-tallenne? En ole havainnut Areenassa tuollaista formaattia.

Illu

  • Käyttäjä
  • Viestejä: 1089
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #2 : 13.06.22 - klo:21.41 »
No nyt hölmöilin. Eihän tuo tallenne Areenalta ole, vaikka se sielläkin on katsottavissa ollut suorana. Kyseessä on enigma2- digiboksin tallenne Ylen lähetyksestä kaapeliverkossa. Korjaan kysymykseni.

Jos tekstien sisällyttäminen mp4-muotoon ei onnistu, niin pitänee pohtia jotain muuta tapaa. En vaan viitsisi asennella puhelimeen erilaisia videon katsomiseen tarkoitettuja ohjelmia, jotta ehkä kenties mahdollisesti joku niistä toimisi halutulla tavalla. VLC on kuitenkin ollut yleensä aika varma tapaus.

Illu

  • Käyttäjä
  • Viestejä: 1089
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #3 : 14.06.22 - klo:09.56 »
Ja vielä lisäys. Kuvaan poltettu teksti ei haittaa lainkaan, päinvastoin. Kuullun ymmärtäminen ei ole ollut vahvimpia puolia, edes joskus paremman kuulon aikana. Lisäksi tallenteeseen poltetun tekstin ymmärtäminen sujuu paremmin myös televisiolla.

nm

  • Käyttäjä
  • Viestejä: 16429
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #4 : 14.06.22 - klo:17.58 »
(A) DVB-tekstityksen sisällyttäminen MKV-tiedostoon sellaisenaan, kopioimalla kaikki video-, ääni- ja tekstitysraidat lähdetiedostosta kohdetiedostoon:

Koodia: [Valitse]
ffmpeg -i video.ts -c copy -map 0 video.mkv
MKV-tiedostojen DVB-tekstiraidat näkyvät VLC:llä vasta versiosta 4.0 lähtien. Sitä ei ole vielä varsinaisesti julkaistu, vaan esiversio on saatavilla Nightly-buildina. Tekstitys ei toimi myöskään VLC:n nykyisellä Android-versiolla.

Androidilla MKV-tiedostojen DVB-tekstit näkyvät ainakin MX Playerillä, ja mahdollisesti mpv-androidilla.


(B) DVB-tekstityksen polttaminen videoon

Tämä edellyttää tekstityksen skaalaamista scale2ref-suodattimella, koska Ylen DVB-tekstitys on HD-videoissakin koossa 720x576. Tekstitys poltetaan overlay-suodattimen avulla, ja lopuksi tekstitetty video pitää pakata uudelleen esimerkiksi x264:llä tai x265:llä. Säiliöksi käy MP4 tai MKV. Videon uudelleenpakkauksen vuoksi muunnos on noin sata kertaa hitaampi kuin vaihtoehdossa A. Toisaalta samalla on mahdollista pakata video alkuperäistä DVB-tallennetta tiiviimmin, jolloin levytilaa kuluu puolet vähemmän. Sopivilla x264:n parametreilla laatu ei juuri heikkene alkuperäiseen videoon verrattuna.

Koodia: [Valitse]
ffmpeg -i video.ts -filter_complex "[0:s:0][0:v]scale2ref[sub][vid];[vid][sub]overlay[v]" -map "[v]" -map 0:a -c:a copy -c:v libx264 -preset veryfast -crf 24  video.mp4
Tekstitysraita valitaan filter_complexin alussa olevalla parametrilla [0:s:0], joka valitsee siis ensimmäisen lähteessä olevan tekstityksen. Toinen raita olisi [0:s:1]. Aloitusviestin tapauksessa suomenkielinen tekstitys on nähtävästi järjestyksessä toinen raita, jolloin sen saisi valittua [0:s:1].

Eri tiedostoissa raidat voivat olla eri järjestyksessä, jolloin tällainen järjestykseen perustuva valinta on pidemmän päälle hankalaa. FFmpeg osaa valita raidan myös kielitunnisteen perusteella, jos se vain on tallenteessa oikein. Sitä voi kokeilla parametrilla [0:s:m:language:fin] tähän tapaan:

Koodia: [Valitse]
ffmpeg -i video.ts -filter_complex "[0:s:m:language:fin][0:v]scale2ref[sub][vid];[vid][sub]overlay[v]" -map "[v]" -map 0:a -c:a copy -c:v libx264 -preset veryfast -crf 24  video.mp4
Lähteet:
https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
https://ffmpeg.org/ffmpeg-filters.html#scale2ref
« Viimeksi muokattu: 14.06.22 - klo:18.20 kirjoittanut nm »

Illu

  • Käyttäjä
  • Viestejä: 1089
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #5 : 14.06.22 - klo:23.51 »
Kiitos nm. Tuossa on nyt purtavaa joksikin aikaa. Androidilla olen VLC:tä käyttänyt, kun se osaa hakea tiedostoja myös sisäverkosta, jota muut kokeilemani ohjelmat eivät ole tehneet.

Tuo toinen tarjoamasi rimpsu antoi lupaavan tuloksen. Kohteena on Tanskalaisen maajussin eräs jakso, jonka nimesin uudestaan. Video pyöri pätkimättä ja teksti oli kohdallaan. Kuva vaan oli välillä "vaakaraidallinen", joku limitysseikka?

Virheilmoitusta kyllä tuli, mielivaltainen pätkä malliksi:
Koodia: [Valitse]
[graph 0 input from stream 0:3 @ 0x557946b24fc0] Changing video frame properties on the fly is not supported by all filters.
[graph 0 input from stream 0:3 @ 0x557946b24fc0] filter context - w: 1920 h: 1080 fmt: 28, incoming frame - w: 720 h: 576 fmt: 28 pts_time: 277.244
[graph 0 input from stream 0:3 @ 0x557946b24fc0] Changing video frame properties on the fly is not supported by all filters.
maajussi.ts: corrupt decoded frame in stream 0
maajussi.ts: corrupt decoded frame in stream 0e=00:04:36.25 bitrate=4319.4kbits/s dup=35 drop=0 speed=0.863x   
[graph 0 input from stream 0:3 @ 0x557946b24fc0] filter context - w: 1920 h: 1080 fmt: 28, incoming frame - w: 720 h: 576 fmt: 28 pts_time: 277.484
[graph 0 input from stream 0:3 @ 0x557946b24fc0] Changing video frame properties on the fly is not supported by all filters.
maajussi.ts: corrupt decoded frame in stream 0e=00:04:36.48 bitrate=4316.0kbits/s dup=35 drop=0 speed=0.862x   
[graph 0 input from stream 0:3 @ 0x557946b24fc0] filter context - w: 1920 h: 1080 fmt: 28, incoming frame - w: 720 h: 576 fmt: 28 pts_time: 277.904
[graph 0 input from stream 0:3 @ 0x557946b24fc0] Changing video frame properties on the fly is not supported by all filters.
maajussi.ts: corrupt decoded frame in stream 0e=00:04:36.76 bitrate=4326.8kbits/s dup=35 drop=0 speed=0.862x   
[graph 0 input from stream 0:3 @ 0x557946b24fc0] filter context - w: 1920 h: 1080 fmt: 28, incoming frame - w: 720 h: 576 fmt: 28 pts_time: 278.364

Kaikenlaisten kokeilujen jälkeen on mieltä kalvanut seikka, ettei digiboksin .ts-tallenne ole aivan "virallinen" ja siinä on jotain alussa(?) olevia tietoja puutteellisina tms. Eri ohjelmat ovat tekstistä herjanneet, ettei sopivaa koodekkia löydy.

nm

  • Käyttäjä
  • Viestejä: 16429
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #6 : 15.06.22 - klo:18.08 »
Tuo toinen tarjoamasi rimpsu antoi lupaavan tuloksen. Kohteena on Tanskalaisen maajussin eräs jakso, jonka nimesin uudestaan. Video pyöri pätkimättä ja teksti oli kohdallaan. Kuva vaan oli välillä "vaakaraidallinen", joku limitysseikka?

Joo, Tanskalainen maajussi lähetetään lomitettuna (interlaced), kuten myös suurin osa uutis- ja ajankohtaisohjelmista ja urheilusta. Dokumentit saattavat olla lomitettua tai progressiivista videota, ja elokuvat ja fiktiiviset sarjat ovat yleensä progressiivisia, koska ne on kuvattu filmikameroilla tai filmikuvausta jäljittelevillä digitaalikameroilla.

Lomituksen voi enkoodata sellaisenaan (-x264opts interlaced=1), mutta Androidissa harva soitin osaa toistaa lomitettua videota kunnolla, vaikka lomituksenpoisto onkin kytkettävissä päälle joissain soittimissa. Paremman lopputuloksen saat poistamalla lomituksen ffmpegillä samalla kun poltat tekstityksen videoon. FFmpegin paras, kohtuullisen nopeasti toimiva lomituksenpoistosuodatin on yadif, jonka voi yhdistää aiempaan suodatinkompleksiin esimerkiksi näin:

Koodia: [Valitse]
fmpeg -i video.ts -filter_complex "[0:v]yadif=1[pvid];[0:s:m:language:fin][pvid]scale2ref[sub][vid];[vid][sub]overlay[v]" -map "[v]" -map 0:a -c:a copy -c:v libx264 -preset veryfast -crf 24  -loglevel error -stats video.mp4

Tämä tuottaa lomitetusta 1080i25-videosta progressiivisen 1080p50-videon. Jos nykivämpi 25p-kuvanopeus riittää, voit käyttää yadif=1 -suodattimen sijaan yadif=0 -suodatinta.


Virheilmoitusta kyllä tuli, mielivaltainen pätkä malliksi:
Koodia: [Valitse]
[graph 0 input from stream 0:3 @ 0x557946b24fc0] Changing video frame properties on the fly is not supported by all filters.
[graph 0 input from stream 0:3 @ 0x557946b24fc0] filter context - w: 1920 h: 1080 fmt: 28, incoming frame - w: 720 h: 576 fmt: 28 pts_time: 277.244
[graph 0 input from stream 0:3 @ 0x557946b24fc0] Changing video frame properties on the fly is not supported by all filters.

Näyttää tosian herjaavan tuota joissain tapauksissa. Liittynee jotenkin scale2refin toimintaan lomitetulla videolla. En keksi varsinaista syytä tai korjausta, mutta tekstitys näyttää joka tapauksessa skaalautuvan oikein, ja lopputulos on muutenkin OK. Nämä herjat saa piiloon logleveliä laskemalla: -loglevel error -stats

Koodia: [Valitse]
maajussi.ts: corrupt decoded frame in stream 0
maajussi.ts: corrupt decoded frame in stream 0e=00:04:36.25 bitrate=4319.4kbits/s dup=35 drop=0 speed=0.863x

Tällaisia ilmoituksia voi tulla, jos tallenteessa on huonosta signaalista tai vastaanotosta johtuvia virheitä. Saattaa ilmentyä pieninä katkoina kuvassa ja äänessä.


Kaikenlaisten kokeilujen jälkeen on mieltä kalvanut seikka, ettei digiboksin .ts-tallenne ole aivan "virallinen" ja siinä on jotain alussa(?) olevia tietoja puutteellisina tms. Eri ohjelmat ovat tekstistä herjanneet, ettei sopivaa koodekkia löydy.

MPEG-TS ja etenkin DVB-tekstitys ei ole tyypillinen formaatti tietokone- ja mobiililaitteissa tai internetissä, joten monilla soittimilla on vaikeuksia niiden kanssa. Se ei välttämättä tarkoita, että tallenteessa olisi sinänsä vikaa.

Illu

  • Käyttäjä
  • Viestejä: 1089
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #7 : 15.06.22 - klo:21.03 »
Kiitos nm neuvoista. Aiemmin mainitsemani rimpsua kokeilin kun aamun herätys koitti. Lenovo T410 4 gigan muistilla ei hoitanut työtä loppuun, vaan tilttasi, kolmellakin kokeilulla, pyytäen sisäänkirjautumista, joka on muuten automaaginen.

Kokeilen tuota uutta ehdotustasi taas auringon noustua, kun läppäri saa askarrella omiaan.

Jos mobiilissa ei toivottu tulos ole oletettu, niin pitänee miettiä jotain muuta ratkaisua. Varsinainen vaihtoehto ei ole kahden enigma2-digiboksin keskinäinen etätyöskentely, mutta ehkä sekin sitten voisi olla se ratkaisu. Nyt kokeilen vielä ensin neuvojasi.

nm

  • Käyttäjä
  • Viestejä: 16429
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #8 : 16.06.22 - klo:00.06 »
Lenovo T410 4 gigan muistilla ei hoitanut työtä loppuun, vaan tilttasi, kolmellakin kokeilulla, pyytäen sisäänkirjautumista, joka on muuten automaaginen.

Kuulostaa siltä, että prosessori ylikuumenee, eli jäähdytys ei toimi kunnolla. Johtuu todennäköisesti pölystä, tai mahdollisesti myös kuivuneesta lämpötahnasta prosessorin ja jäähdyttimen välissä. Kunnollinen puhdistus edellyttää koneen avaamista.

Illu

  • Käyttäjä
  • Viestejä: 1089
    • Profiili
Vs: Video.ts muunnos video.mp4:ksi, miten?
« Vastaus #9 : 16.06.22 - klo:10.43 »
Lenovo T410 4 gigan muistilla ei hoitanut työtä loppuun, vaan tilttasi, kolmellakin kokeilulla, pyytäen sisäänkirjautumista, joka on muuten automaaginen.

Kuulostaa siltä, että prosessori ylikuumenee, eli jäähdytys ei toimi kunnolla. Johtuu todennäköisesti pölystä, tai mahdollisesti myös kuivuneesta lämpötahnasta prosessorin ja jäähdyttimen välissä. Kunnollinen puhdistus edellyttää koneen avaamista.

Todennäköisesti ylikuumenee. Htop näyttää neljällä säikeellä lähes koko ajan 100% kuormaa. Pitänee vaihtaa muunnosongelma ko. koneen avaamiseen. Kelpo läppäri muuten ja Turun Ekotorilla oli useampi tarkastettu 50-65 euron hintaan. Myös T420-malleja.