Update mp4.go

This commit is contained in:
Cédric Verstraeten
2025-06-04 11:28:16 +02:00
parent 919f21b48b
commit 0523208d36
+12 -13
View File
@@ -39,6 +39,7 @@ type MP4 struct {
StartPTS uint64
VideoTotalDuration uint64
AudioTotalDuration uint64
AudioPTS uint64
Start bool
SPSNALUs [][]byte // SPS NALUs for H264
PPSNALUs [][]byte // PPS NALUs for H264
@@ -215,22 +216,20 @@ func (mp4 *MP4) AddSampleToTrack(trackID uint32, isKeyframe bool, data []byte, p
if mp4.AudioFullSample != nil {
SplitAACFrame(mp4.AudioFullSample.Data, func(aac []byte) {
duration := pts - mp4.AudioFullSample.DecodeTime
fmt.Printf("Adding sample to track %d, PTS: %d, Duration: %d, size: %d\n", trackID, pts, duration, len(aac[7:]))
mp4.AudioTotalDuration += duration
mp4.AudioFullSample.Data = aac[7:] // Remove the ADTS header (first 7 bytes)
mp4.AudioFullSample.DecodeTime = mp4.AudioTotalDuration - duration
mp4.AudioFullSample.Sample.Dur = uint32(duration)
mp4.AudioFullSample.Sample.Size = uint32(len(aac[7:]))
err := mp4.AudioFragment.AddFullSampleToTrack(*mp4.AudioFullSample, trackID)
if err != nil {
log.Printf("Error adding sample to track %d: %v", trackID, err)
}
})
dts := pts - mp4.AudioFullSample.DecodeTime
fmt.Printf("Adding sample to track %d, PTS: %d, Duration: %d, size: %d\n", trackID, pts, 21, len(mp4.AudioFullSample.Data))
mp4.AudioTotalDuration += 21
mp4.AudioPTS += dts
mp4.AudioFullSample.DecodeTime = mp4.AudioPTS - dts
mp4.AudioFullSample.Sample.Dur = uint32(21)
err := mp4.AudioFragment.AddFullSampleToTrack(*mp4.AudioFullSample, trackID)
if err != nil {
log.Printf("Error adding sample to track %d: %v", trackID, err)
}
}
// Set the sample data
//flags := uint32(33554432)
var fullSample mp4ff.FullSample
fullSample.DecodeTime = pts
fullSample.Data = data