Hamulec ręczny to niesamowite narzędzie do kompresji wideo, ale wydaje się, że nie zachowuje oryginalnego czasu przechwytywania po skompresowaniu wideo. Jakiś pomysł jak to naprawić?
metadata
video-encoding
handbrake
pixelfreak
źródło
źródło
Odpowiedzi:
Możesz skopiować istniejące metadane z jednego pliku do drugiego bez konieczności ponownego kodowania wideo za pomocą FFmpeg . Zasadniczo zajmuje to sekundę. Aby to zrobić, załóżmy trzy pliki:
in.mp4
- oryginalny plik przed konwersjąout.mp4
- plik po konwersji hamulca ręcznegofixed.mp4
- plik z „poprawionymi” metadanymiPolecenie FFmpeg, aby skopiować pełny rekord metadanych do nowego pliku, to:
Objaśnienie składni:
Aby to rozbić, wykonuje następujące czynności:
in.mp4
iout.mp4
), którym przypisano odpowiednio identyfikatory 0 i 1.-map 1
), więc bierzemy strumienie bitów, które zostały już przekonwertowane-map_metadata 0
)-c copy
), aby skopiować wszystkie strumienie bitów zamiast ponownie kodować wideo.Potem możesz oczywiście zmienić nazwę
fixed.mp4
naout.mp4
.Dowód:
Jako przykład, oto część rekordu metadanych mojego oryginalnego pliku:
Oto plik po konwersji hamulca ręcznego:
Oto końcowy plik po zmapowaniu metadanych:
Jeśli chcesz zrobić wszystko z FFmpeg:
W rzeczywistości nie trzeba używać hamulca ręcznego, jeśli można korzystać z FFmpeg, na którym i tak polega hamulec ręczny. W najprostszym przypadku możesz wykonać konwersję w następujący sposób:
Spowoduje to konwersję danych wejściowych z koderem x264 i dźwiękiem AAC na plik wyjściowy, kopiując oryginalne metadane. Aby zmienić jakość wydruku, możesz:
Więcej informacji znajdziesz w przewodniku kodowania x264 na wiki FFmpeg.
źródło
Unknown encoder 'libfaac'
błąd-c:a aac -strict experimental
zamiast tego.Niestety wydaje się, że hamulec ręczny nie może zrobić tego sam, ale podobnie jak w przykładzie ffmpeg, znaczniki czasu można skopiować z oryginału po kompresji za pomocą
touch
polecenia unix:ustawi to znacznik czasu w skompresowanym pliku na taki sam jak podany plik referencyjny.
źródło
Znalazłem łatwiejszy sposób, aby to zrobić, używając innego oprogramowania o nazwie
Adapter
: http://www.macroplant.com/adapter/Nie ma wszystkich zaawansowanych ustawień, takich jak HandBrake, ale wykonuje zadanie (również przy użyciu ffmpeg) i zachowuje potrzebne metadane.
źródło
Używam macOS Yosemite i HandBrakeBatch - używaj go do konwertowania plików, ale kliknij pole „zachowaj daty utworzenia i modyfikacji pliku” w menu „Preferencje”.
Następnie importuję filmy do Lightroom 5, ale nadal nie zachowują dat utworzenia. Ale co najważniejsze, pliki są wyświetlane w Finderze z poprawną datą utworzenia. Więc wybrałem je wszystkie w bibliotece Lightroom → Metadane (prawa kolumna okna dialogowego) → Czas przechwytywania → Zmień datę utworzenia pliku → Zmień wszystko.
Miałem 850 starych rodzinnych filmów - musiałem wykonać ten proces w seriach po 100. Hamulec ręczny ulega awarii z dużą ilością plików.
źródło
Zrobiłem skrypt bash, który może wsadowo przesyłać metadane, używając
touch
jak sugerowano powyżej. Aby to zadziałało, musisz mieć oryginalne i przekonwertowane pliki w osobnych katalogach, każdy z taką samą liczbą plików (katalogi mogą zawierać tylko pliki wideo, ponieważ inne pliki / katalogi będą kolidować) i w tej samej kolejności. Następnie kopiuje metadane i wszystko gotowe. Skrypt wyświetla wszystkie pary plików, więc możesz sprawdzić błędy na końcu, jeśli chcesz.Kod może nie jest najładniejszy, ponieważ był to mój pierwszy właściwy skrypt bash, ale był dla mnie dość szybki i stabilny, więc oto:
Aby uruchomić, wykonaj:
sudo bash script.sh /sourcedir /converteddir
źródło
Jeśli chodzi o czas modyfikacji na poziomie pliku, to miałem ten sam problem i byłem w stanie go odzyskać za pomocą exiftool .
Trwa to metadane i
FileModifyDate
odinput.mp4
i kopie gooutput.mp4
.Aby to zautomatyzować, ponieważ miałem dużą liczbę plików do transkodowania, stworzyłem narzędzie o nazwie Shrinkwrap, które najpierw transkoduje za pomocą FFmpeg (zrezygnowałem z HandBrake z powodu konieczności zachowania większej liczby metadanych), a następnie odzyskuje znacznik czasu modyfikacji exiftool.
źródło
Po wielu poszukiwaniach w większości zrezygnowałem z używania starych plików wideo z poprawną datą utworzenia / modyfikacji, aby zastąpić datę utworzenia / modyfikacji moich nowych plików wideo skompresowanych przez Handbrake. Ponieważ większość moich filmów ma datę / godzinę w nazwie pliku, eksperymentowałem i uzyskałem dwie metody działania. Pierwszym i najlepszym jest użycie metody znacznika czasu Advanced Renamer, która MOŻE zmienić datę pliku zmodyfikowaną, utworzoną i dostępną, nie tylko samą nazwę pliku. https://www.advancedrenamer.com/download .
Znalazłem również skrypt PowerShell https://www.michaelmiklis.de/set-creation-and-modification-date-from-filename/, który może być dostosowany przez programistę do innych formatów nazw / dat. W obecnym stanie działa tylko wtedy, gdy nazwa pliku ma taką samą strukturę, jak w tym przykładzie.
Na szczęście moja liczba filmów bez daty modyfikacji w nazwie pliku jest wystarczająco mała, że mogę je zmienić ręcznie, nie potrwa to zbyt długo.
Próbowałem użyć ffmpeg, ale jego polecenie map_metadata zmienia tylko dane w pliku, a nie datę modyfikacji, utworzoną z samego pliku. Tego rodzaju wewnętrzne metadane Hamulec ręczny już dobrze sobie radzi.
źródło
Program MyFFmpeg robi to bardzo dobrze. W jego opcjach można wybrać opcję Zachowaj oryginalną datę utworzenia / modyfikacji z pliku źródłowego .
Szukałem tego, ponieważ mam moje domowe filmy na serwerze Plex, a pliki są uporządkowane według daty utworzenia, co jest bardzo przydatne, jeśli chcesz zobaczyć rzeczy z konkretnego roku.
Niestety nie jest to darmowa opcja, obecnie kosztuje 20 euro lub około 21 USA. Mają wersję próbną na 10 zastosowań, zanim będziesz musiał kupić licencję. Zaskoczony, niektóre darmowe GUI ffmpeg nie mają lub nie dodają tej opcji.
źródło
Staram się zachować datę utworzenia, kompresując moje niewiarygodnie duże filmy GoPro MP4 do H.264.
Znalazłem program HandBrakeBatch . Właśnie tego potrzebuję do skompresowania ponad 1000 plików za jednym razem, przy jednoczesnym zachowaniu daty utworzenia (metadane).
Nie znalazłem żadnych innych programów, które mogłyby to zrobić. Próbowałem z FFmpeg, HandBrake i Wonderful Video Converter, ale nie.
źródło