Skip to content

OnPacket 和 OnFrame 数据相关 #167

Description

@oldma3095

请问下,在使用muxer OnPacket 和 demuxerOnFrame时,返回的 pkg []byteframe []byte是不是正常的ffmpeg中av_packetav_frame内存数据。

举例伪代码:

segBuffer := bytes.NewBuffer(nil)
muxer := mpeg2.NewTSMuxer()
muxer.OnPacket = func(pkg []byte) {
	segBuffer.Write(pkg)
}

f, _ := os.Open(filepath)
defer f.Close()
demuxer := mp4.CreateMp4Demuxer(f)
_, _ = demuxer.ReadHead()
vid := muxer.AddStream(mpeg2.TS_STREAM_H264)
for {
	pkg, _ := demuxer.ReadPacket()
	if pkg.Cid == mp4.MP4_CODEC_H264{
		_ = muxer.Write(vid, pkg.Data, pkg.Pts, pkg.Dts)
		break
	}
}

transBuffer := bytes.NewBuffer(nil)
transMuxer := mpeg2.NewTSMuxer()
transMuxer.OnPacket = func(pkg []byte) {
	transBuffer.Write(pkg)
}
tvid := transMuxer.AddStream(mpeg2.TS_STREAM_H264)

tranDemuxer := mpeg2.NewTSDemuxer()
tranDemuxer.OnFrame = func(cid mpeg2.TS_STREAM_TYPE, frame []byte, pts uint64, dts uint64) {
	if cid == mpeg2.TS_STREAM_H264 {
		transFrame, _ := transcode.Scale(frame) // 这里做转码处理
		transMuxer.Write(tvid, transFrame, pts, dts)
	}
}
_ = tranDemuxer.Input(bytes.NewReader(segBuffer.Bytes()))

这里在使用ffmpeg做转码处理的时候,发现frame的[]byte并不是av_frame的[]byte,无法使用unsafe.Point进行内存转换,好像这两个不是一个类型的东西

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions