h00re1337
Posts: 24
Joined: Thu Sep 17, 2015 4:14 pm

Re: SAT-TV Server

Thu Dec 03, 2015 9:59 pm

läuft nun beides. mit vo und ohne. allerdings hab ich probleme mit der auflösung. mit hd_video_size="1024x576" läuft es - mit 1280x720 nur manchmal. ist ganz komisch nachzuvollziehen weil gstreamer da echt pingelig ist :-P

Die streams laufen aber nur unbestimmte Zeit. noch nicht im dauerbetrieb. Nach einiger zeit stürzen sie teilweise so ab das nur noch ein hardreset des Pi's hilft.

habe jetzt nicht die omx aus dem transcoder paket übernommen sondern alles von jessie übernommen.

sd krieg ich übrigens garnicht zum laufen komischerweise obwohl die mpeg lizens drin ist

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Thu Dec 03, 2015 10:30 pm

MPEG SD lief bei mir bereits unter Wheezy; H264 input geht erst mit Jessie (gestreamer-1.0). Der schlimmste bug im omx-plugin ist nur gefixt, es gibt aber immer noch einen memory leak bei der AC3-Dekodierung (am besten MPEG Audio verwenden oder AC3 duschschleusen).

Ansonsten läift bei mir alles sehr stabil über viele Stunden und ich nutze es regelmäßig - aber immer nur mit meiner eigenen mumudvb-Lösung. Wie es mit anderen Servern aussieht, kann ich nicht sagen.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

h00re1337
Posts: 24
Joined: Thu Sep 17, 2015 4:14 pm

Re: SAT-TV Server

Fri Dec 04, 2015 10:02 pm

mpeg audio kann ich ja leider nicht nehmen weil die ganzen steams nur ac3 tonspuren ausgeben (sky)

läuft bei dir unter jessie denn sd transcoding? kannst du das mal testen?

whocares_ido
Posts: 59
Joined: Wed Sep 26, 2012 5:47 pm

Re: SAT-TV Server

Mon Dec 07, 2015 10:19 pm

Ich habe ein kleines Skript geschrieben für diejenigen, die wie ich den Stream einer enigma2 Box transkodieren wollen. Es ist zwar noch nicht komplett so wie ich es haben will, aber man kann es schon verwenden, um sich die korrekten Optionen für http-launch anzeigen zu lassen.

Es werden zunächst 4MB Daten vom Stream heruntergeladen (das dauert etwas) und anschließend mit mediainfo analysiert. Deshalb bitte nicht vergessen, das entsprechende Paket zu installieren:

Code: Select all

sudo apt-get install python-mediainfodll
Hier die Hilfe dazu:

Code: Select all

usage: get_stream_info.py [-h]
                          (--abitrate {32768,65536,131072,196608,262144} | --acopy_max | --acopy_min | --acopy_max_ac3 | --acopy_min_ac3 | --acopy_max_mpg | --acopy_min_mpg | --acopy_no ACOPY_NO)
                          [--vbitrate {393216,458752,524288,655360,786432,917504,1048576,1572864,2097152,3145728,4194304}]
                          [--hdsize {256x144,512x288,768x432,1024x576,1280x720}]
                          [--sdsize {240x192,360x288,480x384,720x576}]
                          [--port PORT] [--path PATH]
                          streamURL

simplifies Raspberry Pi OpenMAX (OMX) transcoding with http-launch

positional arguments:
  streamURL             input MPEG TS stream URL to transcode

optional arguments:
  -h, --help            show this help message and exit
  --abitrate {32768,65536,131072,196608,262144}
                        output bitrate in [bits per second] for transcoded AAC
                        audio stream
  --acopy_max           copy audio stream with highest bitrate
  --acopy_min           copy audio stream with lowest bitrate
  --acopy_max_ac3       copy ac3 audio stream with highest bitrate
  --acopy_min_ac3       copy ac3 audio stream with lowest bitrate
  --acopy_max_mpg       copy mpg audio stream with highest bitrate
  --acopy_min_mpg       copy mpg audio stream with lowest bitrate
  --acopy_no ACOPY_NO   copy audio stream number (first=0)
  --vbitrate {393216,458752,524288,655360,786432,917504,1048576,1572864,2097152,3145728,4194304}
                        output bitrate in [bits per second] for the video
                        stream
  --hdsize {256x144,512x288,768x432,1024x576,1280x720}
                        output resolution for HD input stream
  --sdsize {240x192,360x288,480x384,720x576}
                        output resolution for SD input stream
  --port PORT           TCP port of the output stream
  --path PATH           path to use for the output stream
Hier der Code für das Python Skript:

Code: Select all

#!/usr/bin/python
from __future__ import division
import argparse
import re
import tempfile
import os
import urllib
from MediaInfoDLL import MediaInfo, Stream


class AVStreamContainer(object):
    def __init__(self, vstreams=[], astreams=[]):
        self.vstreams = vstreams
        self.astreams = astreams

    def get_a(self, codec=None, get_max=True):
        bitrates = []
        for astream in self.astreams:
            if (codec is not None) and (astream.codec.find(codec) != -1):
                continue
            bitrates.append(int(astream.bitrate))

        if get_max:
            target_rate = max(bitrates)
        else:
            target_rate = min(bitrates)

        for i, astream in enumerate(self.astreams):
            if (codec is not None) and (astream.codec.find(codec) != -1):
                continue
            if astream.bitrate == target_rate:
                return self.astreams[i]
        return None


class AudioStream(object):
    def __init__(self, pid, codec, bitrate):
        self.pid = pid
        self.codec = codec
        self.bitrate = bitrate
    def __repr__(self):
        return "<%s(id=0x%x,codec=%s,bitrate=%i)>"%(self.__class__.__name__,self.pid,self.codec,self.bitrate)


class VideoStream(object):
    def __init__(self, pid, codec, framerate, width, height):
        self.pid = pid
        self.codec = codec
        self.framerate = framerate
        self.width = width
        self.height = height
    def __repr__(self):
        return "<%s(id=0x%x,codec=%s,framerate=%f,width=%i,height=%i)>"%(self.__class__.__name__,self.pid,self.codec,self.framerate,self.width,self.height)


def url(streamURL):
    """validates a string that contains a streamURL"""
    # url_pattern might have a security problem
    url_pattern = '^http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+$'
    if not re.match(url_pattern, streamURL):
        msg = "invalid. has to match regex %s" % url_pattern
        raise argparse.ArgumentTypeError(msg)
    return streamURL


def tcpport(port):
    """validates a string that contains a TCP port"""
    port_pattern = "^[0-9]+$"
    if not re.match(port_pattern, port):
        msg = "invalid. has to match regex %s" % port_pattern
        raise argparse.ArgumentTypeError(msg)
    port_int = int(port)
    if port_int < 1024 or port_int > 65535:
        msg = "out of range. needs to be 1024<=port<=65535"
        raise argparse.ArgumentTypeError(msg)
    return port_int


def get_parsed_args():
    """parses the arguments and returns them"""
    parser = argparse.ArgumentParser(description="simplifies Raspberry Pi "
                                     "OpenMAX (OMX) transcoding with "
                                     "http-launch")
    parser.add_argument("streamURL",
                        type=url,
                        help="input MPEG TS stream URL to transcode")

    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument("--abitrate",
                       type=int,
                       help="output bitrate in [bits per second] for "
                       "transcoded AAC audio stream",
                       choices=[32768, 65536, 131072, 196608, 262144])

    group.add_argument("--acopy_max",
                       action="store_true",
                       help="copy audio stream with highest bitrate")

    group.add_argument("--acopy_min",
                       action="store_true",
                       help="copy audio stream with lowest bitrate")

    group.add_argument("--acopy_max_ac3",
                       action="store_true",
                       help="copy ac3 audio stream with highest bitrate")

    group.add_argument("--acopy_min_ac3",
                       action="store_true",
                       help="copy ac3 audio stream with lowest bitrate")

    group.add_argument("--acopy_max_mpg",
                       action="store_true",
                       help="copy mpg audio stream with highest bitrate")

    group.add_argument("--acopy_min_mpg",
                       action="store_true",
                       help="copy mpg audio stream with lowest bitrate")

    group.add_argument("--acopy_no",
                       type=int,
                       help="copy audio stream number (first=0)")

    parser.add_argument("--vbitrate",
                        type=int,
                        default=786432,
                        help="output bitrate in [bits per second] for the "
                        "video stream",
                        choices=[393216, 458752, 524288, 655360, 786432,
                                 917504, 1048576, 1572864, 2097152, 3145728,
                                 4194304])

    parser.add_argument("--hdsize",
                        default="768x432",
                        help="output resolution for HD input stream",
                        choices=["256x144", "512x288", "768x432", "1024x576",
                                 "1280x720"]
                        )

    parser.add_argument("--sdsize",
                        default="480x384",
                        help="output resolution for SD input stream",
                        choices=["240x192", "360x288", "480x384", "720x576"]
                        )

    parser.add_argument("--port",
                        type=tcpport,
                        default="8090",
                        help="TCP port of the output stream",
                        )

    # WARNING: no check is performed for path
    parser.add_argument("--path",
                        default="/stream.mkv",
                        help="path to use for the output stream",
                        )

    return parser.parse_args()


def retrieve_stream_data(streamURL, size=4000000):
    """get [size] bytes of [streamURL]"""
    print "downloading %i bytes of the stream. Please be patient..." % size
    webfile=urllib.urlopen(streamURL)
    data = webfile.read(size)
    webfile.close()
    print "download finished."
    return data


def get_stream_info(localfilename):
    print "analyzing stream data"
    mi = MediaInfo()
    mi.Open(localfilename)
    ac = int(mi.Get(Stream.General,0,"AudioCount"))
    vc = int(mi.Get(Stream.General,0,"VideoCount"))
    print "detected %i audio streams" % ac

    astreams = []
    for i in range(ac):
        bitrate = int(mi.Get(Stream.Audio,i,"BitRate"))
        codec = mi.Get(Stream.Audio,i,"Codec")
        pid = int (mi.Get(Stream.Audio,i,"ID"))
        astream = AudioStream(pid, codec, bitrate)
        astreams.append(astream)
        print i, astream

    vstreams = []

    for i in range(vc):
        codec = mi.Get(Stream.Video,i,"Codec")
        pid = int (mi.Get(Stream.Video,i,"ID"))
        width = int(mi.Get(Stream.Video,i,"Width"))
        height = int(mi.Get(Stream.Video,i,"Height"))
        framerate = float(mi.Get(Stream.Video,i,"FrameRate"))
        vstream = VideoStream(pid, codec, framerate, width, height)
        vstreams.append(vstream)
        print i, vstream

    mi.Close()

    avsc = AVStreamContainer(vstreams=vstreams, astreams=astreams)

    return avsc


def get_parsed_stream_data(data):
    localfile = tempfile.NamedTemporaryFile(delete=False)
    with localfile:
        localfile.write(data)
    try:
        return get_stream_info(localfile.name)
    finally:
        os.remove(localfile.name)


def main():
    parsed_args = get_parsed_args()
    streamURL = parsed_args.streamURL

    rawstreamdata =retrieve_stream_data(streamURL)
    avsc = get_parsed_stream_data(rawstreamdata)

    if len(avsc.vstreams) != 1:
        raise NotImplementedError("can only deal with a single video stream")

    vcodec = avsc.vstreams[0].codec

    if vcodec == "AVC":
        vparser = 'h264parse'
        vdecoder = 'omxh264dec'
    elif vcodec == "MPEG-2V":
        vparser = 'mpegvideoparse'
        vdecoder = 'omxmpeg2videodec'
    else:
        raise NotImplementedError("video codec '%s'" % vcodec)

    swidth = avsc.vstreams[0].width
    sheight = avsc.vstreams[0].height

    sratio = swidth / sheight

#    print 'source video ratio %f' % sratio

    if sratio != (16/9):
        width, height = parsed_args.sdsize.split('x')
    else:
        width, height = parsed_args.hdsize.split('x')

    framerate = float(avsc.vstreams[0].framerate)

    if parsed_args.acopy_min:
        astream = avsc.get_a(codec=None, get_max=False)
    elif parsed_args.acopy_max or (parsed_args.abitrate is not None):
        astream = avsc.get_a(codec=None, get_max=True)
    elif parsed_args.acopy_max_ac3:
        astream = avsc.get_a(codec="AC3", get_max=True)
    elif parsed_args.acopy_min_ac3:
        astream = avsc.get_a(codec="AC3", get_max=False)
    elif parsed_args.acopy_max_mpg:
        astream = avsc.get_a(codec="MPA1L2", get_max=True)
    elif parsed_args.acopy_min_mpg:
        astream = avsc.get_a(codec="MPA1L2", get_max=False)
    elif parsed_args.acopy_no is not None:
        astream = avsc.astreams[parsed_args.acopy_no]
    else:
        raise NotImplementedError("should never end up here")
    if astream is None:
        astream = avsc.astreams[0]

    acodec = astream.codec
    if acodec == "MPA1L2":
        aparser = 'mpegaudioparse'
        adecoder = 'mpg123audiodec'
    elif acodec == "AC3" or acodec == "AC3+":
        aparser = 'ac3parse'
        adecoder = 'avdec_ac3'
    else:
        raise NotImplementedError("audio codec '%s'" % acodec)

    apid = int(astream.pid)

    port = parsed_args.port
    path = parsed_args.path
    vbitrate = parsed_args.vbitrate
    abitrate = parsed_args.abitrate

    part1 = '%i %s video/mkv verbose souphttpsrc location="%s" is-live=true ! tsdemux parse-private-sections=false name=demux demux.audio_%x ! queue ! %s ' % (port, path, streamURL, apid, aparser)

    if abitrate is not None:
        part2 = '! %s ! audioconvert dithering=0 ! audio/x-raw,channels=2 ! voaacenc bitrate=%i ' % (adecoder, abitrate)
    else:
        part2 = ""

    part3 = '! matroskamux name=stream streamable=true demux. ! queue ! %s ! %s ! videoconvert ! omxh264enc target-bitrate=%i control-rate=variable ! video/x-h264,stream-format=byte-stream,profile=high,width=%s,height=%s,framerate=%i/1 ! h264parse ! queue ! stream.' % (vparser, vdecoder, vbitrate, width, height, framerate)

    http_launch_options = part1 + part2 + part3
    print "http_launch options:" , http_launch_options

if __name__ == '__main__':
    main()
Hier ein Beispiel für einen Aufruf mit ZDF HD:

Code: Select all

pi@testpi ~ $ ./get_stream_info.py http://gb800ueplusduo:8001/1:0:19:2B66:3F3:1:C00000:0:0:0: --acopy_min
downloading 4000000 bytes of the stream. Please be patient...
download finished.
analyzing stream data
detected 4 audio streams
0 <AudioStream(id=0x17e8,codec=MPA1L2,bitrate=256000)>
1 <AudioStream(id=0x17e9,codec=MPA1L2,bitrate=192000)>
2 <AudioStream(id=0x17ea,codec=AC3,bitrate=448000)>
3 <AudioStream(id=0x17eb,codec=MPA1L2,bitrate=192000)>
0 <VideoStream(id=0x17de,codec=AVC,framerate=50.000000,width=1280,height=720)>
http_launch options: 8090 /stream.mkv video/mkv verbose souphttpsrc location="http://gb800ueplusduo:8001/1:0:19:2B66:3F3:1:C00000:0:0:0:" is-live=true ! tsdemux parse-private-sections=false name=demux demux.audio_17e9 ! queue ! mpegaudioparse ! matroskamux name=stream streamable=true demux. ! queue ! h264parse ! omxh264dec ! videoconvert ! omxh264enc target-bitrate=786432 control-rate=variable ! video/x-h264,stream-format=byte-stream,profile=high,width=768,height=432,framerate=50/1 ! h264parse ! queue ! stream.

jb63
Posts: 116
Joined: Mon May 11, 2015 6:41 pm

Re: SAT-TV Server

Tue Dec 08, 2015 1:34 am

This would have been a nice thread to share with the larger (English speaking) community, and the OP would have gotten many more answers as well. Too bad, can't run all of this by google-translate.

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Tue Dec 08, 2015 7:12 am

whocares_ido wrote:Ich habe ein kleines Skript geschrieben für diejenigen, die wie ich den Stream einer enigma2 Box transkodieren wollen. Es ist zwar noch nicht komplett so wie ich es haben will, aber man kann es schon verwenden, um sich die korrekten Optionen für http-launch anzeigen zu lassen.

Es werden zunächst 4MB Daten vom Stream heruntergeladen (das dauert etwas) und anschließend mit mediainfo analysiert. Deshalb bitte nicht vergessen, das entsprechende Paket zu installieren:
....
Könntest du das so erweitern, daß es die Ergebnisse (optional) in meine channels.dat (transcoder Paket) schreibt? Dann lönnten wir es desem Paket beifügen.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Tue Dec 08, 2015 7:19 am

jb63 wrote:This would have been a nice thread to share with the larger (English speaking) community, and the OP would have gotten many more answers as well. Too bad, can't run all of this by google-translate.
The current SAT-TV-Server package is only usable for Germans right now, because of the pre-built channels database. Some time next year I will have a version ready that contains all the tools to create te database using w-scan. Then I'll post something in English.
Most users here are only interested in the transcoding part. I've created a separate transcoder-package and opened a thread in the English section:
viewtopic.php?f=38&t=123876
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

whocares_ido
Posts: 59
Joined: Wed Sep 26, 2012 5:47 pm

Re: SAT-TV Server

Tue Dec 08, 2015 10:26 pm

gkreidl wrote:Könntest du das so erweitern, daß es die Ergebnisse (optional) in meine channels.dat (transcoder Paket) schreibt? Dann lönnten wir es desem Paket beifügen.
Was schwebt Dir denn genau vor?
Welcher AudioStream soll nach welchen Kriterien ausgewählt werden? Transkodierung an oder aus?

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Tue Dec 08, 2015 10:35 pm

whocares_ido wrote:
gkreidl wrote:Könntest du das so erweitern, daß es die Ergebnisse (optional) in meine channels.dat (transcoder Paket) schreibt? Dann lönnten wir es desem Paket beifügen.
Was schwebt Dir denn genau vor?
Welcher AudioStream soll nach welchen Kriterien ausgewählt werden? Transkodierung an oder aus?
Wegen des bugs in der AC3-Dekodierung sollte man immer MPEG bevorzugen, sofern verfügbar. In der Regel ist der erste Audiokanal der gewünschte. Alles andere muß der User selbst entscheiden.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

h00re1337
Posts: 24
Joined: Thu Sep 17, 2015 4:14 pm

Re: SAT-TV Server

Fri Jan 01, 2016 6:03 pm

hey,

gibts bei euch mitlerweile was neues zu dem thema?

ich hab mich nochmal ziemlich viel damit beschäftigt und gemerkt das gstreamer keine sonderzeichen mag. wenn man den tvheadend link kürzt das er so aussieht dann funktioniert es :

Code: Select all

transcode.py http://192.168.1.53:9981/stream/channelid/1829275388 hd2 ac3 771 vo
die einzige gut funktionierende möglichkeit bei mir ist die hd streams mit ac3 tonspur durchzuschleifen. bei allen anderen möglichkeiten z.b. sd1 mit mpeg codec oder ac3 codec gibt nur pixelfehler aus.

wenn man die ac3 tonspur bei hd weiter transcodiert kommt irgendwann der memory leak. auch hd streams mit mpeg tonspuren laufen nicht gut. die machen komischerweise auch pixelfehler. kann mir das einer erklären warum ich mpeg nicht richtig zum laufen kriege?

Code: Select all

transcode.py http://192.168.1.53:9981/stream/channelid/1829275388 hd2 ac3 771 vo
das hier läuft mittlerweile okay und sieht auch echt gut aus aber leider bricht auch da der stream in einem zeitraum zwischen 1std-24std immer wieder zusammen und man muss ihn neustarten.


lg

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Fri Jan 01, 2016 6:27 pm

Bestätigen kann ich nur das Problem mit der AC3-Dekodierung. Das entsprechende gstreamer-Modul hat ganz offensichtlich einen Memory-Leak.
Pixelfehler habe ich keine - ich benutze allerdings auch nicht tvheadend. Der omx-H264-encoder ist aber sehr pingelig, was die möglichen Bildgrößen betrifft (wenn man die Auflösung runterskaliert).
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

apuokas
Posts: 35
Joined: Thu Jul 09, 2015 12:48 am

Re: SAT-TV Server

Fri Jan 08, 2016 10:48 pm

kann man mit dem http-launch auch live-video von raspberry-cam modul + raspivid streamen? Irgentwie?

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Fri Jan 08, 2016 11:16 pm

apuokas wrote:kann man mit dem http-launch auch live-video von raspberry-cam modul + raspivid streamen? Irgentwie?
Wenn man das Kamerbild mit einem gstreamer-Modul erfassen kann, sollte es gehen.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

apuokas
Posts: 35
Joined: Thu Jul 09, 2015 12:48 am

Re: SAT-TV Server

Sat Jan 09, 2016 12:54 pm

mit gst-launch funktionierte:
"Windows batch script:
@echo off
cd C:\gstreamer\1.0\x86_64\bin
gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false

Raspberry Pi Bash Script:
#!/bin/bash
clear
raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=***YOUR_PC_IP*** port=5000"

aber ich habe keine Ahnung wie ich das "raspivid" zusammen mit "http-launch" ausführen kann. Am besten wäre erstmahls ohne audio und ohne mpeg (habe noch keine Lizenz für dieses RPI2). Könnte mir jemand bitte helfen? Ich will den http-launch Stream "live" in vlc oder firefox mit vlc plugin anschauen können.

P.S.. habe mir auch gst-rpicamsrc kompiliert. Jetzt kann ich auch z.B. "date,time(inkl. sec.),framescount" in swarz über vlc durch lan anschauen: http-launch 8080 / video/mkv verbose rpicamsrc annotation-text-colour=0x000000 annotation-mode=0x020c preview=false bitrate=2000000 ! video/x-h264,width=1280,height=720,framerate=25/1,profile=high ! h264parse ! matroskamux name=stream streamable=true ! stream.
Damit funktioniert es deutlich besser wie mit alle andere Lösungen wie z.B. motion, etc.
Supper Zeug. Könnte auch folgendes in videoausgabe einfügen: "annotation-text-colour=0x000000 annotation-mode=date annotation-mode=custom-text+time+date annotation-text=Office"
Als nächstes were interesant auch audio von microfon einbinden und video live über browser anschauen können und in selber Zeit soll diese videos irgentwo z.B. in Länge je halbe Stunde gespeichert werden. Das wäre was :) hat jemand eine Idee?
P.P.S. fürs Anfang habe hier https://wiki.jmk.hu/wiki/Live_Video_Str ... era_module was gefunden: "omxh264enc target-bitrate=2097152 control-rate=variable encodes the video with a target bitrate of 2Mbps using the hardware encoder (requires gst-omx)". Ist aber weit noch nicht alles was ich will :)

spyer
Posts: 6
Joined: Tue Apr 05, 2016 2:17 pm

Re: SAT-TV Server

Tue Apr 05, 2016 2:22 pm

Hallo,

ist es auch möglich mit dem RP2 bzw RP3 den stream mit TVHeadend zu encoden?
Ich bräuchte eine günstige Möglichkeit um einen Sender von DVB-C mit max. 8 mbit hochzuladen.
Freue mich über jede Hilfe.

Danke und viele Grüße
Spyer

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Wed Apr 06, 2016 5:22 am

Für die reine Transkodierung have ich eine eigene Software veröffentlicht:
viewtopic.php?f=38&t=123876&p=835946&hi ... er#p835946
tvheadend muß so eingestellt oder aufgerufen werden, daß es TS streams liefert, nicht sein eigenes Streamingformat.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

neidersun
Posts: 2
Joined: Sat Sep 30, 2017 6:28 am

Re: SAT-TV Server

Sat Sep 30, 2017 6:37 am

hallo,
das es ja eine unicable system giebt wollte ich fragen ob man das auch noch mit einfügen könnte.
leider habe ich univabel system.
es sind 3 einstellung die rein müssten in configure.py
switch_input=4
switch_type=N
uni_freq=1005

es sollte so sein das man switch_input=4 und uni_freq=1005 oben bei der config enden kann..

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Mon Oct 02, 2017 7:32 am

neidersun wrote:
Sat Sep 30, 2017 6:37 am
hallo,
das es ja eine unicable system giebt wollte ich fragen ob man das auch noch mit einfügen könnte.
leider habe ich univabel system.
es sind 3 einstellung die rein müssten in configure.py
switch_input=4
switch_type=N
uni_freq=1005

es sollte so sein das man switch_input=4 und uni_freq=1005 oben bei der config enden kann..
Das war eine sehr spezielle Anwendung, in der inzwischen vieles überholt ist. Und sie ist auch nur auf Satellitenempfang ausgerichtet. Meine eigene Version, die ich täglich in Gebrauch habe, ist sehr viel weiter entwickelt.

Ich habe mir schon länger überlegt, den TV-Server zu generalisieren, damit man ihn für alle DVB-Quellen nutzen kann (DVB-S, -T, -C und unicable). Neben dem großem Arbeitsaufwand ist es bislang daran gescheitert, daß ich außer DVB-S ja nichts selber testen kann.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

neidersun
Posts: 2
Joined: Sat Sep 30, 2017 6:28 am

Re: SAT-TV Server

Fri Nov 03, 2017 8:42 am

ich bin gerne bereit mich als tester bereitzustellen

gkreidl
Posts: 5323
Joined: Thu Jan 26, 2012 1:07 pm
Location: Germany

Re: SAT-TV Server

Fri Nov 03, 2017 11:38 am

neidersun wrote:
Fri Nov 03, 2017 8:42 am
ich bin gerne bereit mich als tester bereitzustellen
Ich habe dir eine PM geschickt.
Minimal Kiosk Browser (kweb)
Slim, fast webkit browser with support for audio+video+playlists+youtube+pdf+download
Optional fullscreen kiosk mode and command interface for embedded applications
Includes omxplayerGUI, an X front end for omxplayer

Return to “Deutsch”

Who is online

Users browsing this forum: No registered users and 6 guests