Chcę wsadowo przekonwertować wszystkie pliki .mkv w folderze do .mp4 z VLC.
Powinien używać oryginalnego strumienia wideo / audio i, jeśli to możliwe, napisów .ass w .mkv. To nie jest tak naprawdę konwersja, to raczej zmiana kontenera - mój odtwarzacz nie może odczytać filmów MKV.
Jeśli zrobię tę konwersję ręcznie (ręcznie), to zadziała, ale mam wiele plików MKV do konwersji, więc zajęłoby to dużo czasu.
Przeszukałem w Internecie plik wsadowy, aby to zrobić, i znalazłem kilka. Próbowałem je zmodyfikować zgodnie z własnymi życzeniami, ale wszystkie próby, które próbowałem, właśnie utworzyły plik .mp4, który nie zawiera strumienia audio, a strumień wideo również nie może być renderowany przez wszystkie moje odtwarzacze multimedialne na komputerze.
Czy ktoś mógłby mi powiedzieć, jak ma wyglądać partia, aby działała z oryginalnym strumieniem wideo i audio (i może napisami .ass)?
źródło
Odpowiedzi:
mkvtomp4
Wygląda na
mkvtomp4
to, czego chcesz?Możesz pobrać wersje Windows i Linux ze strony Google Code. Będziesz jednak potrzebował dodatkowego oprogramowania.
Sprawdź witryny pod kątem plików do pobrania dla systemu Windows lub Linux. W systemie OS X wystarczy,
brew install mkvtoolnix mp4box
jeśli masz Homebrew .Nie spowoduje to jednak skopiowania napisów. Będziesz potrzebował dodatkowego kroku.
Partia FFmpeg
Jeśli mkvtomp4 nie działa dla ciebie, może również zrobić prosty plik wsadowy FFmpeg . W systemie Windows można pobrać kompilacje Zeranoe . W systemie Linux sprawdź FFmpeg ze źródeł pakietów. W OS X użyj
brew install ffmpeg
.Następnie wystarczy zadzwonić:
Spowoduje to utworzenie prawidłowego kontenera MP4 bez ponownego kodowania. Pętlę nad plikami w razie potrzeby i dostępnych w systemie operacyjnym. Ta partia nie będzie jednak kopiować napisów.
W * nix możesz wykonać następujące czynności. Wystarczy utworzyć plik
convert.sh
:W tym miejscu zastąp ścieżkę do folderu wideo. Zrób to za pomocą
chmod +x convert.sh
, a następnie uruchom za pomocą./convert.sh
.W systemie Windows prawdopodobnie potrzebujesz dwóch plików wsadowych ( bezwstydna wtyczka stąd ), z których jeden to
startconvert.bat
:I taki, który dokonuje konwersji:
Zapisz oba w folderze wideo. Po prostu uruchom
startconvert.bat
z folderu, z którego chcesz rozpocząć konwersję.Napisy na filmie obcojęzycznym
Jeśli chcesz dodać napisy, może być potrzebna procedura ręczna, jeśli poniższe czynności nie działają:
Aby wyodrębnić napisy, użyj:
Zakłada się, że plik naprawdę zawiera napisy o numerze ścieżki 3 i można je wyeksportować do formatu SRT. Aby sprawdzić, czy plik naprawdę zawiera napisy na ścieżce 3, użyj
mkvmerge -i input.mkv
.Następnie użyj MP4Box, aby ponownie dodać napisy do pliku MP4.
źródło
To jest poprawka części odpowiedzi, którą slhck dał (i dzięki, slhck!), Ponieważ odkryłem, że polecenie nie działa dla najnowszej (przy tym piśmie) ffmpeg - może parametry zmieniły się między wersjami?
W systemie Windows 7 za pomocą ffmpeg v.20130103-git-9e36d9e-win64-static (rozpakuj go za pomocą narzędzia 7zip), który można znaleźć na stronie http://ffmpeg.zeranoe.com/builds/ z kolei na stronie http://ffmpeg.org /download.html , następujące polecenie przekonwertowało plik .mov (pobrany z iPhone'a) na plik .mp4:
Przekonałem się, że zmiana tej części .mp4 na .avi również działała, zmieniając ją na kontener .avi. W przypadku dowolnego kontenera docelowego użycie paramaterów „-vcodec copy -acodec copy” zdaje się kopiować strumienie źródłowe tylko do nowego kontenera (w celu), więc jest to konwersja bezstratna (i przypuszczam, że tak byłoby w przypadku różnorodne pojemniki docelowe).
Te ulepszenia partii, które dał nam slhck, również działały dla mnie:
callConvert.bat:
convert.bat:
źródło
-c:a
i-acodec
, lub-c:v
i-vcodec
. W rzeczywistości nadal używam tego pierwszego, ponieważ jest to zalecana składnia i oba są wymienione w dokumentacji FFmpeg . Pamiętaj, że konwersja kontenera na AVI może zepsuć się dla wielu kodeków wideo i audio, ponieważ pliki AVI nie obsługują kodowania predykcyjnego (które wykorzystuje wideo H.264 - takie, które oferuje iPhone). Jeśli nie używasz kontenera MP4 lub MOV jako celu, zawsze lepiej jest przekodować.Stare pytanie, ale oto moja odpowiedź, dla przypomnienia. MP4 nie może tworzyć napisów, chyba że stanowią część klatki wideo, ale w ten sposób przekonwertowałem pliki .mkv na .mp4:
Zapisz go jako mkv2mp4.ps1 i upuść w folderze, z którym pracujesz. Kliknij prawym przyciskiem myszy i „Otwórz w Powershell”, a zrobi to samo.
To pierwszy raz, kiedy nawet spojrzałem na Powershell (i ostatni mam nadzieję - dlaczego MS nie mógł po prostu przenieść Bash ?!), ale działa dla mnie i opiera się na kodzie, który tu znalazłem: https: // wiki .videolan.org / How_to_Batch_Encode / # Powershell
źródło
Makefile
- aby móc go uruchomić ponownie i przekonwertować tylko nowe źródła, a także aby móc wykonywać wiele konwersji równolegle (aby korzystać ze wszystkich procesorów) ).