Je veux convertir par lots tous les fichiers .mkv d'un dossier en .mp4 avec VLC.
Il doit utiliser le flux vidéo / audio d'origine et, si possible, le sous-titre .ass du .mkv. Ce n'est pas vraiment une conversion, c'est plus comme changer le conteneur - mon lecteur ne peut pas lire les vidéos MKV.
Si je fais cette conversion à la main (manuellement), cela fonctionne, mais j'ai beaucoup de fichiers MKV à convertir, donc cela prendrait beaucoup de temps.
J'ai cherché sur Internet un fichier de commandes pour ce faire et j'en ai trouvé quelques-uns. J'ai essayé de les modifier à mon souhait, mais toutes les tentatives que j'ai essayées ont juste créé un fichier .mp4 qui ne contient pas le flux audio et le flux vidéo ne peut pas non plus être rendu par tous mes lecteurs multimédias sur le PC.
Alors, quelqu'un pourrait-il me dire à quoi doit ressembler le lot, afin qu'il fonctionne avec le flux vidéo et audio d'origine (et peut-être les sous-titres .ass)?
la source
Réponses:
mkvtomp4
On dirait que
mkvtomp4
c'est ce que tu veux?Vous pouvez télécharger les versions Windows et Linux sur la page Code Google. Vous aurez cependant besoin de logiciels supplémentaires.
Vérifiez les sites pour les téléchargements pour Windows ou Linux. Sur OS X, vous ne devez le faire que
brew install mkvtoolnix mp4box
si vous avez Homebrew .Cependant, cela ne copiera pas vos sous-titres. Vous aurez besoin d'une étape supplémentaire.
Lot FFmpeg
Si mkvtomp4 ne fonctionne pas pour vous, un simple fichier batch FFmpeg pourrait également le faire. Pour Windows, vous pouvez télécharger les versions de Zeranoe . Sous Linux, vérifiez FFmpeg à partir des sources de package. Sous OS X, utilisez
brew install ffmpeg
.Ensuite, appelez simplement:
Cela créera un conteneur MP4 valide sans ré-encodage. Parcourez les fichiers en fonction des besoins et de votre système d'exploitation. Ce lot ne copiera cependant pas les sous-titres.
Dans * nix, vous pouvez effectuer les opérations suivantes. Créez simplement un fichier
convert.sh
:Remplacez le chemin d'accès à votre dossier vidéo ici. Rendez-le exécutable avec
chmod +x convert.sh
, puis exécutez-le avec./convert.sh
.Sous Windows, vous avez probablement besoin de deux fichiers batch ( plug sans vergogne d'ici ), l'un étant
startconvert.bat
:Et celui qui effectue la conversion:
Enregistrez les deux dans le dossier vidéo. Exécutez simplement
startconvert.bat
le dossier à partir duquel vous souhaitez démarrer la conversion.Les sous-titres
Si vous souhaitez ajouter les sous-titres, vous devrez peut-être une procédure manuelle si les éléments suivants ne fonctionnent pas pour vous:
Pour extraire les sous-titres, utilisez:
Cela suppose que votre fichier contient vraiment les sous-titres à l'ID de piste numéro 3 et qu'ils peuvent être exportés au format SRT. Pour vérifier si un fichier contient vraiment des sous-titres sur la piste 3, utilisez
mkvmerge -i input.mkv
.Ensuite, utilisez MP4Box pour ajouter à nouveau les sous-titres au fichier MP4.
la source
C'est une partie de la réponse donnée par slhck (et merci, slhck!) Parce que j'ai trouvé que la commande ne fonctionnait pas pour la dernière ffmpeg (à ce jour) - peut-être que les paramètres ont changé entre les versions?
Sur Windows 7, en utilisant ffmpeg v.20130103-git-9e36d9e-win64-static (décompressez-le avec l'utilitaire 7zip), trouvé via http://ffmpeg.zeranoe.com/builds/ tour à tour via http://ffmpeg.org /download.html , la commande suivante a converti un fichier .mov (extrait d'un iPhone) en un fichier .mp4:
J'ai trouvé que changer la partie .mp4 de cela en .avi fonctionnait aussi, pour la changer en un conteneur .avi. Avec l'un ou l'autre conteneur cible, l'utilisation de ces paramètres "-vcodec copy -acodec copy" semble copier uniquement les flux source dans un nouveau conteneur (dans la cible), donc c'est une conversion sans perte (et je suppose que ce serait le cas avec un variété de conteneurs cibles, aussi).
Ces réglages des lots donnés par slhck ont également fonctionné pour moi:
callConvert.bat:
convert.bat:
la source
-c:a
et-acodec
, ou-c:v
et-vcodec
. En fait, j'utilise toujours le premier aujourd'hui, car c'est la syntaxe recommandée, et les deux sont mentionnés dans la documentation FFmpeg . Notez que la conversion du conteneur en AVI peut casser pour de nombreux codecs vidéo et audio, car les fichiers AVI ne prennent pas en charge le codage prédictif (que la vidéo H.264 utilise - celui que l'iPhone vous offre). Si vous n'utilisez pas de conteneur MP4 ou MOV comme cible, il est toujours préférable de ré-encoder.Vieille question, mais voici ma réponse, pour mémoire. MP4 ne peut pas faire de sous-titres à moins qu'ils ne fassent partie de l'image vidéo, mais voici comment convertir des fichiers .mkv en .mp4:
Enregistrez-le sous mkv2mp4.ps1 et déposez-le dans le dossier avec lequel vous travaillez. Faites un clic droit et "Ouvrir dans Powershell" et il fera son travail.
C'est la première fois que je regarde même Powershell (et la dernière j'espère - pourquoi MS ne pourrait-il pas simplement porter Bash?!) Mais cela fonctionne pour moi et est basé sur le code que j'ai trouvé ici: https: // wiki .videolan.org / How_to_Batch_Encode / # Powershell
la source
Makefile
- afin de pouvoir la réexécuter et convertir uniquement les nouvelles sources ainsi que pour pouvoir exécuter plusieurs conversions en parallèle (pour utiliser tous vos processeurs ).