Detektera och dämpa reklamljud i TV

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Detektera och dämpa reklamljud i TV

Inlägg av hanzibal »

Äsch, jag bara larvade mig - blir ändå kul att experimentera.

EDIT: Via din länk snubblade jag över den här som ju också är rätt kul - den extraherar undertexterna ur kompositvideo och reagerar på vissa nyckelord som du angett - när den träffar på ett visst nyckelord så fimpar den ljudet i 30 sekunder men vore nog mer till nytta om man gör tvärtom, dvs inget ljud förrän de börjar prata om något som du tycker är intressant.

http://hackaday.com/2011/08/16/automati ... r-tv-time/

Förresten ja, är reklaminslag textade?...

EDIT2: Kan ej extrahera undertexter generellt utan gäller bara textinfo som bäddats in i signalen (s.k. closed captioning) och tror inte man har det generellt i Sverige. Dock kan man ju försöka detektera kanalloggan mha manicken som i stort sett bara är en LM1881 för att plocka ut h/v-synken.

Bild
Nerre
Inlägg: 27308
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Detektera och dämpa reklamljud i TV

Inlägg av Nerre »

Nej, reklaminslag brukar inte vara textade.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Detektera och dämpa reklamljud i TV

Inlägg av hanzibal »

Kunde ju detektera avsaknaden av textning men det skulle bli rejäl fördröjning och troligen missuppfattningar ganska ofta då "textpauser" ju även förekommer naturligt.

OT: Tänkte först hur sjutton hinner en Arduino med men såg sen att upplösningen på overlayen bara är 128x96 och sen mixar in den, därför blir den alltid blir vit. Dock såg jag att de också gjort lite object tracking men där skrapar man nog ihop info ur flera bildrutor i serie och krävs ju inte samma A/D-hastighet. Bara H-synken är väl ~30kHz för 625x576 eller kanske bara hälften pga interlace men ändå.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Detektera och dämpa reklamljud i TV

Inlägg av blueint »

13,9 Msps lär behövas för video förutsatt att man prickar in pixlarna exakt.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Detektera och dämpa reklamljud i TV

Inlägg av hanzibal »

Antar att du räknar på 576x480 50Hz och det fixar nog ingen av Arduino-varianterna men om man på ngt smart sätt sprider ut samplingarna över flera bildrutor bör man ju komma ner i hastighet.

EDIT: Tror jag blandar ihop olika skärmupplösningar, är det 640x480 som är standard PAL 4:3 eller?
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Detektera och dämpa reklamljud i TV

Inlägg av blueint »

För PAL är det 720x576 medan det med korrekt aspektförhållande och sorgekant blir 768x576. Tanken är isåfall att sampla en bild, jämföra, sampla nästa bild osv. Kanske kan man gå ner till 3,5 Msps för denna tillämpning. Om en stor del kornighet är acceptabel.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Detektera och dämpa reklamljud i TV

Inlägg av hanzibal »

Ok, då vet jag det men hur kom du då fram till 13,9Msps tidigare?
Användarvisningsbild
PeterH
Inlägg: 8641
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: Detektera och dämpa reklamljud i TV

Inlägg av PeterH »

Det finns ju också program som inte har textning...
ronnylov
Inlägg: 987
Blev medlem: 23 februari 2012, 12:06:19
Ort: Borås

Re: Detektera och dämpa reklamljud i TV

Inlägg av ronnylov »

Jag testade comskip en gång för att rensa mina inspelningar med TV-kortet från reklam.
http://www.kaashoek.com/comskip/

Det gick att tweaka ganska bra för vissa kanaler såsom TV4 som ganska konsekvent tar bort logon vid reklamavbrotten. Men det kör även med andra algoritmer, bland annat analys av ljudet. Filmer som kör brevlådeformat (inte lika vanligt nu längre med 16:9 TV) kan man detektera när svarta ramen försvinner. Förr (några år sedan) kördes reklamen ofta i 4:3 och filmerna i 16:9 och då kunde man detektera aspect-ratio-flaggan i MPEG2-strömmen. Numera sänds även reklamen i 16:9 så det går inte längre.

Jag använder programvaran tvheadend på linux för att spela in. Där finns en kryssruta "skip commercials" som jag hade aktiverad ett tag och visst det funkade ofta men inte alltid så jag inaktiverade den funktionen. Det är enkelt att klippa bort reklamen manuellt i redan inspelade program men såklart svårare att fixa i realtid.

En kompressor-funktion för ljudet skulle förstås kunna lösa problemet som denna tråd handlar om. Den behöver inte sänka ljudet vid reklam, den kan lika gärna förstärka ljudet vid icke-reklam, huvudsaken ljudnivån blir densamma. Är det för högt så reglerar man det med volymkontrollen. Risken är pumpande ljud. Ett tyst parti och bakgrundsljuden förstärks (är det riktigt tyst så förstärks en massa brus). Visst man kan väl sätta ett intervall man reglerar inom så att man inte förstärker allt för mycket vid svaga ljud. Sedan när starkare ljud kommer så kan det bli alltför högt innan ljudnivån sänks igen. Reklamradion kör med hårt komprimerat ljud, där kan man höra partier i musik som är tänkta att spelas svagt lika starkt som de partierna som ska höras starkt. Ganska jobbigt att lyssna på mer än korta stunder tycker jag.

Minns att även jag hade en idé om att analysera ljudet. Ofta kommer reklaminslagen om och om igen och ofta med sponsormeddellanden i början och slutet av reklampausen "filmen presenteras av ...". Finns algoritmer för att känna igen exempelvis vissa musikstycken. YouTube kör nog någon algoritm för att jaga fatt på viss musik i uppladdade filmer så de kan ta bort copyrightat material. En ljudsekvens kan få ett fingeravtryck som sedan kan kännas igen. Samma sak går att göra med video.
Här är ett exempel på sådant: http://www.phash.org/

Blev aldrig något av med min idé men jag funderade lite på det och vädrade funderingarna lite här:
http://forum.doom9.org/showthread.php?t=159079
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Detektera och dämpa reklamljud i TV

Inlägg av blueint »

Varje horisontal aktiv videolinje tar 51,95 µs och det behövs 720 pixlar för varje linje. Så tiden per pixel blir 0,072153 µs. Det går 13 859 480 perioder av 0,072153 µs per sekund.

1 / (51,95 µs / 720 pixel) = 13,9 Msps

En knivighet är förstås att sampla på varje pixelmitt istället för att råka hamna i skarven mellan två stycken. Linjetiden kan variera osv. Sådant här finns beskrivet i teknisk info för Bt848.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Detektera och dämpa reklamljud i TV

Inlägg av hanzibal »

Ok, då är jag med. Trodde du helt enkelt körde antalet pixlar multiplicerat med 50ggr/sekund, d.v.s. 576 * 480 * 50 = 13,8Msps vilket ju hamnar rätt nära fast mest pga att jag använde den felaktiga upplösningen 576x480 :-)

@ronnylov: Tackar för din utförliga input, verkar finnas en hel del läsvärt där - får bli nattlektyr.

Har nu lekt lite med att halvera gain automatiskt när ljudsidnalen överstiger ca 75% av maxnivån - musiken låter ganska knasig, precis som om trummisen missar kaggen varenda gång. Sen knäpper det i lurarna också men det beror bara på att jag inte ändrar gain omedelbart istället för att vänta på nollpassage.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Detektera och dämpa reklamljud i TV

Inlägg av blueint »

Kikade på diskussionen hos doom9:
http://forum.doom9.org/showthread.php?t=159079

Där håller jag inte med om att det skulle ta för lång tid att jämföra bilder. Kan man mpeg-4 komprimera i realtid som de flesta maskiner i numera gör lätt så borde det knappast vara ett problem att jämföra en hash av vart 5:e bildruta med en databas.

Problemet att man saknar alla reklamsnuttar lär snabbt lösa sig och en del kanaler har ju dessutom lagt sig till med vanan att använda en specifik reklamvideo som start och stop. Där skulle bildhash göra susen. Bild lär dessutom ge en större precision än ljudigenkänning.

Någon som har koll på hur ofta nya reklamsnuttar tillkommer? och hur länge de visas? på ett ungefär.

En hel del intressanta förslag här: mythtv.org/wiki/Commercial detection in the UK

Denna publikation som fanns tillgänglig 2011 verkar intressant:
www.ic.uff.br/iwssip2010/Proceedings/nav/papers/paper_126.pdf
Någon som kan få fatt på den igen? (borta nu)
ronnylov
Inlägg: 987
Blev medlem: 23 februari 2012, 12:06:19
Ort: Borås

Re: Detektera och dämpa reklamljud i TV

Inlägg av ronnylov »

Digital video (standardupplöst som DVD) brukar ha 13,5 MHz samplingsfrekvens.
Man får inte glömma tiden strålen är släckt samt synkpuls mellan varje videolinje.
http://sv.wikipedia.org/wiki/Phase_Alternating_Line

Den aktiva tiden för en linje är alltså 51,95 us och under den tiden ritas 702 pixlar.
Detta blir ungefär 13,5 MHz pixelfrekvens.

Men ska man sampla detta så ska man väl ha minst dubbla samplingsfrekvensen enligt Nyqvist?
Å andra sidan varför hålla på sampla, in med ett DVB-kort i datorn och läs ut digital videosignal istället.
Altenativt ett analogt TV-kort om man kör analog-tv (kanske via analog kabel-tv).
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Detektera och dämpa reklamljud i TV

Inlägg av hanzibal »

Eftersom man synkar på horizontal retrace så bör man väl kunna sampla "mitt på" varje pixel med skaplig precision, typ ladda en timer vid h-synk och sedan sampla synkront.

Fast TS på doom9 talade ju om plocka bort reklam från inspelningar och finns väl ingen anledning att göra det i realtid?
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Detektera och dämpa reklamljud i TV

Inlägg av blueint »

I databladet för Bt848 på sidan 25 finns "ultralock" beskrivet som visar hur linjerna kan variera med flera µs i längd och hur man kan hantera det:
hotbox.ru: Bt848/848A/849A Single-Chip Video Capture for PCI

Något som dock är frågetecken är hur stabilt linjelängden är i förhållande till horizontalsynkens negativa flank osv.

Där kan man också läsa som kuriosa att maximal tid för latens innan FIFO överfylls med 33 MHz PCI bus för 768 x 576 RGB24 @ 25 fps är 11 µs. (sidan 56)

(För de som gillar filterporr kan kika på sidan 29 - 35 ;))
Skriv svar