joy4/example/example.go
2016-03-19 15:07:55 +08:00

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()
}