Samsung TV ingebouwde media speler/streamer MP4 workaround

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • donotwant
  • Registratie: November 2007
  • Laatst online: 13-08 21:48
Ik vind het nog wel eens fijn om de "extended" versie van een film te kijken, helaas gaat dat vaak niet wanneer het een MP4 betreft.

Hier blijven mijn Samsung TV's steken op 2 uur, 3 minuten en 9 seconden.

De oplossing is dan het remuxen naar MKV zonder header compressie.

Dit kan je handmatig doen met MKVToolNix, maar ik vind het fijn een scriptje te hebben dat dagelijks mijn download directory doorzoekt naar MP4 bestanden en hier een MKV van maakt.
Lang gezocht maar niet gevonden, dus zelf iets in Python geknutseld dat gebruik maakt van mkvmerge.exe (van MKVToolNix). Overigens gemaakt voor Python 2.7

Omzetten van bijvoorbeeld de extended versie van Avatar 1080p duurt hier anderhalve minuut.
Script heeft mogelijkheid bestanden te skippen die al zijn omgezet met/zonder behoud van het origineel.

Misschien heeft iemand anders er nog iets aan, daarom post ik het hier:
Python: samsuck.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#-------------------------------------------------------------------------------
# Name:        samsuck
# Purpose:     Some Samsung TVs cannot play past 2H:3M:19S on MP4 files using
#              the built-in media player.
#              This script will convert every MP4 file in the specified
#              directory (and sub-directories) to a Samsung TV compatible
#              MKV file.
#
# Usage:       1. Create samsuck.py in the same directory as mkvmerge.exe
#              2. Paste this entire script in samsuck.py
#              3. Change 3 variables below to suit your needs
#              4. Run script.
#              5. Enjoy watching the movie past 2H:3M:19S
#
# Requires:    Python 2.7 and MKVToolNix
#
# Author:      Tjerk Slaghek
# Donations:   paypal tjerkslaghek@gmail.com
#
# Created:     17-02-2012
# Copyright:   (c) Tjerk 2012
# Licence:     WTFPL
#-------------------------------------------------------------------------------
#!/usr/bin/env python
import os
import sys

#CHANGE THESE 3 VARIABLES TO SUIT YOUR NEEDS:

#this directory and ALL subdirectories will be searched
# USE DOUBLE BACKSLASH Z:\\DOWNLOADS\\PRON\\
rootDir = 'V:\\torrents\\'

#True = delete the original MP4 file after converting
deleteOriginalFilesAfterConverting = True

#False = skip already converted files
overwriteAlreadyConvertedFiles = False

#-----------------------THOU SHALL NOT PASS THIS LINE---------------------------
#                   (unless you know what your are doing)
def main():
    for root, subFolders, files in os.walk(rootDir):
        for file in files:
            inputFile = os.path.join(root,file)
            print inputFile
            if (inputFile.endswith(".mp4")):

                templist = inputFile.rsplit('\\',1)
                templist[-1] = ("\\MKV_" + templist[-1])
                templist = ''.join(templist).rsplit('.',1)
                templist[-1] = ".mkv"
                outputFile = ''.join(templist)
                print "inputFile:  " + inputFile
                print "outputFile: " + outputFile

                if (overwriteAlreadyConvertedFiles):
                    deleteCommand = 'del "' + outputFile + "\""
                    print ("deleteCommand: " + deleteCommand)
                    os.system(deleteCommand)

                if (not os.path.isfile(outputFile)):
                    commandToBeExecuted = ('"mkvmerge.exe -o "' + outputFile + '" --compression -1:none "' + inputFile + '"')
                    print ("commandToBeExecuted: " + commandToBeExecuted)
                    os.system(commandToBeExecuted)

                    if (deleteOriginalFilesAfterConverting):
                        deleteCommand = 'del "' + inputFile + "\""
                        print ("deleteCommand: " + deleteCommand)
                        os.system(deleteCommand)
                else:
                    print ("ERROR: File already exists: " + outputFile)

    print "Finished!"
    pass

if __name__ == '__main__':
    main()

N.B. Ik ben geen professionele programmeur (zoals sommigen hier), dus de code zal wel niet helemaal perfect zijn, werkt tot nu toe echter perfect.

edit: compatible gemaakt met python 3.2 http://pastebin.com/DMszmAEN

Acties:
  • 0 Henk 'm!

  • Michael Knight
  • Registratie: November 2002
  • Laatst online: 22:28

Michael Knight

Moderator Consumentenelektronica

KITT, I need you buddy!

Dat is nog eens handig! Leuk initiatief :)

Ben je toevallig op de hoogte van de toestellen die hier last van hebben? Wellicht handig om dan een 'supported lijstje' erbij te maken,

(Zeldzame) retrogames en meer --> Aangeboden op V&A