Multimedia 2.604 Themen, 14.707 Beiträge

ffmpeg position der Stream änderungen bestimmen?

robinx99 / 13 Antworten / Flachansicht Nickles

Hallo,

ich schneide hier ein Video (DVB Stream Channel 4 HD) und mir ist folgendes bei ffmpeg aufgefallen. Es gibt regelmäßig die Meldung:

Input stream #0:1 frame changed from rate:48000 fmt:fltp ch:6 chl:5.1(side) to rate:48000 fmt:fltp ch:2 chl:stereo

Also der Audio Stream hat sich von 5.1 auf Stereo verändert, natürlich gibt es auch die andere Meldung das der Audio Stream von Stereo wieder zu 5.1 wird. Dummerweise gibt es nirgendwo eine Positionsangabe. Da die Änderung des Streams genau bei der Werbung auftritt (Film 5.1, Werbung Stereo) frage ich mich ob man das nicht für ein Automatisches Schneiden nutzen könnte (mit einem kleinen Bash Script oder vielleicht ein bisschen Java) nur dafür bräuchte ich halt die Informationen wo genau der Audio Stream sich ändert, gibt es da eine Möglichkeit das man sich das Anzeigen lassen kann?

gruß

robinx99

bei Antwort benachrichtigen
robinx99 Solaris96 „Film//Riss ? //staun Ist mir noch nicht klar was du ...“
Optionen

 

'Film//Riss' ? //staun\\

ja das nutzt intern Comskip und dort steht auf der Webseite http://www.kaashoek.com/comskip/

 

The h.264 and WTV version is still in beta test and available for donators.

 

Ist mir noch nicht klar was du anstrebst. Werbeblöcke=Stereo kicken? Generell für kommende vids ein script erstellen das Start/Stop-Funktion für <> 5.1-Bereich handled?

Im Prinzip ja mein Problem ist das ich noch keinen weg gefunden habe die mir die Stelle der Änderung zuverlässig mitteilt. Wenn ich die Datei zur wav audio Datei umwandelt dann kann ich den ffmpeg begrenzt nutzen

 

so habe ich auch immer unterschiedliche zahlen bei den unterschiedlichen durchläufen mal sieht es so aus

 

size= 99136kB time=00:08:48.86 bitrate=1535.6kbits/s
Input stream #0:1 frame changed from rate:48000 fmt:fltp ch:2 chl:stereo to rate:48000 fmt:fltp ch:6 chl:5.1(side) size= 103712kB time=00:09:13.18 bitrate=1535.9kbits/s

 mal so

 

 

size= 76768kB time=00:06:49.47 bitrate=1535.8kbits/s
Input stream #0:1 frame changed from rate:48000 fmt:fltp ch:2 chl:stereo to rate:48000 fmt:fltp ch:6 chl:5.1(side) size= 109760kB time=00:09:45.53 bitrate=1535.6kbits/s

aus dem ersten Durchlauf kann ich erkennen das die Änderung irgendwo zwischen 00:08:48.86 und 00:09:13.18 stattfindet beim zweiten sehe ich das die Änderung zwischen 00:06:49.47 und 00:09:45.53 stattfindet. Aber wo genau die Änderung ist sehe ich so nicht bisher ist mein Ansatz einfach die erste zahl zu nehmen 10 Sekunden abzuziehen und dann 10 Sekunden audio zur wav umzuwandeln und schauen ob es eine Änderung gab, dann 10.1 Sekunden umwandeln und wieder schauen dann 10.2 Sekunden u.s.w. bis ich die Änderung finde und die zahl zurück zugeben. Da ich so ffmpeg jeweils in Zehntel Sekunden schritten aufrufe und somit auch mal 2 oder mehr Minuten überbrücke endet das schnell mal in 1200 Aufrufen von ffmpeg was logischerweise sehr lange dauert.

kommentieren wo nötig, konvertiere/speichere ihn txt2html, kleine Schriftgröße, benutze die HTML-Funktion im Forum-Editor,  table...

ok da ich zu doof bin das richtig hier im Forum zu Posten packe ich es mal auf pastebin was ich bisher habe http://pastebin.com/35idS89J

wirklich guter Code ist das nicht und auch nicht kommentiert ist halt eher auf die schnelle entstanden.

Jedenfall generiert mir der Javacode dort oben dann Folgendes: http://pastebin.com/gAAEC5tF

was ich dann halt ausführen kann und ich bekomme eine Video Datei ohne Werbung. Klar bis jetzt ist der Großteil in dem Javacode Hardcoded (und die 'Double' sollte ich vielleicht auch durch etwas anderes ersetzen) aber irgendwie störe ich mich momentan an der extremen Laufzeit (ich glaube es war fast eine Halbe Stunde)

 

gruß

robinx99

bei Antwort benachrichtigen