69 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package storage
import (
"encoding/binary"
"fmt"
"os"
"time"
"github.com/golang/snappy"
)
func main() {
now := time.Now()
// Обратите внимание: Packets срез, поэтому оборачиваем пакет в литерал среза.
seg := Segment{
Date: now.Format(time.RFC3339),
Duration: "1m",
Packets: []InterleavedPacket{
{
Type: PacketTypeH264,
Pts: now.UnixNano(),
H264AUs: [][]byte{
[]byte{0x00, 0x01, 0x02},
[]byte{0x03, 0x04},
},
},
},
}
f, err := os.Create("stream_interleaved.bin")
if err != nil {
fmt.Println("Ошибка создания файла:", err)
return
}
defer f.Close()
writer := snappy.NewBufferedWriter(f)
defer writer.Close()
streamID := "example_stream"
if err := binary.Write(writer, binary.LittleEndian, int32(len(streamID))); err != nil {
fmt.Println("Ошибка записи заголовка:", err)
return
}
if _, err := writer.Write([]byte(streamID)); err != nil {
fmt.Println("Ошибка записи streamID:", err)
return
}
// Здесь можно записывать сначала заголовочный сегмент, затем сегменты с пакетами.
// Например, если заголовочный сегмент содержит только Start и Duration:
if err := WriteHeader(writer, seg); err != nil {
fmt.Println("Ошибка записи заголовочного сегмента:", err)
return
}
// А затем записываем сегмент с пакетами:
if err := WriteInterleavedPacket(writer, seg); err != nil {
fmt.Println("Ошибка записи сегмента пакетов:", err)
return
}
if err := writer.Flush(); err != nil {
fmt.Println("Ошибка при сбросе данных:", err)
return
}
fmt.Println("Сегмент с interleaved пакетами успешно записан.")
}