Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17
  1. #11

    Registriert seit
    18.10.2013
    Ort
    BW
    Beiträge
    1.523
    Thanks (gegeben)
    917
    Thanks (bekommen)
    698
    Total Downloaded
    162,62 MB
    Total Downloaded
    162,62 MB
    ReceiverDanke
    Box 1:
    AX HD61 4k - ATV 7.3
     
     
    Box 2:
    Mut@nt HD51 4k- ATV 6.4
     
     
    Box 3:
    LG DS90QY Soundbar
     
     
    Weil du ZDF dabei aufgezählt hast, schau mal hier, das trifft es evtl.
    Fussball-EM 2016: Live-Audiodeskription : ZDF mit Barrierefreiheit bei EM-Ubertragungen - ZDFsport.de
    mfg tiopedro1958

  2. Thanks - bedankten sich
    •   Alt Advertising

       

  3. #12
    Pike_Bishop
    Gast
    Ja gut könnte jetzt bei manchen Sendungen zutreffen, aber bei dem was ich gestern getestet habe da war nix in der Richtung.
    Aber egal ich muss mich nun entscheiden ob ich die 4te Tonspur einfach mit reinnehme beim Konvertieren oder eben nicht denn ändern kann ich das ja eh nicht
    (was der Sender ausstrahlt is eben nun mal da).
    Aber durch die dritte .mp2 Tonspur nun muss ich nen etwas anderen Weg suchen um die Spuren im Script zuverlässig unterscheiden zu können
    (war halt bislang wo ich immer von höchstens zwei mp2 Tonspuren ausging sehr einfach).


    Is klar warum das Muxen nicht klappt denn mit den bisherigen Variablen dazu also;
    Code:
    AUDIOFILE_AC3="*.ac3"
    AUDIOFILE1="*[!\-02].mp2"
    AUDIOFILE2="*[\-02].mp2"
    wird ja nur ne 02.mp2 getroffen und mit der Variablen mit Rufzeichen davor also negiert wird die mp2 getroffen nun aber gibts da auch ne 03.mp2
    da könnte die Variabale AUDIOFILE1 sowohl die .mp2 als auch die 03.mp2 sein da versagt das Muxen dann.
    Muss ich dann also anders lösen bei der Möglichkeit von drei mp2 Tonspuren


    Grüsse
    Biki3
    Geändert von Pike_Bishop (14.06.2016 um 14:17 Uhr)

  4. #13
    Pike_Bishop
    Gast
    Hi,

    @alexanderplatz - is erledigt sollte nun auch mit 4 Tonspuren klappen, ich häng das Komplettpaket hier im Post an.

    Hab bei HD Sendern gesehen da gibts doch auch tatsächlich welche die zwei AC3 Tonspuren beinhalten
    jedoch seh ich da derzeit keinen Handlungsbedarf da ich selbiges bei SD Sendern nicht beobachten konnte (Script is ja nur für SD-Aufnahmen).
    Sollte das jedoch auch mal bei SD Sendern der Fall sein so nehm ichs dann mit rein wenn diesbzg. jemand Probleme postet.

    Was mir grade noch im Log aufgefallen ist ist diese Meldung bei mplex;
    Code:
    **ERROR: [mplex] MUX STATUS: Frame data under-runs detected!
    Dagegen kann ich aber nix tun liegt am mplex (müsste vermutlich gepatcht werden, oder eventuell in neueren Versionen eh schon behoben)
    , jedoch kann ich aber trotz dieser Fehlermeldung keine Probleme in den fertigen Isos feststellen (klappt also eh alles soweit).
    Wobei ich diese Fehlermeldung aber bislang nur bei Sendern mit den 4 Tonspuren gesehen habe (konkret bei zdf-neo).
    Aber wie gesagt das .iso kann dennoch problemlos abgespielt werden hier.


    Grüsse
    Biki3
    Angehängte Dateien Angehängte Dateien

  5. #14
    Avatar von Pike_Bishop
    Registriert seit
    11.02.2020
    Ort
    here and there
    Beiträge
    2.424
    Thanks (gegeben)
    641
    Thanks (bekommen)
    1648
    Total Downloaded
    0
    Total Downloaded
    0
    ReceiverDanke
    Box 1:
    Mutant HD2400
     
     
    Box 2:
    VU Ultimo 4K
     
     
    Box 3:
    Octagon SF8008
     
     
    Box 4:
    Gigablue Quad 4K
     
     
    Box 5:
    VDR
     
     
    Hi,

    Ich hab ja hier in der Script Section keinerlei Mod Rechte mehr, also kann ich da leider nix mehr editieren, deshalb aber folgendes.
    Das Ganze bis hierher ist eigentlich obsolete (ich hab schon länger ein Plugin für diesen Job (macht aber auch nix anderes als ein Script aufzurufen, jedoch geht
    das so viel bequemer, man muss nicht erst eine Aufnahme in nen bestimmten Ordner kopieren)).

    Doch ist es aber so das dieses Plugin mit dem aufzurufenden Script (selbes gilt für die alten Scripte hier) nur auf Mipsel Boxen funktioniert
    aus dem einfachen Grund da es das Programm projectx nur für die Mipsel Boxen gibt und projectx benötigt es aber um ne Aufnahme erstmal zu demuxen und fehlerzubereinigen.

    Das also ist ein Grund warum das obsolete ist, der zweite Grund ist es macht sich doch eh keiner mehr die Mühe ne SD Aufnahme zu ner DVD zu wandeln
    egal ob automatisch oder nicht (ich meine ich nehm ja selbst nun schon seit geraumer Zeit gar nix mehr von nem SD-Sender auf).

    So, das war nur zur Info, damit keiner hier drüberstolpert und denkt die Scripts hier sind uneingeschränkt zu verwenden.


    Mit dem Plugin selbst könnte man ja auch anderes tun denn es kann ja generell Scripte aufrufen, stellt sich nur die Frage was ?
    Hab ja länger versucht da mit ffmpeg was brauchbares hinzubekommen in nem Script, jedoch kam da grade in Bezug auf DVD Erstellung von ner SD-Aufnahme bislang nix synchrones raus
    , und somit pfeif ich nun auf das, denn wie gesagt SD interessiert mich selber nun nicht mehr wirklich).
    Jedenfalls müsste mir da schon sehr fad werden damit ich das vielleicht mal neu aufgreifen würde.

    Was mich immer noch reizen würde wäre wenn die Boxen mal so viel Power hätten das es sich lohnt (also in ner vertretbaren Zeit) an der Box mit dem Plugin ein Script zur HD Umwandlung (z.b: zu mkv)
    zu verwirklichen, aber davon sind wir derzeit weit entfernt (das würde ewig dauern mit der derzeitigen Power der Boxen).


    PLUGIN + SCRIPT ist im folgenden Link zu finden (wie in Post #1 erwähnt ist das nur für Mipsel Boxen);
    Plugin and Script


    Grüsse
    Pike
    Geändert von Pike_Bishop (19.12.2020 um 00:50 Uhr)

  6. #15

    Registriert seit
    18.10.2013
    Ort
    BW
    Beiträge
    1.523
    Thanks (gegeben)
    917
    Thanks (bekommen)
    698
    Total Downloaded
    162,62 MB
    Total Downloaded
    162,62 MB
    ReceiverDanke
    Box 1:
    AX HD61 4k - ATV 7.3
     
     
    Box 2:
    Mut@nt HD51 4k- ATV 6.4
     
     
    Box 3:
    LG DS90QY Soundbar
     
     
    hi Pike,
    kannst ja mal den Codeschnipsel hier anschauen und für dich weiter zurechtfriemeln.

    Code:
    #! /bin/bash
    
    for f in *.*; do
            if [ ${f: -4} == ".TS4" ] || [ ${f: -3} == ".TS" ]
            then
                    ffmpeg -i "$f" -sn -codec copy "${f%.*}.mkv"
                    # check if conversion was successful
                    rc=$?
                    if [ $rc == 0  ]
                    then
                            rm -f "$f"
                    else     
                            ffmpeg -i "$f" -sn -codec copy "${f%.*}.mp4"
                            rm -f "$f"
                            ffmpeg -i "${f%.*}.mp4" -sn -codec copy "${f%.*.mkv}"
                            rm -f "${f%.*}.mp4"
                    fi
            fi
    done
    oder auch einfacher gehalten

    Code:
    #! /bin/bash
    WORK_PATH="/media/hdd/movie"
    cd "${WORK_PATH}"
    for f in *.ts
    do
          if [ ! -e "$f.mp4" ]
          then
            ffmpeg -n -i "$f" -acodec copy -vcodec copy "$f.mp4"
            #rm "$f"
          fi
    done
    für python scripte gäbe es auch schöne Spielereien, wenn man denn irgendwie Tkinter, tkinter, python-tkinter oder gar -tkinter zum laufen bekommen würde in E2. Da macht die Tkinter.pyo im Aufruf ab Zeile 39 nicht mehr mit.

    Code:
    #!/usr/bin/python3.7
    # -*- coding: utf-8 -*-
    
    import tkinter
    import tkinter.ttk
    from tkinter.filedialog import askopenfilename, asksaveasfilename
    import tkinter.messagebox
    import subprocess
    import fcntl
    import select
    import os
    import re
    
    
    class Application(tkinter.Tk):
    
        def __init__(self, parent):
            tkinter.Tk.__init__(self, parent)
            self.parent = parent
    
            self.vcodecs = [
                'libtheora',
                'libvpx',
                'libwebp',
                'libx264',
                'libx264rgb',
                'libxvid',
                'png',
                'ProRes',
                ]
    
            self.acodecs = [
                'aac',
                'ac3',
                'ac3_fixed',
                'libfaaclibfdk_aac',
                'libmp3lame',
                'libopencore-amrnb',
                'libshine',
                'libtwolame',
                'libvo-aacenc',
                'libvo-amrwbenc',
                'libopus',
                'libvorbis',
                'libwavpack',
                'wavpack',
                ]
    
            self.formats = [
                'null',
                'mov',
                'ismv',
                'mp3',
                'ogg',
                'aiff',
                'crc',
                'framecrc',
                'md5',
                'framemd5',
                'gif',
                'hls',
                'ico',
                'image2',
                'matroska',
                'mpegts',
                ]
    
            self.pixfmts = [
                'yuv420p',
                'yuv422p',
                'yuv444p',
                'yuv422',
                'yuv410p',
                'yuv411p',
                'yuvj420p',
                'yuvj422p',
                'yuvj444p',
                'rgb24',
                'bgr24',
                'rgba32',
                'rgb565',
                'rgb555',
                'gray',
                'monow',
                'monob',
                'pal8',
                ]
    
            self.presets = {
                'H.264 720p': {
                    'vcodec': 'libx264',
                    'vb': '3500k',
                    'width': 1280,
                    'height': 720,
                    'qmax': 51,
                    'qmin': 11,
                    'pix_fmt': 'yuv420p',
                    'acodec': 'aac',
                    'ar': 44100,
                    'ab': '128k',
                    'format': 'mp4',
                    'extraOptions': '-movflags faststart',
                    },
                'H.264 576p': {
                    'vcodec': 'libx264',
                    'vb': '2000k',
                    'width': 1024,
                    'height': 576,
                    'qmax': 51,
                    'qmin': 11,
                    'pix_fmt': 'yuv420p',
                    'acodec': 'aac',
                    'ar': 44100,
                    'ab': '128k',
                    'format': 'mp4',
                    'extraOptions': '-movflags faststart',
                    },
                'H.264 360p': {
                    'vcodec': 'libx264',
                    'vb': '1000k',
                    'width': 640,
                    'height': 360,
                    'qmax': 51,
                    'qmin': 11,
                    'pix_fmt': 'yuv420p',
                    'acodec': 'aac',
                    'ar': 44100,
                    'ab': '128k',
                    'format': 'mp4',
                    'extraOptions': '-movflags faststart -maxrate 1500k -bufsize 3000k',
                    },
                'WebM 720p': {
                    'vcodec': 'libvpx',
                    'vb': '3500k',
                    'width': 1280,
                    'height': 720,
                    'qmax': 51,
                    'qmin': 11,
                    'pix_fmt': 'yuv420p',
                    'acodec': 'libvorbis',
                    'ar': 44100,
                    'ab': '128k',
                    'format': 'webm',
                    'extraOptions': '-quality good',
                    },
                'WebM 576p': {
                    'vcodec': 'libvpx',
                    'vb': '2000k',
                    'width': 1024,
                    'height': 576,
                    'qmax': 51,
                    'qmin': 11,
                    'pix_fmt': 'yuv420p',
                    'acodec': 'libvorbis',
                    'ar': 44100,
                    'ab': '128k',
                    'format': 'webm',
                    'extraOptions': '-quality good',
                    },
                'WebM 360p': {
                    'vcodec': 'libvpx',
                    'vb': '1500k',
                    'width': 640,
                    'height': 360,
                    'qmax': 51,
                    'qmin': 11,
                    'pix_fmt': 'yuv420p',
                    'acodec': 'libvorbis',
                    'ar': 44100,
                    'ab': '128k',
                    'format': 'webm',
                    'extraOptions': '-quality good',
                    },
                }
    
            self.initialize()
    
            self.inputFiles = []
    
        def initialize(self):
    
            # width = 800
            # height = 600
            # xoffset = (self.winfo_screenwidth()-width)/2
            # yoffset = (self.winfo_screenheight()-height)/2
            # print "%dx%d%+d%+d" % (width, height, xoffset, yoffset)
            # self.geometry("%dx%d%+d%+d" % (width, height, xoffset, yoffset))
    
            self.grid_columnconfigure(0, weight=1)
            self.resizable(True, True)
            self.grid()
            self.widgets()
    
        def widgets(self):
    
            # Source frame
    
            source = tkinter.LabelFrame(self, text='Source file')
            source.grid(
                row=0,
                columnspan=2,
                sticky='WE',
                padx=5,
                pady=5,
                ipadx=5,
                ipady=5,
                )
    
            inputFileLbl = tkinter.Label(source, text='Select File:')
            inputFileLbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
    
            self.inputFileVar = tkinter.StringVar()
    
            inputFileTxt = tkinter.Entry(source,
                    textvariable=self.inputFileVar, width='50')
            inputFileTxt.grid(row=0, column=1, sticky='WE', pady=3)
    
            inputFileBtn = tkinter.Button(source, text='Browse ...',
                    command=self.OnInputBrowseClick)
            inputFileBtn.grid(row=0, column=2, sticky='W', padx=5, pady=2)
    
            # Output frame
    
            output = tkinter.LabelFrame(self, text='Output details')
            output.grid(
                row=1,
                columnspan=2,
                sticky='WE',
                padx=5,
                pady=5,
                ipadx=5,
                ipady=5,
                )
    
            outputFileLbl = tkinter.Label(output, text='Save File to:')
            outputFileLbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
    
            self.outputFileVar = tkinter.StringVar()
    
            outputFileTxt = tkinter.Entry(output,
                    textvariable=self.outputFileVar, width='50')
            outputFileTxt.grid(row=0, column=1, sticky='WE', pady=3)
    
            outputFileBtn = tkinter.Button(output, text='Browse ...',
                    command=self.OnOutputBrowseClick)
            outputFileBtn.grid(row=0, column=2, sticky='W', padx=5, pady=2)
    
            # Preset
    
            preset = tkinter.LabelFrame(self, text='Preset')
            preset.grid(
                row=2,
                columnspan=2,
                sticky='WE',
                padx=5,
                pady=5,
                ipadx=5,
                ipady=5,
                )
    
            # presets list
    
            presetsLbl = tkinter.Label(preset, text='Use a preset')
            presetsLbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
    
            presets = []
            for (presetName, presetOptions) in self.presets.items():
                presets.append(presetName)
    
            self.presetsVar = tkinter.StringVar()
            self.presetsVar.trace('w', self.OnPresetSelected)
            self.presetsList = tkinter.OptionMenu(preset, self.presetsVar,
                    *presets)
            self.presetsList.grid(row=0, column=1, sticky='w', padx=5,
                                  pady=2)
    
            # Video options
    
            video = tkinter.LabelFrame(self, text='Video options')
            video.grid(
                row=3,
                column=0,
                sticky='NWES',
                padx=5,
                pady=5,
                ipadx=5,
                ipady=5,
                )
    
            # video codec
    
            vcodecLbl = tkinter.Label(video, text='Video codec')
            vcodecLbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
    
            self.vcodecVar = tkinter.StringVar()
            self.vcodecList = tkinter.OptionMenu(video, self.vcodecVar,
                    *self.vcodecs)
            self.vcodecList.grid(row=0, column=1, sticky='w', padx=5,
                                 pady=2)
    
            # Video bitrate
    
            vbLbl = tkinter.Label(video, text='Video bitrate')
            vbLbl.grid(row=1, column=0, sticky='E', padx=5, pady=2)
    
            self.vbVar = tkinter.StringVar()
            self.vbVar.set(0)
            self.vb = tkinter.Entry(video, textvariable=self.vbVar)
            self.vb.grid(row=1, column=1, sticky='W', padx=5, pady=2)
    
            # Video width
    
            widthLbl = tkinter.Label(video, text='Video width')
            widthLbl.grid(row=2, column=0, sticky='E', padx=5, pady=2)
    
            self.widthVar = tkinter.IntVar()
            self.width = tkinter.Entry(video, textvariable=self.widthVar)
            self.width.grid(row=2, column=1, sticky='W', padx=5, pady=2)
    
            # Video height
    
            heightLbl = tkinter.Label(video, text='Video height')
            heightLbl.grid(row=3, column=0, sticky='E', padx=5, pady=2)
    
            self.heightVar = tkinter.IntVar()
            self.height = tkinter.Entry(video, textvariable=self.heightVar)
            self.height.grid(row=3, column=1, sticky='W', padx=5, pady=2)
    
            # pixel format
    
            pixfmtLbl = tkinter.Label(video, text='Pixel format')
            pixfmtLbl.grid(row=4, column=0, sticky='E', padx=5, pady=2)
    
            self.pixfmtVar = tkinter.StringVar()
            self.pixfmtList = tkinter.OptionMenu(video, self.pixfmtVar,
                    *self.pixfmts)
            self.pixfmtList.grid(row=4, column=1, sticky='W', padx=5,
                                 pady=2)
    
            # frame rate
    
            fpsLbl = tkinter.Label(video, text='Frame rate')
            fpsLbl.grid(row=5, column=0, sticky='E', padx=5, pady=2)
    
            self.fpsVar = tkinter.IntVar()
            self.fps = tkinter.Entry(video, textvariable=self.fpsVar)
            self.fps.grid(row=5, column=1, sticky='W', padx=5, pady=2)
    
            # min quality
    
            self.qmin = tkinter.Scale(video, from_=-1, to=69,
                                      orient=tkinter.HORIZONTAL,
                                      label='Minimum quality')
            self.qmin.grid(
                row=6,
                column=0,
                columnspan=2,
                sticky='WE',
                padx=5,
                pady=2,
                )
            self.qmin.set(2)
    
            # max quality
    
            self.qmax = tkinter.Scale(video, from_=-1, to=1024,
                                      orient=tkinter.HORIZONTAL,
                                      label='Maximum quality')
            self.qmax.grid(
                row=7,
                column=0,
                columnspan=2,
                sticky='WE',
                padx=5,
                pady=2,
                )
            self.qmax.set(31)
    
            # Audio options
    
            audio = tkinter.LabelFrame(self, text='Audio options')
            audio.grid(
                row=3,
                column=1,
                sticky='NWES',
                padx=5,
                pady=5,
                ipadx=5,
                ipady=5,
                )
    
            # audio codec
    
            vcodecLbl = tkinter.Label(audio, text='Audio codec')
            vcodecLbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
    
            self.acodecVar = tkinter.StringVar()
            self.acodecList = tkinter.OptionMenu(audio, self.acodecVar,
                    *self.acodecs)
            self.acodecList.grid(row=0, column=1, sticky='W', padx=5,
                                 pady=2)
    
            # Audio frequency
    
            arLbl = tkinter.Label(audio, text='Audio frequency')
            arLbl.grid(row=1, column=0, sticky='E', padx=5, pady=2)
    
            self.arVar = tkinter.IntVar()
            self.ar = tkinter.Entry(audio, textvariable=self.arVar)
            self.ar.grid(row=1, column=1, sticky='W', pady=2)
    
            # Audio bitrate
    
            abLbl = tkinter.Label(audio, text='Audio bitrate')
            abLbl.grid(row=2, column=0, sticky='E', padx=5, pady=2)
    
            self.abVar = tkinter.StringVar()
            self.abVar.set(0)
            self.ab = tkinter.Entry(audio, textvariable=self.abVar)
            self.ab.grid(row=2, column=1, sticky='W', padx=5, pady=2)
    
            # Options
    
            options = tkinter.LabelFrame(self, text='Options')
            options.grid(
                row=4,
                columnspan=2,
                sticky='WE',
                padx=5,
                pady=5,
                ipadx=5,
                ipady=5,
                )
    
            # Format
    
            formatLbl = tkinter.Label(options, text='Format')
            formatLbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
    
            self.formatVar = tkinter.StringVar()
            self.formatList = tkinter.OptionMenu(options, self.formatVar,
                    *self.formats)
            self.formatList.grid(row=0, column=1, sticky='W', padx=5,
                                 pady=2)
    
            # Format options
    
            extraOptionsLbl = tkinter.Label(options, text='Extra options')
            extraOptionsLbl.grid(row=1, column=0, sticky='E', padx=5,
                                 pady=2)
    
            self.extraOptionsVar = tkinter.StringVar()
            extraOptionsTxt = tkinter.Entry(options,
                    textvariable=self.extraOptionsVar, width='65')
            extraOptionsTxt.grid(row=1, column=1, sticky='WE', pady=3)
    
            # Encode button
    
            encodeButton = tkinter.Button(self, text='Encode',
                    command=self.OnEncodeClick)
            encodeButton.grid(row=5, column=0, sticky='NWES', padx=5,
                              pady=2)
    
            # Progress bar
    
            self.progress = tkinter.ttk.Progressbar(self, orient='horizontal',
                    mode='determinate')
            self.progress.grid(row=5, column=1, sticky='WE', padx=5, pady=3)
    
        def OnInputBrowseClick(self):
            self.inputFiles = askopenfilename(multiple=True)
            self.inputFileVar.set(self.inputFiles)
    
        def OnOutputBrowseClick(self):
            options = {}
            options['parent'] = self
    
            inputFilename = self.inputFileVar.get()
            if inputFilename:
                options['initialfile'] = inputFilename
    
            self.outputFile = asksaveasfilename()
    
            self.outputFileVar.set(self.outputFile)
    
        def OnPresetSelected(self, *argv):
            preset = self.presetsVar.get()
            if self.presets[preset]:
                preset = self.presets[preset]
                self.vcodecVar.set(preset['vcodec'])
                self.vbVar.set(preset['vb'])
                self.widthVar.set(preset['width'])
                self.heightVar.set(preset['height'])
                self.qmax.set(preset['qmax'])
                self.qmin.set(preset['qmin'])
                self.pixfmtVar.set(preset['pix_fmt'])
                self.acodecVar.set(preset['acodec'])
                self.arVar.set(preset['ar'])
                self.abVar.set(preset['ab'])
                self.formatVar.set(preset['format'])
                self.extraOptionsVar.set(preset['extraOptions'])
    
        def OnEncodeClick(self):
            if self.inputFiles:
                files = self.splitlist(self.inputFiles)
                for filename in files:
                    self.encodeFile(filename)
            else:
                tkinter.messagebox.showwarning('No source selected',
                        'You must define at least one file to encode')
    
        def encodeFile(self, filename):
            output = self.outputFileVar.get()
            format = self.formatVar.get()
            vcodec = self.vcodecVar.get()
            vb = self.vbVar.get()
            fps = self.fpsVar.get()
            qmax = self.qmax.get()
            qmin = self.qmin.get()
            pixfmt = self.pixfmtVar.get()
            width = self.widthVar.get()
            height = self.heightVar.get()
            acodec = self.acodecVar.get()
            ar = self.arVar.get()
            ab = self.abVar.get()
            extraOptions = self.extraOptionsVar.get()
    
            cmd = 'ffmpeg -i {0} -y {1} -f {2}'.format(filename, output,
                    format)
            video = \
                '-vcodec {0} -vb {1} -qmax {2} -qmin {3} -pix_fmt {4}'.format(vcodec,
                    vb, qmax, qmin, pixfmt)
            if fps:
                video += ' -r {}'.format(fps)
            scale = \
                '-vf "scale=iw*min({0}/iw\,{1}/ih):ih*min({0}/iw\,{1}/ih),pad={0}:{1}:({0}-iw)/2:({1}-ih)/2"'.format(width,
                    height)
            audio = '-acodec {0} -ar {1} -ab {2}'.format(acodec, ar, ab)
            options = '-strict experimental -threads 0' + ' ' + extraOptions
            cmd = cmd + ' ' + video + ' ' + scale + ' ' + audio + ' ' \
                + options
    
            # print cmd
    
            cmd = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
            fcntl.fcntl(cmd.stderr.fileno(), fcntl.F_SETFL,
                        fcntl.fcntl(cmd.stderr.fileno(), fcntl.F_GETFL)
                        | os.O_NONBLOCK)
    
            duration = None
            header = ''
            progress_regex = re.compile("frame=.*time=([0-9\:\.]+)",
                                        flags=re.IGNORECASE)
            header_received = False
    
            while True:
                progressline = select.select([cmd.stderr.fileno()], [],
                        [])[0]
                if progressline:
                    line = cmd.stderr.read()
                    if line == '':
                        self.complete_callback()
                        break
                    progress_match = progress_regex.match(line)
                    if progress_match:
                        if not header_received:
                            header_received = True
    
                            if re.search(".*command\snot\sfound", header,
                                    flags=re.IGNORECASE):
                                tkinter.messagebox.showerror('Command error',
                                        'Command not found')
    
                            if re.search('Unknown format', header,
                                    flags=re.IGNORECASE):
                                tkinter.messagebox.showerror('Unknown format',
                                        'Unknown format')
    
                            if re.search("Duration: N\/A", header,
                                    flags=re.IGNORECASE | re.MULTILINE):
                                tkinter.messagebox.showerror('Unreadable file',
                                        'Unreadable file')
    
                            raw_duration = \
                                re.search("Duration:\s*([0-9\:\.]+),",
                                    header)
                            if raw_duration:
                                units = raw_duration.group(1).split(':')
                                duration = int(units[0]) * 60 * 60 * 1000 \
                                    + int(units[1]) * 60 * 1000 \
                                    + int(float(units[2]) * 1000)
    
                        if duration:
                            units = progress_match.group(1).split(':')
                            progress = int(units[0]) * 60 * 60 * 1000 \
                                + int(units[1]) * 60 * 1000 \
                                + int(float(units[2]) * 1000)
                            self.progress_callback(progress, duration)
                    else:
    
                        header += line
    
        def progress_callback(self, progress, duration):
    
            # percent = float(float(progress) / float(duration)) * 100
            # print "{0}%".format(int(percent))
    
            self.progress['maximum'] = duration
            self.progress['value'] = progress
            self.progress.update()
    
        def complete_callback(self):
            tkinter.messagebox.showinfo('Encoding complete', 'Encoding complete'
                                  )
    
    
    def main():
        app = Application(None)
        app.title('FFmpeg')
        app.mainloop()
    
    
    if __name__ == '__main__':
        main()
    oder auch hier

    Code:
    #!/usr/bin/env python
    import os
    import re
    import sys
    import glob
    import subprocess
    from optparse import OptionParser
    
    def help():
        head, tail = os.path.split(sys.argv[0])
        print "Help:\n       " + tail + " <folder> <src_fmt> <dst_fmt>\n       for example :" + sys.argv[0] + " ./ aac mp3"
    
    def Convert_Audio(src_fmt, dst_fmt):
        all_src_file = sorted(glob.glob("*.*"))
        file_patten = "[a-zA-Z0-9_]*." + src_fmt
        file_patten_regex = re.compile(file_patten)
        for file in all_src_file:
            lower_file_name = file.lower()
            result = file_patten_regex.match(lower_file_name)
            if (result):
                src_file_info = file.split(".")
                file_name = src_file_info[0]
                print "    convert " + file + " to " + file_name + "." + dst_fmt
                cmd = "ffmpeg -i " + file + " " + file_name + "." + dst_fmt
                print cmd
                os.system(cmd)
    
    def Convert_AV(src_fmt, dst_fmt):
        all_src_file = sorted(glob.glob("*.*"))
        file_patten = r"[a-zA-Z0-9_]*." + src_fmt
        file_patten_regex = re.compile(file_patten)
        for file in all_src_file:
            lower_file_name = file.lower()
            result = file_patten_regex.match(lower_file_name)
            if (result):
                src_file_info = file.split(".")
                file_name = src_file_info[0]
                print "    convert " + file + " to " + file_name + "." + dst_fmt
                cmd = "ffmpeg -i " + file + " -acodec copy -vcodec copy -copytb 1 -copyts " + file_name + "." + dst_fmt
                os.system((cmd))
    
    def Convert(folder, src_fmt, dst_fmt):
        child_env = os.environ.copy()
        if not os.path.isdir(folder):
            print "Folder: " + folder + " does not exist"
            return
    
        os.chdir(folder)
        if dst_fmt in ["aac", "mp3", "wav", "m4a"]:
            Convert_Audio(src_fmt, dst_fmt)
        else:
            Convert_AV(src_fmt, dst_fmt)
    
    
    if __name__ == "__main__":
        if len(sys.argv) != 4:
            help()
            sys.exit(0)
    
        folder = sys.argv[1]
        src_fmt = sys.argv[2]
        dst_fmt = sys.argv[3]
    
        print "convert from %s to %s" % (src_fmt, dst_fmt)
        Convert(folder, src_fmt, dst_fmt)
    Noch eine grunsätzliche Anmerkung, die ARM HisiBoxen haben (zumindest die HD61) leider nur die ältere 3.6.xx ffmpeg vers. zur Verfügung, da geht x265 z.B. und noch mehr nicht .
    Ist wohl dem eingebauten eserviceHisilicon geschuldet.

    Jetzt kannst über Weihnachten die Zeit nutzen und baust uns ein schönes Plugin.
    Geändert von tiopedro1958 (30.11.2020 um 08:05 Uhr)
    mfg tiopedro1958

  7. #16

    Registriert seit
    18.10.2013
    Ort
    BW
    Beiträge
    1.523
    Thanks (gegeben)
    917
    Thanks (bekommen)
    698
    Total Downloaded
    162,62 MB
    Total Downloaded
    162,62 MB
    ReceiverDanke
    Box 1:
    AX HD61 4k - ATV 7.3
     
     
    Box 2:
    Mut@nt HD51 4k- ATV 6.4
     
     
    Box 3:
    LG DS90QY Soundbar
     
     
    Oder du schaust dir das autocut plugin (Google) mal näher an.
    mfg tiopedro1958

  8. #17
    Avatar von Pike_Bishop
    Registriert seit
    11.02.2020
    Ort
    here and there
    Beiträge
    2.424
    Thanks (gegeben)
    641
    Thanks (bekommen)
    1648
    Total Downloaded
    0
    Total Downloaded
    0
    ReceiverDanke
    Box 1:
    Mutant HD2400
     
     
    Box 2:
    VU Ultimo 4K
     
     
    Box 3:
    Octagon SF8008
     
     
    Box 4:
    Gigablue Quad 4K
     
     
    Box 5:
    VDR
     
     
    Hi,

    Hier also noch abschliessend das Komplett Paket (Plugin + Script) um ne SD-Aufnahme zu ner DVD.iso auf ner MipselBox zu wandeln.


    Was ist zu tun damit das läuft ?

    1.) Das Paket "ScriptOnRec_Mipsel_complete_package.zip" hier im Post downloaden, und am PC entpacken.
    2.) Der komplette Ordner "ScriptOnRec" in dem Paket gehört an der Box nach "/usr/lib/enigma2/python/Plugins/Extensions" (kann per FTP (Filezilla) dorthin kopiert werden).
    3.) Die Datei "projectx" gehört an der Box nach "/usr/bin".
    4.) Die Datei "projectx.ini" gehört an der Box nach "/home/root"
    5.) Folgenden Befehl in telnet eintippen;
    Code:
    chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/ScriptOnRec/script1/*.sh/
    Das wars schon zur Einrichtung.

    Ich habe alle Scripts die nicht benötigt werden entfernt es gibt also nur noch ein Script und zwar das im Verzeichnis "/usr/lib/enigma2/python/Plugins/Extensions/ScriptOnRec/script1"
    Dies ist das Script welches für die Konvertierung von SD-Aufnahmen zu ner DVD.iso zuständig ist, es nennt sich "ts2dvd_with_projectx.sh".


    Wie funktioniert das nun ?

    Einfach die gewünschte SD-Aufnahme welche zu DVD.iso gewandelt werden soll in der Filmliste markieren, jetzt die Menü Taste drücken und in diesem Menü
    nun den Eintrag "ScriptOnRec" bzw. "Script auf Aufnahme..." suchen,
    und per ok Taste hinein wechseln, hier nun einfach das Script "ts2dvd_with_projectx.sh" (wird wohl der zweite Eintrag von oben sein) anwählen und per ok Taste starten.

    Der Rest geht vollautomatisch - die fertige DVD.iso landet dann in "/media/hdd//movie/_Converted/video/ts2dvd"
    Wer da nen anderen Pfad braucht muss das Script in den Zeilen 35 - 37 dahingehend anpassen (nur mit nem Linuxtauglichen Editor wie z.b: Notepad++).

    Der ganze Vorgang dauert nur einige Minuten.
    Und die fertigen DVD.isos sollten in dem Fall absolut synchron sein, da hier ja projectx zum Demuxen verwendet wird.

    Es ist möglich das das Script beim ersten Versuch abbricht, aber nur falls die bash nicht bereits installiert ist.
    Denn in dem Fall installiert das Script die bash nach, man muss das (Plugin) bzw. das Script darin danach nur einmalig erneut starten, danach sollte es immer funktionieren.

    Nach dem Start des Scripts werden erstmal alle Fenster geschlossen, und notwendige Meldungen werden extra am OSD (TV) ausgegeben wie z.b: die Startmeldung die ein paar Sekunden nachdem
    die Fenster geschlossen wurden erscheint, oder die Endmeldung wenn die Umwandlung abgeschlossen wurde.
    Es gibt auch ein Logfile, das liegt unter /tmp an der Box und nennt sich "ts2dvd.log".


    Falls benötigte weitere Programme fehlen wie die mjpegtools, dvdauthor, oder geniosimage werden die vom Script selbst nachinstalliert, auch
    wenn benötigte Verzeichnisse fehlen werden die vom Script selbst erstellt.


    Mehr gibts dazu nicht zu sagen, ausser nur auf SD-Aufnahmen anwenden !
    Sollte man es auf ne HD-Aufnahme anwenden passiert aber auch nix, das Script wird dann halt einfach abbrechen.


    Grüsse
    Pike
    Angehängte Dateien Angehängte Dateien
    Geändert von Pike_Bishop (04.04.2021 um 22:16 Uhr)


Seite 2 von 2 ErsteErste 12

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.
Powered by vBulletin® Version 4.2.5 (Deutsch)
Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.
Resources saved on this page: MySQL 5,56%
Parts of this site powered by vBulletin Mods & Addons from DragonByte Technologies Ltd. (Details)
vBulletin Skin By: PurevB.com