Probleme mit neuer Webcam

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme mit neuer Webcam

    Anzeige
    Hallo,
    da sitze ich nun vor meiner neuen Webcam und schon gibt es Probleme. Kurz vorab: Meine Projekte laufen immer in HD (1920x1080 Pixel), 30 FPS, 44.100 Hz in einem MP4-Container. Jetzt habe ich mir eine neue Webcam zugelegt... eine Logitech C920
    Das Problem bei dieser Cam ist, dass sie die Tonspur nur in 48.000 Hz und das Video ganz normal mit 30 FPS aufzeichnen kann. Alles andere, also mein Gameplay läuft mit 30 FPS und 44.100 Hz. Mein Kommentar wird ebenfalls mit 44.100 Hz aufgezeichnet. Das Problem ist hier die Webcam-Aufnahme: Wenn ich diese in ein Premiere-Projekt (Einstellungen siehe oben) importiere, dann wird die Aufnahme der Facecam am Ende asynchron. Ich hoffe ihr versteht was ich damit sagen will?! :)
    Ich kann den Fehler vorerst nur beheben, indem ich die Facecam-Aufnahme mit 25 FPS und 44.100 Hz in einen MPEG-Container konvertiere. Allerdings geht mir hierbei etwas an Qualiät verloren. Wie kann ich denn das Problem, eurer Meinung nach am besten lösen? Soll ich vielleicht erst alles mit 30 FPS und 48.000 Hz aufnehmen und danach alle Audiospuren downsamplen oder wie würdet ihr das machen? Vielleicht hat ja auch einer von euch die Logitech C920 und kann mir sagen wie man diesen Fehler beheben kann. Ich bedanke mich schon mal im voraus für hilfreiche Antworten! :)

    Beste Grüße,
    Wossi
  • Wenn es denn so klappt, alles mit 48.000Hz aufzunehmen, dass alles synchron bleibt, dann würde ich das wohl so machen. Ist am wenigsten Arbeitsaufwand. Alles andere wäre wohl mit Nachbearbeitung der Webcam-Aufnahme verbunden, und ich persönlich hätte zumindest keine Lust, nach einer Aufnahmesession erst mal die ganzen Webcam-Aufnahmen zu demuxen, umzuwandeln oder sonstwas. :/

    Eine Alternative wäre vielleicht noch (sofern du es nicht schon so machst): Die Webcam mit VirtualDub aufnehmen. Da kannst du ja die FPS und die Samplerate einstellen, soweit ich weiß, und dann sollte das Problem eigentlich nicht mehr auftreten. Theoretisch.

    Sagaras hat da mal ein paar ausführliche Beiträge zum Thema Webcam und VirtualDub geschrieben, eventuell schaust du mal per Suchfunktion nach und probierst es aus.

    //edit
    Hier mal ein paar Links:
    Aufnahme mit Webcam
    VirtualDub Facecam Synchronitäts-Problem
  • Danke Julien!
    Ich kenne mich mit VirtualDub absolut nicht aus und nutze die mitgelieferte Logitech-Software für die facecam-Aufnahmen. Wenn ich alles mit 30 FPS und 48 kHz aufnehme und dann noch die Projekt-Vorlage entsprechend anpasse, kann ich dann im AVISynth-Script angeben, dass ich meine Audio in 44.100 Hz haben möchte oder wo muss ich das dann einstellen?
    Dann wäre ja alles in einem Zug erledigt, also die Aufnahmen soweit bearbeiten, schneiden etc. und dann zum Schluss beim Encoden downsamplen, oder?! :)
  • So, da habe ich meine Mittagspause wieder sinnvoll genutzt! :D
    Ich habe den Code-Snippet in mein Script eingefügt, allerdings bekommen ich den Fehler "no function" oder so. Also werde ich mir da erst irgendwas installieren müssen. Ich habe mal schnell ein Test-Video gemacht: Alles mit 30 FPS und 48 kHz aufgenommen. Die Projekt-Datei habe ich entsprechend angepasst und dann via Frameserver über MeGUI encoded. Wenn ich das Video in Premiere abspiele, dann höre ich ein ganz leichtes "Fiepen"... passiert aber nur in Premiere, nachdem ich es gemuxed hatte, war das "Fiepen" nicht mehr hörbar, obwohl die Audiospur weiterhin mit 48 kHz läuft. Ich habe das Video mal auf Youtube geladen: [LINK ENTFERNT]
    Mir ist bewusst, dass das Downsampling von Youtube nicht gerade optimal ist, aber ich denke die Qualität von Audio und Video ist doch voll in Ordnung, oder was meint der Profi?! :) (Bitte achte nicht auf mein Gequatsche, ist ja wirklich nur ein Test! xD)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Wossi ()

  • Das Audio-Downsampling würde ich aber eher von Premiere erledigen lassen statt von YouTube, so hast du wenigstens noch die lokale Datei zur Überprüfung. ;) Aber beim Test scheint das völlig okay zu sein. Ich bilde mir zwar einen minimalen Versatz von Kommentar und Webcam ein, aber das kann auch Placebo sein - wäre vielleicht bei einer 20-minütigen Folge deutlicher sichtbar.
  • Der SSM würde (wenn ich das Skript mal intensiver kürze) das ganze so machen mit SSRC:

    Quellcode

    1. Track.StereoChannel().SSRC(44100, false).ConvertAudioTo16bit()
    2. Function StereoChannel(clip audio) {
    3. Try { return audio.GetChannel(1,2) }
    4. Catch (Error_2) { Return audio.GetChannel(1,1) }
    5. }


    Hier wird Track (Eine Variable in der sich das geladene Audioclip befindet) zum einen in Stereo umgewandelt, dann in 44100Hz mit SSRC (Dabei soll er nicht schnell arbeiten, sondern mehr auf Qualität achten, darum false) und zu guter letzt wird in 16Bit wieder geändert da die Audiospur durch das SSRC in 24Bit daherkommen würde wieder.
    Die Änderung von 16 -> 24 -> 16 macht hier an der Audiospur nix schlimmes eigentlich, da die Spur schon vorher ja 16 Bit war.

    Sprich 8 -> 24 -> 16 würde somit auch nix weiter geschehen. Merken würde man es erst von 24 -> 24 -> 16.

    Bei diesem Skript wird am Ausgang eine Audiospur mit den Werten 16Bit, 44100Hz, Stereo erzeugt.

    Wichtig ist eigentlich das du ledeglich nur Stereo oder Monospuren verwendest.
    Bei der Stereofunktion oben im Skript wirst du keine Freude mit haben wenn du echte 5.1 oder 7.1 Audioaufnahmen machst. Denn die Stereofunktion würde dir höstens nur die ersten beiden Spuren liefern max.

    Die Monotonfunktion würde so aussehen:

    Quellcode

    1. Function MonoChannel(clip audio) {
    2. Try { return Mixaudio(audio.GetChannel(1),audio.GetChannel(2)) }
    3. Catch (Error_1) { Return audio.GetChannel(1) }
    4. }


    Diese würde nur die ersten beiden Kanäle in Mono umwandeln indem die ersten beiden Kanäle gemischt werden, sollten diese existieren. Ansonsten gibt er nur ein Kanal raus. Sollte bei Monospuren angewandt werden wie Mikrofon.

    Audio kannste laden wie du willst. Vorzugsweise und ohne Plugin wären WAV Datein anzuraten die du dann mit WAVSource ladest.

    Quellcode

    1. Track = WAVSource("Audio.wav")


    Track dient als Variable hier. Also könnteste den ersten Teil den ich am anfang gepostet habe hier gleich dran fügen.


    Als Ausgabe erhälst du dann ein Videoleeres Skript das nur Audio beherbergt. Virtual Dub und MeGUI müssten dir dann sagen das das Video nur Audio hat und eine entsprechende Meldung ausgeben von wegen "no video" oder "only audio" irgendwas in der Richtung. Dann kannste das ganze entsprechend als WAV oder als FLAC konvertieren lassen.
  • @Julien: Danke, aber wie bekomme ich in Premiere ein Downsampling?
    @Sagaras: Danke für die ausführliche Erklärung. Ich möchte mein Video nur in Stereo wiedergeben, nicht mit 5.1 oder 7.1 :D
    Ich habe ein fertiges Script, welches ich immer benutze und in MeGUI lade. Das werde ich nachher mal hier posten und dann schauen wir noch einmal, wie ich was, wo eintragen muss. ;) Also brauche ich jetzt nichts mehr installieren oder?!
  • Julien schrieb:

    Wossi schrieb:

    @Julien: Danke, aber wie bekomme ich in Premiere ein Downsampling?

    Sequenz mit 48kHz erstellen, beim Exportieren allerdings 44.1kHz angeben. ;)


    Hä? :D
    Die Projekt-Frequenz liegt bei 48 kHz... aber ich kann beim Export nichts mehr einstellen, da ich das Projekt über einen Frameserver sende. Muss ich das dann beim Frameserver einstellen oder stehe ich gerade etwas auf der Leitung?! :D
  • Wossi schrieb:

    Ich habe ein fertiges Script, welches ich immer benutze und in MeGUI lade. Das werde ich nachher mal hier posten und dann schauen wir noch einmal, wie ich was, wo eintragen muss. Also brauche ich jetzt nichts mehr installieren oder?!


    Nein, du brauchst nicht mehr. Sofern die Quelle mit AVISource oder WAVSource geladen wird, brauchst du keinen zusätzlichen externen Filter nutzen.

    Wenn du AVISource nutzt müsste es so ungefähr aussehen z.B.:

    Quellcode

    1. Video = AVISource("Test.avi").AssumeFPS(25, 1)
    2. Audio = Video.StereoChannel().SSRC(44100, false).ConvertAudioTo16bit()
    3. AudioDub(Video.KillAudio(), Audio)
    4. Function StereoChannel(clip audio) {
    5. Try { return audio.GetChannel(1,2) }
    6. Catch (Error_2) { Return audio.GetChannel(1,1) }
    7. }


    Fertig. Damit hast du in AVISynth die Audiospur in Hertzzahl, Bitzahl und in Stereo geändert. Das ganze kannst du natürlich auch alles entsprechend anpassen wie du willst. Die Monotonfunktion haste ja auch und bräuchtest nur wechseln.

    Könnteste gleich mit MeGUI encodieren z.B. Oder mit VDub halt die Audiospur entsprechend der Einstellungen im Skript als WAV exportieren lassen. Oder oder oder.

    Kannst aber den Skript weiterspinnen und dein Gamevideo einbinden wo deine Cam drauf sitzt mit Overlay und die Audiospuren von Game und Mikro mischen lassen. Würde auch gehen. Kannst auch schneiden etc pp.
    Das musst du aber alles entscheiden ^^
  • Danke Dir! :)
    Dann werde ich das mal so versuchen und mich bei Problemen wieder melden oder falls es geklappt hat. Schneiden, Overlay, Synchronisation etc. mache ich alles mit Premiere, dass ist mir lieber als irgendein Code zu schreiben... was ich sowieso schon den ganzen Tag mache, da ist so ein Schnittprogramm wie Premiere, genau das richtige nach dem Feierabend! :D

    ~edit:
    Ah, Julien hatte Recht! Ich kann die Sampling-Rate doch im Premiere einstellen, hab's gefunden! ;)
    Aber nochmal zum Script:

    Quellcode

    1. Video = AVISource("C:\Users\Wossi\Desktop\Sequenz.avi", audio=true).AssumeFPS(30.00).ConvertToYV12()
    2. Audio = Video.StereoChannel().SSRC(44100, false).ConvertAudioTo16bit()
    3. AudioDub(Video.KillAudio(), Audio)
    4. Function StereoChannel(clip audio) {
    5. Try { return audio.GetChannel(1,2) }
    6. Catch (Error_2) { Return audio.GetChannel(1,1) }
    7. }

    So sieht mein Script jetzt aus. Allerdings bekomme ich den Fehler, dass "SSRC" keine Funktion ist. Was mache ich denn falsch?! :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Wossi ()

  • Na wie lautet denn die Fehlermeldung?

    Bei mir gibs mit diesem Skript keine Probleme. Ich kenne jedoch auch nicht deine Fehlermedung dazu.

    Zeig mir einfach mal die Fehlermeldung dazu.

    Sofern du kein AVISynth Anno Domini Mauerfall 89 hast sollte das eigentlich gehen. Selbst mit der 2.58 Version von AVISynth.
  • An die genaue Fehlermeldung kann ich mich nicht erinnern, da stand etwas mit "SSRC is not a function". Ich kann ja nochmal nachschauen und dann poste ich einen Screenshot.

    @Julien: Du hattest Recht! Wahrscheinlich hast Du schon bei dem Testvideo eine Asynchronität festgestellt. Ich habe gestern Abend nochmal eine Testaufnahme gemacht, die etwas über 13 Minuten lang war. Als ich die Webcam-Aufnahme in Premiere importiert hatte, konnte man nach den ersten 5 Minuten eine leichte Asynchronität feststellen... nach 10 Minuten wurde das dann immer schlimmer. Wie kann das sein? Ich benutze in den Webcam-Einstellungen 1080p, 30 FPS und 48 kHz und das selbe auch in den Projekt-Einstellungen. Die Webcam-Aufnahme selbst läuft im VLC Player ganz normal, nur in Premiere ist sie asynchron. Ich blicke da nicht ganz durch. ||
  • Wossi schrieb:

    @Julien: Du hattest Recht! Wahrscheinlich hast Du schon bei dem Testvideo eine Asynchronität festgestellt. Ich habe gestern Abend nochmal eine Testaufnahme gemacht, die etwas über 13 Minuten lang war. Als ich die Webcam-Aufnahme in Premiere importiert hatte, konnte man nach den ersten 5 Minuten eine leichte Asynchronität feststellen... nach 10 Minuten wurde das dann immer schlimmer. Wie kann das sein? Ich benutze in den Webcam-Einstellungen 1080p, 30 FPS und 48 kHz und das selbe auch in den Projekt-Einstellungen. Die Webcam-Aufnahme selbst läuft im VLC Player ganz normal, nur in Premiere ist sie asynchron. Ich blicke da nicht ganz durch.

    Ich tippe mal darauf, dass die Webcam nicht konstant 30 FPS kann, sondern entweder nur 29.97 FPS, was die grandiose Software dann auf 30 FPS aufrundet, oder aber sie produziert tatsächlich eine der größten Geißeln der Videobearbeitungsprogramme: Variable Framerate. :cursing: Eine Mediainfo verrät da mehr.

    Ich habe gesehen, dass es bei deiner Aufnahme ziemlich dunkel war - mach doch mal spaßeshalber einen Test bei mehr Beleuchtung. Ich meine mich zu erinnern, dass eine Logitech-Webcam bei Dunkelheit nur murksige VFR produziert und bei Helligkeit dann sauber arbeitet. Wäre einen Versuch wert.
  • Danke Julien! :D
    Ich habe hier eine frische Aufnahme aus der aktuellen Folge und zeige Dir mal die Media-Info, vielleicht kannst Du ja was damit anfangen?! ;)

    Quellcode

    1. General
    2. Complete name : E:\Docs\Wossi LPs\The Forest\Part 020\Video 2.mp4
    3. Format : MPEG-4
    4. Format profile : Base Media
    5. Codec ID : isom
    6. File size : 1.17 GiB
    7. Duration : 27mn 28s
    8. Overall bit rate mode : Variable
    9. Overall bit rate : 6 104 Kbps
    10. Writing application : Lavf52.64.2
    11. Video
    12. ID : 1
    13. Format : AVC
    14. Format/Info : Advanced Video Codec
    15. Format profile : Baseline@L4.0
    16. Format settings, CABAC : No
    17. Format settings, ReFrames : 1 frame
    18. Codec ID : avc1
    19. Codec ID/Info : Advanced Video Coding
    20. Duration : 27mn 27s
    21. Bit rate mode : Constant
    22. Bit rate : 6 000 Kbps
    23. Width : 1 920 pixels
    24. Height : 1 080 pixels
    25. Display aspect ratio : 16:9
    26. Frame rate : 30.000 fps
    27. Standard : Component
    28. Color space : YUV
    29. Chroma subsampling : 4:2:0
    30. Bit depth : 8 bits
    31. Scan type : Progressive
    32. Bits/(Pixel*Frame) : 0.096
    33. Stream size : 1.15 GiB (98%)
    34. Audio
    35. ID : 2
    36. Format : AAC
    37. Format/Info : Advanced Audio Codec
    38. Format profile : LC
    39. Codec ID : 40
    40. Duration : 27mn 28s
    41. Bit rate mode : Variable
    42. Bit rate : 99.7 Kbps
    43. Channel count : 2 channels
    44. Original Channel count : 1 channel
    45. Channel positions : Front: C
    46. Sampling rate : 48.0 KHz
    47. Compression mode : Lossy
    48. Stream size : 19.6 MiB (2%)
    Alles anzeigen


    Im VLC Player läuft die Aufnahme völlig normal...
  • @Wossi
    Mediainfo der Webcamaufnahme posten. Man braucht doch immer eine Referenz zum Vergleich. Vllt ist schon bei der Webcamaufnahme etwas nicht identisch mit der Gameaufnahme das dies verursacht.

    Und dann wollteste auch noch mal die Fehlermeldung posten zu SSRC.


    Ich kann dir auch mal die Zusammenführung von Gameaufnahme und Webcamaufnahme zeigen über AVISynth. Dann kann man nämich direkt in MeGUI das ganze encoden lassen.

    Quellcode

    1. #LoadPlugin("D:\MeGUI\Tools\FFMS\FFMS2.DLL")
    2. #Settings für den Nutzer
    3. Game = "Game.mp4"
    4. Facecam = "Webcam.avi"
    5. Anfangs_frame=10 #Sagt an um wieviel Frames die Facecamaufnahme nach links verschoben wird
    6. Game_Lautstaerke=0.3 #0.5 = Normal, 0.0 = Stumm, 1.0 = laut
    7. Facecam_Lautstaerke=0.5
    8. Facecam_Transparenz = 0.7
    9. #Ladesequenz
    10. FFIndex(Game)
    11. Game = AudioDub(FFVideoSource(Game, threads=1), FFAudioSource(Game)).ChangeFPS(30, 1).Spline64Resize(1920, 1080).StereoChannel().SSRC(44100).ConvertAudioTo16bit()
    12. Facecam = AVISource(Facecam, true).ChangeFPS(30, 1).Spline64Resize(266, 240).StereoChannel().SSRC(44100).ConvertAudioTo16bit().Trim(Anfangs_frame, Game.framecount)
    13. #Prozess
    14. Overlay(Game.KillAudio, Facecam.KillAudio, x = Game.width - Facecam.width - 50, y = 50, opacity = Facecam_Transparenz)
    15. AudioDub(MixAudio(Game, Facecam, Game_Lautstaerke, Facecam_Lautstaerke))
    16. #Funktionen
    17. Function StereoChannel(clip audio) {
    18. Try { return audio.GetChannel(1,2) }
    19. Catch (Error_2) { Return audio.GetChannel(1,1) }
    20. }
    Alles anzeigen


    Dies ist jetzt für eine 16:9 Auflösung geeicht mit einer 4:3 Webcamaufnahme. Resizewerte kannste aber ändern zu Game und Webcam. Momentan 1080p im jetzigen Skript oben.
    Das Gamevideo wird via FFMS2 geladen. Dieses Plugin ist bei MeGUI enthalten. Der Pfad zum Plugin muss oben deinen FFMS2 Plugin Pfad enthalten.

    Beide Videos werden auf 30 FPS gechanged und die Audiospuren werden via Stereofunktion und SSRC geeicht und gemixt.
    Die Position der Webcam wird im Abschnitt Prozess festgelegt und kann jederzeit geändert werden.

    Man könnte auch externe Audiospuren hinzuladen wenn man das möchte. z.B. eine gerade verarbeitete Mikrofonspur wo noch mal via Entrauschfilter nachbearbeitet wurde.

    Könnte man jederzeit ergänzen.

    MP4 ala AVC Streams immer via FFMS2. FFIndex für die absolute Indexierung, FFVideoSource für Video, FFAudioSource für Tonspur

    AVI immer via AVISource

    Und das SSRC muss funktionieren. Ansonsten haste kein AVISynth bei dir installiert.