Sida 4 av 5
Re: Detektera och dämpa reklamljud i TV
Postat: 25 januari 2014, 21:55:35
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.

Re: Detektera och dämpa reklamljud i TV
Postat: 25 januari 2014, 23:07:43
av Nerre
Nej, reklaminslag brukar inte vara textade.
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 18:03:59
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å.
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 19:01:48
av blueint
13,9 Msps lär behövas för video förutsatt att man prickar in pixlarna exakt.
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 19:38:49
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?
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 20:17:54
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.
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 20:56:21
av hanzibal
Ok, då vet jag det men hur kom du då fram till 13,9Msps tidigare?
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 22:22:00
av PeterH
Det finns ju också program som inte har textning...
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 23:20:08
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
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 23:26:33
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.
Re: Detektera och dämpa reklamljud i TV
Postat: 26 januari 2014, 23:51:59
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.
Re: Detektera och dämpa reklamljud i TV
Postat: 27 januari 2014, 00:56:52
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)
Re: Detektera och dämpa reklamljud i TV
Postat: 27 januari 2014, 06:56:10
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).
Re: Detektera och dämpa reklamljud i TV
Postat: 27 januari 2014, 18:14:12
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?
Re: Detektera och dämpa reklamljud i TV
Postat: 27 januari 2014, 21:40:41
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

)