Aller au contenu

Mkv Merge - How To?


Hayholten

Messages recommandés

Hello everyone!

Utilisateur depuis longtemps de la suite MKVtoolnix et plus particulièrement de MKVmerge, je souhaiterais pouvoir l'installer sur mon DS413.

En effet, je perds un temps incalculable à copier mes fichiers sur un Windows, les muxer, puis à les renvoyer sur le NAS.

J'ai cru voir que certains avaient réussi mais sans comprendre vraiment pourquoi. Existerait-il un paquet tout fait?

J'ai également cru voir que la solution était de l'installer via ipkg, c'est ça? Car je ne sais comment l'installer sur mon NAS ça...

Bref, si vous avez une petite procédure à me communiquer...

Merci d'avance!!!! ;)

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 87
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

je perds un temps incalculable à copier mes fichiers sur un Windows, les muxer, puis à les renvoyer sur le NAS.

A quoi peuvent bien servir ces copies? Il n'est pas nécessaire de déplacer les fichiers à traiter: mkvmerge windows n'a aucun problème pour traiter directement les fichiers situés dans des dossiers partagés du NAS.
Lien vers le commentaire
Partager sur d’autres sites

Pour installer mkvmerge, il faut obligatoirement installer IPKG, y'a plusieurs tuto la dessus sur le forum

Attention, il y a une librairie de dépendence à installer, qui n'est pas automatiquement installée

J'avais trouvé la solution sur le forum US

Ensuite, j'ai crée un script pour faire le merge :

#!/bin/ash
SHARE=server

if [ -z "$1" ] 
	then
		echo "Il faut preciser le repertoire a scanner"
		exit
	else
		CHECK_USER=$(whoami)
		if [ "$CHECK_USER" == "root" ]
		then 
				eval find "$*" -name *.fr.srt |while read SRTNAME
				do
					echo "Fichier SRT trouve :" "$SRTNAME"
					VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv')
					if [ -f "$VIDNAME" ]
						then
							echo "Video trouve" "$VIDNAME"
							OUTNAME="${SRTNAME%.fr.*}".mkv
							if [ "$VIDNAME" == "$OUTNAME" ]
								then 
									echo ""$VIDNAME" existe deja. Renommage avec .subbed"
									OUTNAME="${SRTNAME%.fr.*}".subbed.mkv
							fi
							echo "fichier de sortie" "$OUTNAME"
							# read -p 'Merge des fichiers ? (o/n)' MAJ </dev/tty
							# if [ "$MAJ" == "o" ]
								# then
									/opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME"
									# echo "Ajout a l index"
									/usr/syno/bin/synoindex -a "$OUTNAME"
									/opt/bin/chmod 777 "$OUTNAME"
									/opt/bin/chown USER:users "$OUTNAME"
									# echo "Suppression de l index" 
									/usr/syno/bin/synoindex -d "$VIDNAME"
									if [ -f "$OUTNAME" ]
										then
											echo Suppression de "$VIDNAME" "$SRTNAME"
											mv "$VIDNAME" /volume1/$SHARE/#recycle
											mv "$SRTNAME" /volume1/$SHARE/#recycle
									fi
								# else
									# echo "Pas de merge"
							# fi
						else
							echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv"
					fi
				done 
		else
			echo "Ce script doit etre lance avec le user root"
			exit
		fi
fi

En détail :

Il faut passer le nom complet du dossier en paramètre 1, il va scanner les dossiers à la recherche de fichier *.fr.srt (çà prend en charge les espaces, mais attention lorsque vous le mettez en paramètre)

Il va regarder si il y a un fichier mp4/avi/mkv qui a le même nom

Si oui, il va merge les 2, et envoyer le fichier original et le srt dans le dossier "#recycle" (il faut avoir activé la corbeille sur le partage, et il faut éditer le paramètre "SHARE" avec votre nom de partage

Il y a certaines lignes commentés (avec un # devant) qui servent à lancer le script en interactif : A chaque fichier trouvé, il va demander si il doit le merge (valider avec "o")

Il faut décommenter ces lignes pour qu'il soit intéractif

Edit: Il faut aussi éditer le USER en ligne 33, par le nom du propriétaire du fichier

Modifié par bud77
Lien vers le commentaire
Partager sur d’autres sites

Re!

@ CoolRaoul:

En fait, l'ordinateur depuis lequel je muxe est relié en Wifi sur mon réseau local. Autant dire que compte-tenu des débits, ça prend un temps fou...

@ bud77:

Merci pour ces infos! Seulement, je m'interroge...

- je veux bien passer par IPKG et en effet j'ai vu divers tuto. Cependant, il faut installer "Bootstrap Installer" via le repo de Quadrat4 et malheureusement, selon toute vraisemblance, le déelopeur a décidé de mettre les clefs sous la porte (du moins pour ma version du DSM qui est la plus actuelle).

Info: http://blog.quadrat4.de/post/83741755163/no-more-synology-packages

Existerait-il une autre solution?

- Admettons tout de même que l'on puisse faire l'installation. C'est quoi exactement une librairie de dépendance? Et ça s’installe comment?

- Et enfin, le script que tu proposes est un script permettant l'automatisation c'est ça? Si je fais les choses à la main, ça marche quand même?

En tout cas, merci pour vos retours ;-)

Lien vers le commentaire
Partager sur d’autres sites

En fait, l'ordinateur depuis lequel je muxe est relié en Wifi sur mon réseau local. Autant dire que compte-tenu des débits, ça prend un temps fou...

Raison de plus (en attendant d'avoir mis un place une solution 100% Syno en suivant les conseils de Bud) d'éviter cette double copie aller/retour. Dans le cas où les fichiers restent sur le NAS le temps de mux va être probablement du même ordre que celui d'une copie et par suite la durée totale de l'opération divisée par deux.

Par contre ça justifie ton souhait de chercher un moyen de traiter les fichiers directement via des commandes sous DSM mais ce n'était pas ce point que je commentais.

**edit**

Je réalise à la réflexion que l'opération de mux à distance implique un flux réseau double (puisque il y a lectures *et* écritures ) ce qui relativise ma remarque. Le temps total de la manip, avec ou sans copie doit être similaire (faire les copies reste cependant probablement inutile mais sans gain de temps)

Bon, cela dit fin de ma digression: vu l'architecture utilisée il va de soit qu'une solution 100% sur le NAS reste l'idéal dans le cas présent.

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

Re!

@ CoolRaoul:

En fait, l'ordinateur depuis lequel je muxe est relié en Wifi sur mon réseau local. Autant dire que compte-tenu des débits, ça prend un temps fou...

@ bud77:

Merci pour ces infos! Seulement, je m'interroge...

- je veux bien passer par IPKG et en effet j'ai vu divers tuto. Cependant, il faut installer "Bootstrap Installer" via le repo de Quadrat4 et malheureusement, selon toute vraisemblance, le déelopeur a décidé de mettre les clefs sous la porte (du moins pour ma version du DSM qui est la plus actuelle).

Info: http://blog.quadrat4.de/post/83741755163/no-more-synology-packages

Existerait-il une autre solution?

- Admettons tout de même que l'on puisse faire l'installation. C'est quoi exactement une librairie de dépendance? Et ça s’installe comment?

- Et enfin, le script que tu proposes est un script permettant l'automatisation c'est ça? Si je fais les choses à la main, ça marche quand même?

En tout cas, merci pour vos retours ;-)

1) il suffit de récupérer le bootstrap, et l'installer à la main. quadrat n'a jamais marché à 100%. Les 4 essais que j'avais fait ont toujours été en échec, rien ne vaut la méthode "normale"

Comme indiqué, il y a plusieurs tutos sur le forum

2) c'est un package supplémentaire a installer via IPKG, en temps normal, une dépendance est automatiquement installée avec le package que tu veux, sauf pour ce cas la

Comme indiqué, tu trouveras l'info sur le forum US

3) oui, et oui

Pour info, au niveau des temps, pour un fichier sur le syno, muxé sur le syno, çà met environ 30 sec pour un fichier de 400mo (attention, j'ai un proc intel, çà aide beaucoup)

Pour un fichier sur le syno, muxé sur pc, sortie sur pc, environ 6 secondes, plus 6 secondes de plus pour le re-transférer sur le syno

Lien vers le commentaire
Partager sur d’autres sites

Re!

@ CoolRaoul:

Ce sont ces réflexions et mes différents tests qui m'ont menés à cette envie. Le besoin s'accentue quand on traite les requêtes via Wifi... Si j'arrive à faire tourner MKVtoolnix et ses files d'attentes sur le Syno, je gagnerai un temps fou ;-)

@ bud77:

Bon, j'ai (je crois) avancé dans l'installation de MKVtoolnix... Autant dire qu'étant un parfait novice en termes de ligne de commande (et avec un Anglais parfois relatif), c'est une vrai expédition. Bref, Bootstrap (à priori) OK, Ipkg (Bêta) installé et je crois MKVtoolnix aussi. Voici quelques captures afin que vous puissiez m'aider à savoir où j'en suis (car ça commence à devenir abstrait):

mini_656401700.jpg

mini_965077841.jpg

mini_849647702.jpg

Où en suis-je exactement dans le procédé?

Et au final, on le lancera comment le logiciel (l'interface notamment)?

C'est très instructif mais quel sport! Hé hé... ;)

Lien vers le commentaire
Partager sur d’autres sites

En voyant ton screen, le nom de la dépendance m'est revenu : boost quelque chose

Pour être sur que çà marche, ouvre ta session putty (en root), et tape tout simplement "mkvmerge"

Il devrait t'afficher ceci

mkvmerge v4.2.0 ('No Talking') built on Feb 18 2012 10:49:59

Error: no output file name was given.
mkvmerge -o out [global options] [options1] <file1> [@optionsfile ...]
Global options:
-v, --verbose verbose status
-q, --quiet suppress status output
-o, --output out Write to the file 'out'.
-w, --webm Create WebM compliant file.
--title <title> Title for this output file.
--global-tags <file> Read global tags from a XML file.
Chapter handling:
--chapters <file> Read chapter information from the file.
--chapter-language <lng> Set the 'language' element in chapter entries.
--chapter-charset <cset> Charset for a simple chapter file.
--cue-chapter-name-format <format>
Pattern for the conversion from CUE sheet
entries to chapter names.
--default-language <lng> Use this language for all tracks unless
overridden with the --language option.
Segment info handling:
--segmentinfo <file> Read segment information from the file.
--segment-uid <SID1,[sID2...]>
Set the segment UIDs to SID1, SID2 etc.
General output control (advanced global options):
--track-order <FileID1:TID1,FileID2:TID2,FileID3:TID3,...>
A comma separated list of both file IDs
and track IDs that controls the order of the
tracks in the output file.
--cluster-length <n[ms]> Put at most n data blocks into each cluster.
If the number is postfixed with 'ms' then
put at most n milliseconds of data into each
cluster.
--no-cues Do not write the cue data (the index).
--clusters-in-meta-seek Write meta seek data for clusters.
--disable-lacing Do not Use lacing.
--enable-durations Enable block durations for all blocks.
--append-to <SFID1:STID1:DFID1:DTID1,SFID2:STID2:DFID2:DTID2,...>
A comma separated list of file and track IDs
that controls which track of a file is
appended to another track of the preceding
file.
--append-mode <file|track>
Selects how mkvmerge calculates timecodes when
appending files.
--timecode-scale <n> Force the timecode scale factor to n.
File splitting and linking (more global options):
--split <d[K,M,G]|HH:MM:SS|s>
Create a new file after d bytes (KB, MB, GB)
or after a specific time.
--split timecodes:A[,B...]
Create a new file after each timecode A, B
etc.
--split-max-files <n> Create at most n files.
--link Link splitted files.
--link-to-previous <SID> Link the first file to the given SID.
--link-to-next <SID> Link the last file to the given SID.
Attachment support (more global options):
--attachment-description <desc>
Description for the following attachment.
--attachment-mime-type <mime type>
Mime type for the following attachment.
--attachment-name <name> The name should be stored for the
following attachment.
--attach-file <file> Creates a file attachment inside the
Matroska file.
--attach-file-once <file>
Creates a file attachment inside the
firsts Matroska file written.
Options for each input file:
-a, --audio-tracks <n,m,...>
Copy audio tracks n,m etc. Default: copy all
audio tracks.
-A, --no-audio Don't copy any audio track from this file.
-d, --video-tracks <n,m,...>
Copy video tracks n,m etc. Default: copy all
video tracks.
-D, --no-video Don't copy any video track from this file.
-s, --subtitle-tracks <n,m,...>
Copy subtitle tracks n,m etc. Default: copy
all subtitle tracks.
-S, --no-subtitles Don't copy any subtitle track from this file.
-b, --button-tracks <n,m,...>
Copy buttons tracks n,m etc. Default: copy
all buttons tracks.
-B, --no-buttons Don't copy any buttons track from this file.
-m, --attachments <n[:all|first],m[:all|first],...>
Copy the attachments with the IDs n, m etc to
all or only the first output file. Default: copy
all attachments to all output files.
-M, --no-attachments Don't copy attachments from a source file.
-t, --tags <TID:file> Read tags for the track from a XML file.
--track-tags <n,m,...> Copy the tags for tracks n,m etc. Default: copy
tags for all tracks.
-T, --no-track-tags Don't copy tags for tracks from the source file.
--no-global-tags Don't keep global tags from the source file.
--no-chapters Don't keep chapters from the source file.
-y, --sync <TID:d[,o[/p]]>
Synchronize, adjust the track's timecodes with
the id TID by 'd' ms.
'o/p': Adjust the timecodes by multiplying with
'o/p' to fix linear drifts. 'p' defaults to
1 if omitted. Both 'o' and 'p' can be
floating point numbers.
--default-track <TID[:bool]>
Sets the 'default' flag for this track or
forces it not to be present if bool is 0.
--forced-track <TID[:bool]>
Sets the 'forced' flag for this track or
forces it not to be present if bool is 0.
--blockadd <TID:x> Sets the max number of block additional
levels for this track.
--track-name <TID:name> Sets the name for a track.
--cues <TID:none|iframes|all>
Create cue (index) entries for this track:
None at all, only for I frames, for all.
--language <TID:lang> Sets the language for the track (ISO639-2
code, see --list-languages).
--aac-is-sbr <TID[:0|1]> The track with the ID is HE-AAC/AAC+/SBR-AAC
or not. The value ':1' can be omitted.
--timecodes <TID:file> Read the timecodes to be used from a file.
--default-duration <TID:Xs|ms|us|ns|fps>
Force the default duration of a track to X.
X can be a floating point number or a fraction.
--nalu-size-length <TID:n>
Force the NALU size length to n bytes with
2 <= n <= 4 with 4 being the default.
Options that only apply to video tracks:
-f, --fourcc <FOURCC> Forces the FourCC to the specified value.
Works only for video tracks.
--aspect-ratio <TID:f|a/b>
Sets the display dimensions by calculating
width and height for this aspect ratio.
--aspect-ratio-factor <TID:f|a/b>
First calculates the aspect ratio by multi-
plying the video's original aspect ratio
with this factor and calculates the display
dimensions from this factor.
--display-dimensions <TID:width>x<height>
Explicitly set the display dimensions.
--cropping <TID:left,top,right,bottom>
Sets the cropping parameters.
--stereo-mode <TID:n|none|left|right|both>
Sets the stereo mode parameter. It can
either be a numer 0 - 3 or one of the
keywords 'none', 'right', 'left' or 'both'.
Options that only apply to text subtitle tracks:
--sub-charset <TID:charset>
Determines the charset the text subtitles are
read as for the conversion to UTF-8.
Options that only apply to VobSub subtitle tracks:
--compression <TID:method>
Sets the compression method used for the
specified track ('none' or 'zlib').
Other options:
-i, --identify <file> Print information about the source file.
-l, --list-types Lists supported input file types.
--list-languages Lists all ISO639 languages and their
ISO639-2 codes.
--priority <priority> Set the priority mkvmerge runs with.
--ui-language <code> Force the translations for 'code' to be used.
--command-line-charset <charset>
Charset for strings on the command line
--output-charset <cset> Output messages in this charset
-r, --redirect-output <file>
Redirects all messages into this file.
@optionsfile Reads additional command line options from
the specified file (see man page).
-h, --help Show this help.
-V, --version Show version information.
Please read the man page/the HTML documentation to mkvmerge. It
explains several details in great length which are not obvious from
this listing.
Lien vers le commentaire
Partager sur d’autres sites

Re!

Encore merci pour ton soutien ;-)

Quand je tape "mkvmerge", voilà le résultat:

mini_583033331.jpg

Je reste perplexe...

Et au final, je n'ai aucune chance d'avoir une réelle interface? C'est forcément par ligne de commande que ça fonctionne? Car ça n'a pas l'air simple d'effectuer des requêtes par ce biais (encore une fois, je suis novice en la matière).

D'où très certainement l'intérêt de ton script pour automatiser le tout. Mais là, c'est l'étape suivante car je suis novice aussi dans ce domaine...

Lien vers le commentaire
Partager sur d’autres sites

Il te manque bien une dépendence

Voici la liste de mes packages IPKG installés :

adduser - 1.10.3-1 - a multi-call binary for login and user account administration
boost-filesystem - 1_45_0-1 - Boost is a set of peer-reviewed extensions to the standard C++ library
boost-regex - 1_45_0-1 - Boost is a set of peer-reviewed extensions to the standard C++ library
boost-system - 1_45_0-1 - Boost is a set of peer-reviewed extensions to the standard C++ library
bzip2 - 1.0.6-1 - Very high-quality data compression program
expat - 2.0.1-1 - XML Parser library
file - 5.12-1 - Ubiquitous file identification utility.
flac - 1.2.1-1 - FLAC is a free lossless audio codec. This package contains the codec libraries and the command-line tools flac and metaflac.
libebml - 1.0.0-1 - Extensible Binary Meta Language access library
libmatroska - 1.0.0-1 - lib to access Matroska (an extensible open standard Audio/Video container format)
libogg - 1.2.1-1 - Ogg is a multimedia container format.
libvorbis - 1.3.2-1 - Ogg Vorbis compressed audio format.
lzo - 2.03-1 - Compression library
mkvtoolnix - 4.2.0-1 - A set of tools to create, alter and inspect Matroska files
mlocate - 0.24-1 - A merginging locate program to find files fast
wakelan - 1.1-2 - send the magic wakeup package over the LAN
wget - 1.12-2 - A network utility to retrieve files from the Web
zlib - 1.2.5-1 - zlib is a library implementing the 'deflate' compression system.
Vérifie ceux que j'ai mis en rouge, via la commande "ipkg list_installed"
Si il en manque, installe via "ipkg install <nom_du_package>
Lien vers le commentaire
Partager sur d’autres sites

Re!

Alors,

@ bud77:

Voilà le résultat de la commande. A priori, il ne manque rien:

boost-filesystem - 1_45_0-1 - Boost is a set of peer-reviewed extensions to the standard C++ library
boost-regex - 1_45_0-1 - Boost is a set of peer-reviewed extensions to the standard C++ library
boost-system - 1_45_0-1 - Boost is a set of peer-reviewed extensions to the standard C++ library
bzip2 - 1.0.6-1 - Very high-quality data compression program
expat - 2.0.1-1 - XML Parser library
file - 5.12-1 - Ubiquitous file identification utility.
flac - 1.2.1-1 - FLAC is a free lossless audio codec. This package contains the codec libraries and the command-line tools flac and metaflac.
libebml - 1.0.0-1 - Extensible Binary Meta Language access library
libmatroska - 1.0.0-1 - lib to access Matroska (an extensible open standard Audio/Video container format)
libogg - 1.2.1-1 - Ogg is a multimedia container format.
libvorbis - 1.3.2-1 - Ogg Vorbis compressed audio format.
lzo - 2.03-1 - Compression library
mkvtoolnix - 4.2.0-1 - A set of tools to create, alter and inspect Matroska files
wget - 1.12-2 - A network utility to retrieve files from the Web
zlib - 1.2.5-1 - zlib is a library implementing the 'deflate' compression system

Du moins les "boost" sont là ;-)

@ CoolRaoul:

J'ai testé également...

DiskStation> mkvmerge
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Aborted (core dumped)
DiskStation> export LANG=C
DiskStation> mkvmerge
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Aborted (core dumped)
DiskStation>

Malheureusement, dans tous les cas, ben rien... :(

Lien vers le commentaire
Partager sur d’autres sites

Tente l'ancienne méthode alors : export LC_ALL=C

Ça a marché! J'ai le même résultat que toi avec la commande "mkvmerge" après un "export LC_ALL=C". ;-)

Seulement, cela ne semble pas permanent. Il y a moyen que ce le soit?

Et c'est bien dommage que l'on ne puisse pas avoir une interface réelle dans le DSM. C'est quelque chose de possible à l'avenir?

Je vais maintenant me lancer dans la mise en place du script. Y a des tutos expliquant comment le mettre en place par ligne de commande?

Vais finir par y arriver :ph34r:

Lien vers le commentaire
Partager sur d’autres sites

Ou éditer le .profile du user root pour rajouter la même commande

(En tout cas, je me souviens pas avoir du faire cette modif chez moi)

Pour la mise en place du script, il faut commencer par "vi", l'éditeur de fichier en ligne de commande

Y'a une page dédiée dans l'onglet wiki du forum (en haut), sinon y'a google :P

En gros, tu crées un fichier, tu l'édites, tu colles le contenu du script, et tu fais des essais

Dans un premier temps, fait des essais sur des copies de fichier, dans un dossier à part

Et décommente tout les lignes (qui commencent par #, il faut retirer le #), sauf la toute première ligne

Lien vers le commentaire
Partager sur d’autres sites

Re!

Bon, je me lance...

J'ai créé un dossier "scripts" à la racine du NAS dans lequel j'ai créé un fichier "fortoolnix.sh" que je vais éditer avec Config File Editor (plus simple pour moi).

Concernant le "export LC_ALL=C", je peux le mettre dans le script proposé plus haut? Et dans ce cas, à quel niveau?

Je vous posterai ce que j'aurai fait (en espérant que je m'en sorte ;) ).

Modifié par Hayholten
Lien vers le commentaire
Partager sur d’autres sites

Bon, voilà où j'en suis (c'est vraiment tout nouveau pour moi)...

Déjà, le fichier. Je pense qu'on est bon:

mini_264201701.jpg

Ensuite, le script (collé dans CFE):

#!/bin/ash
SHARE=server

if [ -z "$1" ] 
	then
		echo "/volume1/video/test"
		exit
	else
		CHECK_USER=$(whoami)
		if [ "$CHECK_USER" == "root" ]
		then 
				eval find "$*" -name *.srt |while read SRTNAME
				do
					echo "Fichier SRT trouve :" "$SRTNAME"
					VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv')
					if [ -f "$VIDNAME" ]
						then
							echo "Video trouve" "$VIDNAME"
							OUTNAME="${SRTNAME%.fr.*}".mkv
							if [ "$VIDNAME" == "$OUTNAME" ]
								then 
									echo ""$VIDNAME" existe deja. Renommage avec .subbed"
									OUTNAME="${SRTNAME%.fr.*}".subbed.mkv
							fi
							echo "fichier de sortie" "$OUTNAME"
							read -p 'Merge des fichiers ? (o)' MAJ </dev/tty
							if [ "$MAJ" == "o" ]
								then
									/opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME"
									echo "Ajout a l index"
									/usr/syno/bin/synoindex -a "$OUTNAME"
									/opt/bin/chmod 777 "$OUTNAME"
									/opt/bin/chown admin:users "$OUTNAME"
									echo "Suppression de l index" 
									/usr/syno/bin/synoindex -d "$VIDNAME"
									if [ -f "$OUTNAME" ]
										then
											echo Suppression de "$VIDNAME" "$SRTNAME"
											mv "$VIDNAME" /volume1/$video/#recycle
											mv "$SRTNAME" /volume1/$video/#recycle
									fi
								else
									echo "Pas de merge"
							fi
						else
							echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv"
					fi
				done 
		else
			echo "Ce script doit etre lance avec le user root"
			exit
		fi
fi

Et évidement, j'ai des questions:

- le script se lance-t'il tout seul?

- est-ce que je peux lui demander de surveiller un gros répertoire?

- le nom de la piste de sous-titre peut-il être défini ("Français" par exemple) et activé par défaut (c'est une option de mkvmerge)?

Si ça marche, ça va être une tuerie cette histoire ;-)

Lien vers le commentaire
Partager sur d’autres sites

Désolé, j'étais à l'étranger ...

Alors :

1) il faut éditer le SHARE=XXX par le nom de ton partage windows. (Ceci permet de mettre les fichiers dans la corbeille de ce partage, si tu as activé la corbeille). Si tu as pas activé la corbeille, met un # devant la ligne, ainsi que remplacer les lignes

mv "$VIDNAME" /volume1/$video/#recycle
mv "$SRTNAME" /volume1/$video/#recycle

Par

rm "$VIDNAME" "$SRTNAME"

2) Je vois que tu as édité la ligne 6. C'est pas bon :P

Remet ce que j'ai mis

Il faut que tu lances le script en précisant le dossier à scanner :

./fortoolnix.sh /volume1/video/test

(Enfin, j'en déduit que c'est ton chemin)

Avec ces 2 modifications çà devrais fonctionner, si c'est pas le cas, rajoute dans le script, en ligne 2 : "set -x", relance le script, et colle les erreurs que tu as ici :)

Lien vers le commentaire
Partager sur d’autres sites

Re!

Je t'en prie, pas de pépin ;-) C'est déjà très sympa de m'aider...

Well, le script, j'en suis là:

#!/bin/ash
SHARE=server

if [ -z "$1" ] 
	then
		echo "Il faut preciser le repertoire a scanner"
		exit
	else
		CHECK_USER=$(whoami)
		if [ "$CHECK_USER" == "root" ]
		then 
				eval find "$*" -name *.fr.srt |while read SRTNAME
				do
					echo "Fichier SRT trouve :" "$SRTNAME"
					VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv')
					if [ -f "$VIDNAME" ]
						then
							echo "Video trouve" "$VIDNAME"
							OUTNAME="${SRTNAME%.fr.*}".mkv
							if [ "$VIDNAME" == "$OUTNAME" ]
								then 
									echo ""$VIDNAME" existe deja. Renommage avec .subbed"
									OUTNAME="${SRTNAME%.fr.*}".subbed.mkv
							fi
							echo "fichier de sortie" "$OUTNAME"
							read -p 'Merge des fichiers ? (o)' MAJ </dev/tty
							if [ "$MAJ" == "o" ]
								then
									/opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME"
									echo "Ajout a l index"
									/usr/syno/bin/synoindex -a "$OUTNAME"
									/opt/bin/chmod 777 "$OUTNAME"
									/opt/bin/chown USER:admin "$OUTNAME"
									echo "Suppression de l index" 
									/usr/syno/bin/synoindex -d "$VIDNAME"
									if [ -f "$OUTNAME" ]
										then
											echo Suppression de "$VIDNAME" "$SRTNAME"
											mv "$VIDNAME" /volume1/$video/#recycle
											mv "$SRTNAME" /volume1/$video/#recycle
									fi
								else
									echo "Pas de merge"
							fi
						else
							echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv"
					fi
				done 
		else
			echo "Ce script doit etre lance avec le user root"
			exit
		fi
fi

Concernant la corbeille, oui je l'ai activé. Par contre je ne comprends toujours pas ce que tu entends par "nom de partage". Que Windows vient faire là-dedans?

Et puis autre question, le script doit être lancé c'est ça? C'est pas automatique (surveillance du dossier, etc.)? Ou alors on peut peut-être créer une tâche via le DSM nan?

Sinon, j'ai réussi à faire un merge, c'est cool. J'ai pas testé le fichier mais j'ai l'impression que ça fonctionne. Je vais encore faire des tests ;-)

Lien vers le commentaire
Partager sur d’autres sites

Ah, y'a un bout que tu as pas modifié :

/opt/bin/chown USER:admin "$OUTNAME"

Il faut remplacer "USER" par ton user

Le partage, c'est le dossier partagé que tu as crée sur le syno (chez moi, ce n'est pas sur /video)

Le script n'est pas automatique, mais tu peux en effet le lancer via le plannificateur DSM

Et non, je n'ai pas prévu de surveillance de dossier. Avec mes connaissances, çà consommerait un paquet de mémoire

Hésite pas à bien tester plein de fichiers différents surtout, pour ne pas avoir de surprises :)

Lien vers le commentaire
Partager sur d’autres sites

Re!

OK, j'ai compris!

Donc, à priori pour le SHARE:

SHARE=/volume1/video

Et pour le USER:

/opt/bin/chown admin:motdepasse? "$OUTNAME"

Et enfin la commande à coller dans le planificateur de tâche du DSM:

/scripts/fortoolnix.sh /volume1/video

Je vais y arriver, ah!

En tout cas, pour le 1er test que j'ai pu faire, pour un fichier de 1,5Go --> 54 secondes. C'est plutôt rapide :D

Lien vers le commentaire
Partager sur d’autres sites

1) si tu utilises le /video, je suis pas sur qu'il y ai de corbeille (vérifie que tu as un dossier "#recycle")
Si c'est le cas, SHARE=video pour toi
Par contre tu as modifié les lignes "mv XXXX" et çà n'utilises plus la variable $SHARE
Remodifie pour mettre $SHARE à la place de $video

2) nope, c'est "admin:users" dans ton cas (utilisateur admin, et groupe users)

3) c'est bien çà, mais encore une fois, vaut mieux tester dans ton dossier /volume1/video/test au début :P

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.