Friday, September 28, 2018

Mengatasi Audio Tidak Sync (File)

Pada bagian sebelumnya dijelaskan terjadi audio tidak sync saat diterima decoder.

Ada kalanya kita mendapatkan file mp4 atau avi, tapi ketika di play, ternyata audio tidak sync. Hal ini dapat terjadi karena adanya masalah pada kamera perekam, maupun adanya bugs pada software yang ada pada kamera perakam.

Audio tidak sync bisa juga disebabkan karena saat transcoder satu file format ke format yang lain terdapat parameter yang tidak tepat, atau adanya bugs pada software transcoder.

Perbaikan File Audio Tidak Sync

Ada dua kemungkinan:

o Audio terlambat muncul
o Audio lebih cepat muncul

Kita dapat menggunakan ffmpeg untuk memperbaiki file tersebut.

STREAM ID Pada Multiple File Input

ffmpeg -i original.avi -i original.avi
Input #0, avi, from ‘original.avi’:

Stream #0.0: Video: mpeg4, yuv420p, 672×272 [PAR 1:1 DAR 42:17], 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s

Input #1, avi, from ‘original.avi’:

Stream #1.0: Video: mpeg4, yuv420p, 672×272 [PAR 1:1 DAR 42:17], 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #1.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s
Terlihat bahwa file yang sama di input dua kali. Kita bisa bermain dengan video dan audio stream nya.
Video 0:0 bisa dikawinkan dengan Audio 1:1 (delayed)
atau 
Video 1.0 bisa dikawinkan dengan Audio 0.1 (delayed)
itoffset

Command diatas akan mendelay 2 detik. Kenapa?
Karena -itofsset diletakkan setelah file 1. Artinya semua Video (1:0) dan Audio (1:1) terkenda delay. Yang diambil hanya Audio nya saja (1:1) di campur dengan Video yang tidak terdelay (0:0).
Jadi file outputnya adalah gabungan dari:
Stream 0:0 --> video di file 0 yang tidak terdelay
Stream 1:1 --> audio di file 1 yang terdelay 2 detik.
Contoh-contoh lain
Case 1: Audio muncul duluan

ffmpeg -i clip.mp4 -itsoffset 0.150 -i clip.mp4 -vcodec copy -acodec copy -map 0:0 -map 1:1 output.mp4
Contoh tersebut: file 1 terdelay 0.15 detik untuk Video (1:0) dan Audio (1:1). Sedangkan outputnya adalah menggabungkan 0:0 (Video file 0 yang tidak terdelay) dengan 1:1 (Audio file 1 yang didelay).
Case 2: Audio terlambat muncul

ffmpeg -i clip.mp4 -itsoffset 0.150 -i clip.mp4 -vcodec copy -acodec copy -map 0:1 -map 1:0 output.mp4
Contoh tersebut: file 1 terdelay 0.15 detik untuk Video (1:0) dan Audio (1:1). Sedangkan outputnya adalah menggabungkan 0:1 (Audio file 0 yang tidak terdelay) dengan 1:0 (Video file 1 yang didelay).

No comments: