Videoaufnahmen ohne Bild

  • Ich habe mir einen Pi 3B+ mit Hifiberry DAC+ Pro unter LibreELEC Leia als Medienzentrale gebaut.
    Als PVR-Server nutze ich tvheadend mit dem aktuellen DVB-S-Tuner von Sundtek. Es funktioniert soweit alles prima, abgesehen davon, dass bei den meisten Aufnahmeversuchen von SD-Sendern (Private) bei den Filmen das Bild fehlt. Die öffentlich-rechtlichen HD-Sender funktionieren immer einwandfrei.
    Gibt es hierfür eine Erklärung bzw. Abhilfe dagegen?

    Hier ist mal ein Tvheadend Log einer solchen Aufnahme mit fehlendem Bild:
    2019-10-19 10:34:25.857 dvr: entry 92eab10dee960575abb4bb073b0bdd29 "Time-2019-10-19_10:35" on "ProSieben" starting at 2019-10-19 10:34:30, scheduled for recording by "192.168.178.27"
    2019-10-19 10:34:30.003 dvr: "Time-2019-10-19_10:35" on "ProSieben" recorder starting
    2019-10-19 10:34:30.005 dvr: About to set stop timer for "Time-2019-10-19_10:35" on "ProSieben" at start 1571474100 and original stop 1571474400 and overall stop at 1571474400
    2019-10-19 10:34:30.007 mpegts: 12544.75H in DVB-S Netzwerk - tuning on Sundtek DVB-S/S2 (VIII) #0 : DVB-S #0
    2019-10-19 10:34:31.416 subscription: 020F: "DVR: Time-2019-10-19_10:35" subscribing on channel "ProSieben", weight: 300, adapter: "Sundtek DVB-S/S2 (VIII) #0 : DVB-S #0", network: "DVB-S Netzwerk", mux: "12544.75H", provider: "ProSiebenSat.1", service: "ProSieben", profile="pass"
    2019-10-19 10:35:00.007 dvr: Unable to change directory permissions to "775" for "/var/media/Medien/Filme/Time-2019-10-19_10_35" (keeping "755")
    2019-10-19 10:35:00.007 dvr: /var/media/Medien/Filme/Time-2019-10-19_10_35/Time-2019-10-19_10_35-ProSieben2019-10-1910-35.ts from adapter: "Sundtek DVB-S/S2 (VIII) #0 : DVB-S #0", network: "DVB-S Netzwerk", mux: "12544.75H", provider: "ProSiebenSat.1", service: "ProSieben"
    2019-10-19 10:35:00.007 dvr: # type lang resolution aspect ratio sample rate channels
    2019-10-19 10:35:00.007 dvr: 1 TELETEXT
    2019-10-19 10:35:00.007 dvr: 2 MPEG2VIDEO 720x576 ?
    2019-10-19 10:35:00.007 dvr: 3 MPEG2AUDIO ger ? ?
    2019-10-19 10:35:00.007 dvr: 4 AC3 ger ? ?
    2019-10-19 10:35:00.007 dvr: 5 TEXTSUB ger
    2019-10-19 10:40:00.000 subscription: 020F: "DVR: Time-2019-10-19_10:35" unsubscribing from "ProSieben"
    2019-10-19 10:40:00.090 dvr: "Time-2019-10-19_10:35" on "ProSieben": End of program: Completed OK

  • Unter Windows10 kann ich mir die Filme übrigens mit dem VLC-Player anschauen, unter Linux MINT nicht.

    Wie äussert sich das denn eigentlich? Startet der Film nicht oder bleibt das Bild schwarz?

    Ich weis nicht ob VLC unter Linux das System FFMPEG nutzt.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • @nepo Scheinbar will er die aufnahmen ja nicht auf dem rPi abspielen, sondern auf einem Rechner mit Linux Mint.

    Ich habe mir einen Pi 3B+ mit Hifiberry DAC+ Pro unter LibreELEC Leia als Medienzentrale gebaut.

    So wie ich ihn verstanden habe, ist der Rpi die Medienzentrale und möchte sie auch dort abspielen. Mit Windows und LinuxMint wurde nur getestet, ob die Videos überhaupt funktionieren. Das Grundproblem ist aber überall gleich - hat man die notwendige Decodersoftware, also Codec und Player. Im Fall von LinuxMint hast du ihn ja schon einen möglichen Lösungsansatz gezeigt, für den Rpi würde ich empfehlen, die Lizenz zu kaufen - 3 Euro kann man investieren.

    Tschau nepo

  • Genau, ich möchte die Filme eigentlich (eigentlich die Aufnahmen als .ts) auf dem Pi anschauen und habe unter Windows und LinuxMint nur getestet.
    Die Lizenz für MPEG2 habe ich gekauft und freigeschaltet.
    Das Merkwürdige an der Sache ist, dass die Aufnahmen manchmal laufen (sehr selten) aber meistens nicht. Meine HD-Aufnahmen aus dem öffentlich-rechtlichen Programm laufen immer.

    Ich denke, es muss etwas mit SD bzw. HD zu tun haben. Aufnahmen aus den dritten Programmen verhalten sich genauso wie die von den Privatsendern.
    Live-TV funktioniert übrigens bei ALLEN Sendern absolut einwandfrei.

  • Genau, ich möchte die Filme eigentlich (eigentlich die Aufnahmen als .ts) auf dem Pi anschauen und habe unter Windows und LinuxMint nur getestet.
    Die Lizenz für MPEG2 habe ich gekauft und freigeschaltet.
    Das Merkwürdige an der Sache ist, dass die Aufnahmen manchmal laufen (sehr selten) aber meistens nicht. Meine HD-Aufnahmen aus dem öffentlich-rechtlichen Programm laufen immer.

    Nimm mal eine Aufnahme, die nicht funktioniert, und muxe sie lokal am Linux Mint Rechner mit ffmpeg um.

    Code
    ffmpeg -i Aufnahme.ts  -c:v copy -c:a copy test.mkv

    Und probiere sie dann nochmal.

  • Hallo monarc99,

    das konvertierte Video läuft. ffmpeg konvertiert bei mir allerdings nur ca. die ersten 2 Minuten des Videos.

    Das ist die Ausgabe von ffmpeg:
    ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
    built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
    configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
    WARNING: library configuration mismatch
    avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
    libavutil 54. 31.100 / 54. 31.100
    libavcodec 56. 60.100 / 56. 60.100
    libavformat 56. 40.101 / 56. 40.101
    libavdevice 56. 4.100 / 56. 4.100
    libavfilter 5. 40.101 / 5. 40.101
    libavresample 2. 1. 0 / 2. 1. 0
    libswscale 3. 1.101 / 3. 1.101
    libswresample 1. 2.101 / 1. 2.101
    libpostproc 53. 3.100 / 53. 3.100
    [mp3 @ 0xcd7580] Header missing
    Last message repeated 5 times
    [mpeg2video @ 0xcd86a0] Invalid frame dimensions 0x0.
    [mp3 @ 0xcd7580] Header missing
    Last message repeated 120 times
    [mpegts @ 0xcd4160] decoding for stream 0 failed
    [mpegts @ 0xcd4160] PES packet size mismatch
    Last message repeated 2 times
    [mpegts @ 0xcd4160] Could not find codec parameters for stream 0 (Audio: mp3, 0 channels, s16p): unspecified frame size
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, mpegts, from 'Django.ts':
    Duration: 00:02:32.68, start: 30209.883278, bitrate: 4462 kb/s
    Program 17501
    Metadata:
    service_name : ?ProSieben
    service_provider: ?ProSiebenSat.1
    No Program
    Stream #0:0[0x21]: Audio: mp3, 0 channels, s16p
    Stream #0:1[0x1ff]: Video: mpeg2video (Main), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:2[0x200]: Audio: mp2, 48000 Hz, stereo, s16p, 192 kb/s
    Stream #0:3[0x203]: Audio: ac3, 48000 Hz, stereo, fltp, 384 kb/s
    File 'test.mkv' already exists. Overwrite ? [y/N] y
    [matroska @ 0xcdb7c0] Codec for stream 0 does not use global headers but container format requires global headers
    [matroska @ 0xcdb7c0] Codec for stream 1 does not use global headers but container format requires global headers
    Output #0, matroska, to 'test.mkv':
    Metadata:
    encoder : Lavf56.40.101
    Stream #0:0: Video: mpeg2video (mpg2 / 0x3267706D), yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, max. 15000 kb/s, 25 fps, 25 tbr, 1k tbn, 90k tbc
    Stream #0:1: Audio: mp2 (P[0][0][0] / 0x0050), 48000 Hz, stereo, 192 kb/s
    Stream mapping:
    Stream #0:1 -> #0:0 (copy)
    Stream #0:2 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    [mpegts @ 0xcd4160] PES packet size mismatch
    frame= 3806 fps=0.0 q=-1.0 Lsize= 62610kB time=00:02:32.64 bitrate=3360.2kbits/s
    video:58950kB audio:3577kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.133098%

  • Ok, wegen den 2 min: ffmpeg erkennt wohl auch nur 2min. Zeigt tvheadend Fehler bei der Aufnahme im Webinterface an?

    Wegen dem Abspielproblem: sieht man oben an den anderen Meldungen. Der Stream geht nicht mit einem Keyframe los und das bringt die Decoder durcheinander. Den einen mehr als andere, deshalb spielt der eine Decoder die Datei, der andere Decoder nicht.

    Dazu muss man etwas Theorie wissen. Videostreams bestehen aus GOPs (Group of Pictures). Also z.B. 250 Bilder (bei 25fps = 10 sec) bilden eine Einheit. Mit einem Keyframe an Anfang, und dann 249 Bilder, die von dem Keyframe abhängen. Geht das Keyframe verloren, sind die restlichen 249 Bilder fast nur noch Datenmüll.
    Bei einer Aufnahme von TVheadend sagt du ihm, dass er den Stream ab einer bestimmten Zeitpunkt aufnehmen und auf Platte speichern soll. Ist zu dem Zeitpunkt gerade ein Keyframe (oder nicht weit danach) im Stream (und somit am Anfang der Aufzeichnung), spielt ein Decoder die Datei in der Regel bei dir. Befindet sich am Anfang der Aufnahmedatei nur "Datenmüll" eines zerschnittenen GOPs, steigen viele Decoder aus.
    Einige Decoder hören sofort auf (z.B. nvdec killt mir mpv mit einen assert und killt mir den ganzen Player gleich mit), andere Decoder (z.B. der mpeg2 Software Decoder von ffmpeg) arbeiten sich solange durch den Müll, bis sie wieder ein Keyframe finden. Und spielen dann die Datei.

    Was du machen kannst:

    1) Wenn du Fehler in den Aufnahmen hast (zeigt tvheadend im Webinterface bei jeder Aufnahme an), diese möglichst beseitigen. Bessere Kabel, Satellit besser einstellen, usw ...
    2) alle Decoder probieren, welcher am besten mit fehlerbehafteten Dateien klar kommt
    (ich verwende z.B. mpv und da habe ich ihm verboten, die HW Beschleunigung (Linux/Nvidia Karte: vdpau/nvdec) bei Mpeg2 Dateien zu verwenden. Der Software mpeg2 Decoder von ffmpeg ist deutlich robuster.
    3)Wenn die Aufnahme zuviele Fehler enthält, ts-doctor probieren. Oder z.B. mit Handbrake neu kodieren, handbrake eignet sich gut um Aufnahmen zu retten.

    Und du kannst mal probieren, ob folgender ffmpeg Befehl mehr als 2min bearbeitet (kodiert aber und kopiert den Stream nicht nur, dauert also):

    Code
    ffmpeg -loglevel verbose -y -err_detect ignore_err -i Aufnahme.ts -map 0:v -map 0:1 -vsync 1 -dts_delta_threshold 100 -map_metadata 0 -threads 0 test.mkv

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!