Handbrake adalah alat kompresi video yang luar biasa, tetapi sepertinya tidak mempertahankan waktu pengambilan asli setelah video dikompresi. Adakah cara untuk memperbaikinya?
metadata
video-encoding
handbrake
pixelfreak
sumber
sumber
Jawaban:
Anda dapat menyalin metadata yang ada dari satu file ke file lain tanpa perlu menyandikan ulang video menggunakan FFmpeg . Ini pada dasarnya membutuhkan satu detik. Untuk melakukan ini, mari kita asumsikan tiga file:
in.mp4
- file asli sebelum konversiout.mp4
- file setelah konversi Handbrakefixed.mp4
- file dengan metadata "dikoreksi"Perintah FFmpeg untuk menyalin catatan metadata lengkap ke file baru akan menjadi:
Penjelasan sintaksis:
Untuk memecahnya, ini melakukan hal berikut:
in.mp4
danout.mp4
), yang masing-masing diberi ID 0 dan 1.-map 1
), jadi kami mengambil bitstream yang sudah dikonversi-map_metadata 0
)-c copy
) untuk menyalin semua aliran bit alih-alih menyandikan ulang video.Setelah itu, Anda dapat dengan jelas mengganti nama
fixed.mp4
menjadiout.mp4
.Bukti:
Sebagai contoh, inilah bagian dari catatan metadata dari file asli saya:
Ini file setelah konversi Handbrake:
Ini file terakhir setelah memetakan metadata:
Jika Anda ingin melakukan semuanya dengan FFmpeg:
Sebenarnya, Anda tidak benar-benar perlu menggunakan Handbrake jika Anda dapat menggunakan FFmpeg, yang menjadi sandaran Handbrake. Dalam kasus paling sederhana, Anda dapat melakukan konversi seperti ini:
Ini akan mengonversi input dengan encoder x264 dan audio AAC ke file output, menyalin metadata asli. Untuk mengubah kualitas output, Anda dapat:
Baca panduan penyandian x264 di wiki FFmpeg untuk informasi lebih lanjut.
sumber
Unknown encoder 'libfaac'
kesalahan-c:a aac -strict experimental
saja.Sayangnya sepertinya rem tangan tidak dapat melakukannya sendiri, tetapi mirip dengan contoh ffmpeg, cap waktu dapat disalin dari aslinya setelah kompresi dengan menggunakan
touch
perintah unix:ini akan mengatur timestamp pada file terkompresi menjadi sama dengan file referensi yang diberikan.
sumber
Saya menemukan cara yang lebih mudah untuk melakukan ini, menggunakan perangkat lunak berbeda bernama
Adapter
: http://www.macroplant.com/adapter/Itu tidak memiliki semua pengaturan lanjutan seperti HandBrake tetapi melakukan pekerjaan (juga menggunakan ffmpeg) dan mempertahankan metadata yang saya butuhkan.
sumber
Saya menggunakan macOS Yosemite dan HandBrakeBatch - menggunakannya untuk mengonversi file, tetapi klik pada kotak "simpan tanggal pembuatan dan modifikasi file" di menu "Preferences".
Lalu, saya mengimpor video ke Lightroom 5, tetapi mereka masih tidak menyimpan tanggal pembuatannya. Tetapi, yang paling penting, file-file tersebut ditampilkan di Finder dengan tanggal pembuatan yang benar. Jadi saya memilih mereka semua di perpustakaan Lightroom → Metadata (kolom dialog kanan) → Capture Time → Ubah ke tanggal pembuatan File → Ubah Semua.
Saya memiliki 850 video keluarga lama - saya harus melakukan proses ini dalam batch 100. Handbrake crash dengan banyak file.
sumber
Saya membuat skrip bash yang dapat mentransfer metadata, menggunakan
touch
seperti yang disarankan di atas. Agar berfungsi, Anda harus memiliki file asli dan yang dikonversi pada direktori terpisah, masing-masing dengan jumlah file yang sama (direktori hanya boleh memiliki file video, karena file / direktori lain akan mengganggu) dan dalam urutan yang sama. Kemudian itu hanya menyalin metadata dan Anda sudah siap dan selesai. Skrip mencantumkan semua pasangan file sehingga Anda dapat memeriksa kesalahan pada akhirnya jika Anda mau.Kode ini mungkin bukan yang paling rapi karena ini adalah skrip bash pertama saya yang tepat, tetapi sudah cukup cepat dan stabil untuk saya, jadi begini:
Untuk menjalankan lakukan:
sudo bash script.sh /sourcedir /converteddir
sumber
Jika Anda maksud waktu modifikasi tingkat file, maka saya memiliki masalah yang sama, dan dapat memulihkannya dengan exiftool .
Ini mengambil metadata dan
FileModifyDate
dariinput.mp4
dan menyalinnya keoutput.mp4
.Untuk mengotomatisasi ini karena saya memiliki banyak file untuk transcode, saya membuat alat yang disebut Shrinkwrap yang pertama kali mentranskode dengan FFmpeg (saya pindah dari HandBrake karena perlu menyimpan lebih banyak metadata), kemudian memulihkan stempel waktu modifikasi dengan exiftool.
sumber
Setelah banyak pencarian, saya kebanyakan menyerah menggunakan file video lama dengan tanggal yang benar dibuat / dimodifikasi untuk menimpa tanggal yang dibuat / dimodifikasi dari file video baru saya yang dikompresi dengan rem tangan. Karena sebagian besar video saya memiliki tanggal / waktu dalam nama file, saya bereksperimen dan mendapat dua metode untuk bekerja. Yang pertama dan terbaik adalah menggunakan metode cap waktu Advanced Renamer, yang BISA mengubah tanggal file yang dimodifikasi, dibuat, dan diakses, bukan hanya nama file itu sendiri. https://www.advancedrenamer.com/download .
Saya juga menemukan skrip powershell https://www.michaelmiklis.de/set-creation-and-modification-date-from-filename/ yang dapat diadaptasi oleh programmer untuk format nama file / tanggal lainnya. Dalam kondisi saat ini, ia hanya berfungsi jika nama file disusun persis seperti pada contoh itu.
Untungnya jumlah video saya tanpa tanggal yang diubah dalam nama file cukup rendah. Saya dapat mengubahnya secara manual, tidak akan terlalu lama.
Saya mencoba menggunakan ffmpeg, tetapi perintah map_metadata hanya mengubah data di dalam file, bukan tanggal yang dimodifikasi, dibuat dari file itu sendiri. Handbrake internal semacam itu sudah baik-baik saja.
sumber
Program MyFFmpeg melakukan ini dengan sangat baik. Dalam opsinya ada pilihan untuk Menjaga Penciptaan Asli / Tanggal Dimodifikasi dari File Sumber .
Saya telah mencari ini karena saya memiliki video rumah saya di server Plex dan file-file tersebut diatur berdasarkan tanggal pembuatan, yang sangat berguna jika Anda ingin melihat barang-barang dari tahun tertentu.
Sayangnya ini bukan opsi gratis, saat ini harganya 20 euro atau sekitar 21 US. Mereka memiliki percobaan untuk 10 penggunaan sebelum Anda harus membeli lisensi. Terkejut, beberapa GUI ffmpeg gratis tidak memiliki atau menambahkan opsi ini.
sumber
Saya mencoba mempertahankan tanggal pembuatan sementara saya mengompres video GoPro MP4 saya yang sangat besar ke H.264.
Saya menemukan program HandBrakeBatch . Persis seperti yang saya perlukan untuk mengkompres lebih dari 1000 file dalam sekali jalan, sambil menjaga tanggal pembuatan (metadata).
Belum menemukan program lain yang dapat melakukan ini. Sudah mencoba FFmpeg, HandBrake, dan Wonderful Video Converter, tetapi tidak.
sumber