ireader / media-server

RTSP/RTP/RTMP/FLV/HLS/MPEG-TS/MPEG-PS/MPEG-DASH/MP4/fMP4/MKV/WebM
MIT License
2.98k stars 1.06k forks source link

libash支持h265? #295

Open BreakingY opened 1 year ago

BreakingY commented 1 year ago

libdash不支持h265吗,dash-mpd.c中int dash_mpd_add_video_adaptation_set(struct dash_mpd_t mpd, const char prefix, uint8_t object, int width, int height, const void extra_data, size_t extra_data_size)函数,函数刚开始就使用了assert(MOV_OBJECT_H264 == object); `int dash_mpd_add_video_adaptation_set(struct dash_mpd_t mpd, const char prefix, uint8_t object, int width, int height, const void extra_data, size_t extra_data_size) { int r; char name[N_NAME + 16]; struct dash_adaptation_set_t* track;

r = (int)strlen(prefix);
if (mpd->count + 1 >= N_TRACK || extra_data_size < 4 || r >= N_NAME)
    return -1;

assert(MOV_OBJECT_H264 == object);//
track = &mpd->tracks[mpd->count];
memcpy(track->prefix, prefix, r);
LIST_INIT_HEAD(&track->root);
track->setid = mpd->count++;
track->object = object;
track->bitrate = 0;
track->u.video.width = width;
track->u.video.height = height;
track->u.video.frame_rate = 25;
assert(((const uint8_t*)extra_data)[0] == 1); // configurationVersion
if (MOV_OBJECT_H264 == object)
{
    track->u.video.avc.profile = ((const uint8_t*)extra_data)[1];
    track->u.video.avc.compatibility = ((const uint8_t*)extra_data)[2];
    track->u.video.avc.level = ((const uint8_t*)extra_data)[3];
}

track->seq = 1;
track->maxsize = N_FILESIZE;
track->fmp4 = fmp4_writer_create(&s_io, track, MOV_FLAG_SEGMENT);
if (!track->fmp4)
    return -1;
track->track = fmp4_writer_add_video(track->fmp4, object, width, height, extra_data, extra_data_size);

// save init segment file
r = fmp4_writer_init_segment(track->fmp4);
if (0 == r)
{
    snprintf(name, sizeof(name) - 1, "%s-init.m4v", prefix);
    r = mpd->handler(mpd->param, mpd->count, track->ptr, track->bytes, 0, 0, 0, name);
}

track->bytes = 0;
track->offset = 0;
return 0 == r ? track->setid : r;

}`

ireader commented 1 year ago

DASH支持H265,这块代码回头我更新下。