64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
|
|
package main
|
|
|
|
import (
|
|
"github.com/nareix/mp4"
|
|
"os"
|
|
"fmt"
|
|
"encoding/hex"
|
|
)
|
|
|
|
func DemuxExample() {
|
|
file, _ := os.Open("test.mp4")
|
|
demuxer := &mp4.Demuxer{
|
|
R: file,
|
|
}
|
|
demuxer.ReadHeader()
|
|
|
|
fmt.Println("Total tracks: ", len(demuxer.Tracks))
|
|
fmt.Println("Duration: ", demuxer.TrackH264.Duration())
|
|
|
|
count := demuxer.TrackH264.SampleCount()
|
|
fmt.Println("SampleCount: ", count)
|
|
|
|
demuxer.TrackH264.SeekToTime(2.3)
|
|
|
|
var sample []byte
|
|
for i := 0; i < 5; i++ {
|
|
pts, dts, isKeyFrame, data, err := demuxer.TrackH264.ReadSample()
|
|
fmt.Println("sample #",
|
|
i, pts, dts, isKeyFrame, len(data),
|
|
demuxer.TrackH264.CurTime(),
|
|
err,
|
|
)
|
|
if i == 3 {
|
|
sample = data
|
|
}
|
|
}
|
|
fmt.Println("Sample H264 frame:")
|
|
fmt.Print(hex.Dump(sample))
|
|
|
|
fmt.Println("Duration(AAC): ", demuxer.TrackAAC.Duration())
|
|
fmt.Println("SampleCount(AAC): ", demuxer.TrackAAC.SampleCount())
|
|
demuxer.TrackAAC.SeekToTime(1.3)
|
|
|
|
for i := 0; i < 5; i++ {
|
|
pts, dts, isKeyFrame, data, err := demuxer.TrackAAC.ReadSample()
|
|
fmt.Println("sample(AAC) #",
|
|
i, pts, dts, isKeyFrame, len(data),
|
|
demuxer.TrackAAC.CurTime(),
|
|
err,
|
|
)
|
|
if i == 1 {
|
|
sample = data
|
|
}
|
|
}
|
|
fmt.Println("Sample AAC frame:")
|
|
fmt.Print(hex.Dump(sample))
|
|
}
|
|
|
|
func main() {
|
|
DemuxExample()
|
|
}
|
|
|