Saya ingin situs web saya memungkinkan pengguna untuk secara akurat membuat klip mereka sendiri dari video sumber yang saya berikan.
Saya memiliki file video sumber yang ingin saya konversikan menjadi sesuatu yang cocok untuk situs web:
Input #0, matroska,webm, from 'source.mkv':
Duration: 00:28:18.57, start: 0.000000, bitrate: 10183 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 48 tbc (default)
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s (default)
Saya menggunakan ffmpeg untuk mengubahnya seperti:
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
Menonton video ini kembali itu kualitas yang cukup baik dan ukuran file yang cukup kecil untuk kebutuhan saya, dan memuat / memutar di situs web saya.
Saya memiliki halaman web yang memungkinkan pengguna memilih awal dan titik akhir pada video ini - dan membuat klip. Berikut adalah contoh dari perintah ffmpeg yang saya gunakan untuk itu:
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
Masalahnya adalah klip tidak selalu cukup akurat waktu. Biasanya audionya cukup akurat tetapi videonya berhenti setengah detik lebih awal atau lebih.
Apakah ada cara untuk membuat ini akurat dan tidak sinkron untuk mengatakan, 0,2 detik?
EDIT: Menambahkan -force_key_frames 00:00:00.2
tidak membantu.
EDIT: Saya mengubah kliping untuk digunakan -c:v libx264 -c:a aac -strict experimental
bukan -codec:v copy -codec:a copy
dengan hasil (ish) yang baik.
File dapat diputar secara eksternal tanpa masalah - tetapi ketika saya memuatnya ke elemen video html5 saya dan memutarnya - bagian terakhir video (audio baik-baik saja) membeku. Bagian terakhir yang membeku kurang dari sedetik.
Haruskah saya mencobanya dengan encoder video lain? Apa alternatif terbaik untuk libx264? Mengingat saya mungkin ingin ini ada di situs web publik.
Tapi tunggu dulu, bukankah fakta bahwa itu diputar secara akurat tanpa masalah dengan pemain seperti MPC atau Windows Media Player menunjukkan bahwa itu masalah dengan Google Chrome atau elemen video HTML? Atau apakah saya menggunakan penyandian yang tidak didukung atau sesuatu?