Forum > Developers > Verzoek aan developers HD Resync tool (idee uitgelegd)
|
|
Pagina 1 van de 2
|
|
Auteur |
Bericht |
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
@Pimmetje & ik hadden het idee dat het vanuit een xvid sub automatisch omgezet kan worden naar een 720p / x264 Sub
Het idee is vrij simpel,
Scan een xvid audio spoor, kijk wat het volume niveau is.
Kijk in de srt naar de timing van de sub, en zoek info (decibelniveau / frequentie (hertz?) op.
Zoek met ongeveer30 sec voor en na de huidige positie (totaal 60 seconden, met mediaan de xvid source) in de 720p op. (met eventueel het verschil van de eerste algehele spoor volume meting)
Pas de timing avn de bron sub aan, en scan de volgende paar regels in de srt.
Volgens mij stelt de code helemaal niet zo veel voor, alleen heb ik het probleem dat ik niet weet hoe ik audio kan scannen.
Vermoedelijk heb je hier al gauw C / C++ voor nodig, en daar heb ik totaal geen ervaring mee.
Maar het zou wel uber-relaxed zijn als dit in de praktijk haalbaar zou zijn! Nooit meer handmatig resycnen, nadeel: je hebt de xvid EN de 720p nodig..
Zijn er hier op het forum dev's aanwezig die weten hoe ze audio (en misschien video) kunnen parsen en dit project op zich willen nemen?
Eventueel wil ik dit zelf doen, maar heb momenteel een ander groots project (zie signature ).
nog even een snelle schets van het proces:
|
|
Developer
Geregistreerd: zondag 21 september 2008
Berichten: 197
|
Het zou fijn zijn als iemand hier inderdaad kennis van heeft. En dan je de xvid en HD file nodig hebt is volgens mij voor de meeste subbers geen probleem want die hebben ze vaak al alle twee
|
|
Geregistreerd: zaterdag 19 april 2008
Berichten: 198
|
Ik betwijfel of je aan de hand van geluidsniveau de subs kan gaan syncen. Je hebt ook nog vele andere geluiden die er tussen zitten.
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
Quote:
Ik betwijfel of je aan de hand van geluidsniveau de subs kan gaan syncen. Je hebt ook nog vele andere geluiden die er tussen zitten. |
Ben ik helemaal met je eens MAAARRRRRRRRRRRRR:
De series zijn beide het zelfde, het is niet zo dat je een sub genereert, het is dat je een sub aanpast zodat ie gelijkloopt met de 720p
*of andersom, das misschien ook wel handig...
|
|
Advertentie |
|
|
|
|
|
Geregistreerd: donderdag 27 maart 2008
Berichten: 945
|
Zou inderdaad wel handig zijn
Maar of het echt mogenlijk is... ?
|
|
Geregistreerd: woensdag 19 november 2008
Berichten: 568
|
Het is mogelijk met Frames !!!!
De start frame van de Xvid in Tijd, en die vergelijken met de X264.
Je maakt een programma, 2 video vensters.
links de Xvid versie, en rechts de X264 versie.
Selecteer bij allebij wanneer de Sub moeten starten en de rest sync vanzelf (frame Based).
Punt is heel belangrijk dat je de FrameCount met berekenen met DIV Framerate van de Video. Anders krijg je scheve tijden.
Eigenlijk wel easy om te maken
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
het moet automatisch gaan ;-)
|
|
Geregistreerd: woensdag 19 november 2008
Berichten: 568
|
Gaat niet lukken.. automatisch.. Op audio afgaan is nooit 100% accuraat.
wel leuk idee Though.
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
devixl:
Gaat niet lukken.. automatisch.. Op audio afgaan is nooit 100% accuraat.
wel leuk idee Though. |
Jawel, want theoretisch, als spraak begint is er een sequentie hertz & decibel, als in xvid dat op 5:43 is, dan zoek je in de 720p tussen 5:13 & 6:23 ofzo, die 5.1 wel downmixen naar 2.0
De cap is bijna altijd zelfde bron dus voor de HDTV releases zou het moeten kunnen.
|
|
Geregistreerd: woensdag 19 november 2008
Berichten: 568
|
Dan zou je een algoritme ervoor moeten verzinnen, en zodra er een match is in de frequentie, op dat punt het verschil in tijd overnemen.
Wordt een flinke klus dan.
Je kan peaklevels makkelijk opvangen, en deze converteren naar een algoritme.
Maar dan nog vraag ik me af, het accurate ervan.
Ik zou dan eerder kiezen voro 2 video's, 2 klikken voor wanneer de sub moet beginnen in beide video's + 1x convert knop.
Semi - automatisch zou ik zeggen.
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
devixl:
Dan zou je een algoritme ervoor moeten verzinnen, en zodra er een match is in de frequentie, op dat punt het verschil in tijd overnemen.
Wordt een flinke klus dan.
Je kan peaklevels makkelijk opvangen, en deze converteren naar een algoritme.
Maar dan nog vraag ik me af, het accurate ervan.
Ik zou dan eerder kiezen voro 2 video's, 2 klikken voor wanneer de sub moet beginnen in beide video's + 1x convert knop.
Semi - automatisch zou ik zeggen. |
true!
want als de hz + decibel in 1 sec totaal gelijk zijn aan de bron, dan weet je dat die daar moet beginnen
framerate is hetzelfde op de 720p ovlgens mij
het is niet makkelijk, maar volgens mij wel haalbaar
|
|
Geregistreerd: zaterdag 29 november 2008
Berichten: 1511
|
hmm.. ik wens jullie in ieder geval succes..
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
Seba28:
hmm.. ik wens jullie in ieder geval succes.. |
Das lief, maar een suggestie was meer welkom geweest
Zelf te weinig ervaring, en momenteel ander project lopen. Wil het best een schot geven, maar dat duurt dan nog ff... Misschien was hier iemand die zoiets had van "doe ik wel even..." ~
|
|
Management
Geregistreerd: vrijdag 22 september 2006
Berichten: 2973
|
Je zou - theoretisch - iets van audiomatching kunnen doen ja. Kijken welk geluid er met "zin 1" is is bij de xvid en dat vervolgens bij de mkv. Dat per zin toepassen en you're good to go.
Andere optie is video-frame vergelijking. Als een bepaald % van de pixels overeen komt is het dezelfde shot. Wel zwaarder/lastig schat ik zo.
Sypher wijzigde dit bericht op 16-01-2010 om 19:06, totaal 1 keer bewerkt
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
Sypher:
Je zou - theoretisch - iets van audiomatching kunnen doen ja. Kijken welk geluid er met "zin 1" is is bij de xvid en dat vervolgens bij de mkv. Dat per zin toepassen en you're good to go.
Andere optie is video-frame vergelijking. Als een bepaald % van de pixels overeen komt is het dezelfde shot. Wel zwaarder/lastig schat ik zo. |
Je hebt zeker gelijk,
Maar bij animatie blijf beeld vaak even gelijk voor 2 a 3 sec, soms zelfs meer zoals bij fam. guy
|
|
Geregistreerd: vrijdag 24 oktober 2008
Berichten: 3845
|
Ik heb hier een tijdje terug over zitten denken. Heb alleen geen tijd gehad om het uit te werken. Mijn aanpak was:
Een bandpass filter gebruiken op beide files. Deze filter zou ingesteld moeten worden op het menselijk stem geluid. Hier kan een redelijk fijn frequentie bereik gekozen worden omdat we niet opzoek zijn om een karaoke tape te maken maar om stem geluiden te identificeren.
Elke keer als de bandpass triggered zet je een tijdsmarkering neer.
Voor beide files heb je nu een aantal punten. Voor efficiëntie (en simpel maken van het algoritme) kunnen we deze punten samen voegen tot reeksen. Als punten dicht genoeg bij elkaar liggen kunnen we ze samen voegen).
Er zal nu in de twee reeksen naar overeenkomstige markers gezocht moeten worden. In een bereik van een seconde of 10 zal je een aantal punten moeten vinden waar de verhoudingen tussen de reeksen gelijk moet zijn. (Bijv Reeks 1: 1, 2, 1 seconde tussenpoos. Reeks 2: 2,4,2 seconde tussenpoos. Dit voorbeeld is sterk overdreven.)
Deze markers zullen je nu een tijd verschuiving opleveren tussen de 2 files. Ook de reclame blokken zullen gevonden worden. (Voornamelijk vervelend bij Grey's Anatomy. De meeste andere series hebben tussen de xvid en de x264 dezelfde source).
Deze tijds verschuiving kan dan gebruikt worden (met een interpolatie functie) om voor elke individuele sub regel een hersync uit te voeren.
Dit zou volgens mij volledig automatisch moeten kunnen. De stem reeksen kunnen ook gebruikt worden door de vertaler om de sync te controleren. Als je de regels van de bron sub met hun toon tijd plot zal die redelijk overeen moeten komen met de stem plot.
Er zijn op codeproject.com aardig wat voorbeelden te vinden hoe een (base)bandpass filter te schrijven. Dit kan in C#. De directX api is hiervoor goed te gebruiken.
http://www.codeproject.com/KB/audio-video/cswavplayfx.aspx
http://wiki.answers.com/Q/What_is_baseband_filter
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
yodax79:
Ik heb hier een tijdje terug over zitten denken. Heb alleen geen tijd gehad om het uit te werken. Mijn aanpak was:
Een bandpass filter gebruiken op beide files. Deze filter zou ingesteld moeten worden op het menselijk stem geluid. Hier kan een redelijk fijn frequentie bereik gekozen worden omdat we niet opzoek zijn om een karaoke tape te maken maar om stem geluiden te identificeren.
Elke keer als de bandpass triggered zet je een tijdsmarkering neer.
Voor beide files heb je nu een aantal punten. Voor efficiëntie (en simpel maken van het algoritme) kunnen we deze punten samen voegen tot reeksen. Als punten dicht genoeg bij elkaar liggen kunnen we ze samen voegen).
Er zal nu in de twee reeksen naar overeenkomstige markers gezocht moeten worden. In een bereik van een seconde of 10 zal je een aantal punten moeten vinden waar de verhoudingen tussen de reeksen gelijk moet zijn. (Bijv Reeks 1: 1, 2, 1 seconde tussenpoos. Reeks 2: 2,4,2 seconde tussenpoos. Dit voorbeeld is sterk overdreven.)
Deze markers zullen je nu een tijd verschuiving opleveren tussen de 2 files. Ook de reclame blokken zullen gevonden worden. (Voornamelijk vervelend bij Grey's Anatomy. De meeste andere series hebben tussen de xvid en de x264 dezelfde source).
Deze tijds verschuiving kan dan gebruikt worden (met een interpolatie functie) om voor elke individuele sub regel een hersync uit te voeren.
Dit zou volgens mij volledig automatisch moeten kunnen. De stem reeksen kunnen ook gebruikt worden door de vertaler om de sync te controleren. Als je de regels van de bron sub met hun toon tijd plot zal die redelijk overeen moeten komen met de stem plot.
Er zijn op codeproject.com aardig wat voorbeelden te vinden hoe een (base)bandpass filter te schrijven. Dit kan in C#. De directX api is hiervoor goed te gebruiken.
http://www.codeproject.com/KB/audio-video/cswavplayfx.aspx
http://wiki.answers.com/Q/What_is_baseband_filter
|
thanks voor je input! heb daar zeker wel wat aan.
Echter je begrijpt me iets verkeerd denk ik, het gaat niet om het maken van tijdcodes in de srt, maar ze te vergelijken. (Gaat alleen om re-sync van xvid nara 720p)
Maar je input is zeker helder, ik kan dat verhoudingen stuk dan over slaan.
Je komt over als een genie, dus ik geloof je meteen
Zodra huidige project af is ga ik me hier eens in storten, super interessante materie dit
|
|
Geregistreerd: vrijdag 24 oktober 2008
Berichten: 3845
|
Ik ben geen genie hoor!
Ik denk echter dat je de verhoudingen wel nodig hebt voor een resync. Je moet de verhoudingen zien als een vingerafdruk voor een bepaalde plek in elk geluidsspoor. Elke vingerafdruk komt maar op 1 plek voor in elk spoorgebied. Door deze afdrukken naast elkaar te leggen zou je de verschuiving moeten kunnen bepalen voor elke plek (de rest door interpolatie) tussen de 2 sporen. Dit verschuivingsbestand kan je dan toepassen op de te syncen sub.
Het is niet in alle gevallen voldoende om bij een sync een paar sec erbij op te tellen. De reclame blokken zorgen vaak ook voor een verspringing. Dit probleem heb je niet door "mijn vingerafdrukken".
Zoals ik het begrijp wil je een xvid sub syncen naar een x264 film bestand, toch?
btw: de punten die gemaakt zijn over het type geluidspoor (5.1 of 2.0) zou bij mijn methode geen probleem zijn; of je pakt het center kanaal (waar de stemmen zitten) of je laat directx een downmix doen)
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
yodax79:
Ik ben geen genie hoor!
Ik denk echter dat je de verhoudingen wel nodig hebt voor een resync. Je moet de verhoudingen zien als een vingerafdruk voor een bepaalde plek in elk geluidsspoor. Elke vingerafdruk komt maar op 1 plek voor in elk spoorgebied. Door deze afdrukken naast elkaar te leggen zou je de verschuiving moeten kunnen bepalen voor elke plek (de rest door interpolatie) tussen de 2 sporen. Dit verschuivingsbestand kan je dan toepassen op de te syncen sub.
Het is niet in alle gevallen voldoende om bij een sync een paar sec erbij op te tellen. De reclame blokken zorgen vaak ook voor een verspringing. Dit probleem heb je niet door "mijn vingerafdrukken".
Zoals ik het begrijp wil je een xvid sub syncen naar een x264 film bestand, toch?
btw: de punten die gemaakt zijn over het type geluidspoor (5.1 of 2.0) zou bij mijn methode geen probleem zijn; of je pakt het center kanaal (waar de stemmen zitten) of je laat directx een downmix doen) |
Klopt! dat was idd ook de bedoeling, een patroon laten opzoeken.
En idd, een downmix zaten Pimmetje en ik ook al aan te denken, het center kanaal had ik ook al genoemd, maar denk dat downmixen betrouwbaarder is.
Ben echt benieuwd of dit te schoppen valt
|
|
Geregistreerd: vrijdag 24 oktober 2008
Berichten: 3845
|
Ik denk zeker dat het mogelijk is. Simpel qua concept, maar de uitvoering...
Ik heb geen ervaring met DirectX. Ik heb wel gelezen dat de C# implementatie vrij goed is. Ook schijnt het maken van een geluidsfilter vrij goed te doen te zijn. Ik had een tijdje terug een goed voorbeeld gevonden van een grafische equalizer op codeproject.com. Als je die heb is het eigenlijk een kwestie van de equalizer loggen.
Het probleem is denk het ontbreken van de kennis bij mij. Het uitzoeken daarvan is natuurlijk wel een leuk project
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx deze bedoel je volgens mij.
Haha, kennis gedeelt bij deze... o ja, ik heb hier ook (nog) geen kaas van gegeten
to be continued...
|
|
Developer
Geregistreerd: zondag 21 september 2008
Berichten: 197
|
Dit moet ik na de tentamens ook maar eens gaan bekijken
|
|
Geregistreerd: zondag 11 november 2007
Berichten: 701
|
Ik was eigenlijk ook al een tijdje aan het nadenken over dit
Lijkt me zeker mogelijk, maar één opmerking! Volgens mij zal dit het beste gaan via het vergelijken van beelden en tijd (miss ook makelijker om te implementeren dan met geluid?)
|
|
Geregistreerd: dinsdag 12 mei 2009
Berichten: 192
|
Waarez:
Ik was eigenlijk ook al een tijdje aan het nadenken over dit
Lijkt me zeker mogelijk, maar één opmerking! Volgens mij zal dit het beste gaan via het vergelijken van beelden en tijd (miss ook makelijker om te implementeren dan met geluid?) |
@Waarez: zoals DjRedmar al zei, er zijn series die vaak vele frames achter elkaar hetzelfde hebben (denk aan animatie)... Op geluid afgaan zou dan het beste idee zijn.
In principe zou je, als je eenmaal de eerste 2 of 3 items hebt gedaan, een heel pakket kunnen overslaan en bijv. elke 50 regels checken of de nieuwe sync nog klopt. Zo ja, weer 50 regels verder. Zo nee: volledig van voor af aan beginnen en regel voor regel syncen, omdat dan blijkbaar ergens iets ontbreekt of is toegevoegd.
Of zie ik dit verkeerd?
|
|
Geregistreerd: donderdag 22 november 2007
Berichten: 1400
|
Dit zie je goed,
Het gaat idd voornamelijk om de commercial braeks
|
|
|
|
Je hebt geen rechten om een reactie te plaatsen of het topic is gesloten
|
|