小编use*_*369的帖子

Live555:基于"testOnDemandRTSPServer"的X264 Stream Live源

我正在尝试创建一个流式传输程序的OpenGL输出的rtsp服务器.我看了如何编写Live555 FramedSource以允许我直播H.264,但我需要流是单播的.所以我看了testOnDemandRTSPServer.使用相同的代码失败.根据我的理解,我需要提供存储我的h264帧的内存,以便OnDemandServer可以按需读取它们.

H264VideoStreamServerMediaSubsession.cpp

H264VideoStreamServerMediaSubsession*
H264VideoStreamServerMediaSubsession::createNew(UsageEnvironment& env,
                          Boolean reuseFirstSource) {
  return new H264VideoStreamServerMediaSubsession(env, reuseFirstSource);
}

H264VideoStreamServerMediaSubsession::H264VideoStreamServerMediaSubsession(UsageEnvironment& env, Boolean reuseFirstSource)
  : OnDemandServerMediaSubsession(env, reuseFirstSource), fAuxSDPLine(NULL), fDoneFlag(0), fDummyRTPSink(NULL) {
}

H264VideoStreamServerMediaSubsession::~H264VideoStreamServerMediaSubsession() {
  delete[] fAuxSDPLine;
}

static void afterPlayingDummy(void* clientData) {
  H264VideoStreamServerMediaSubsession* subsess = (H264VideoStreamServerMediaSubsession*)clientData;
  subsess->afterPlayingDummy1();
}

void H264VideoStreamServerMediaSubsession::afterPlayingDummy1() {
  // Unschedule any pending 'checking' task:
  envir().taskScheduler().unscheduleDelayedTask(nextTask());
  // Signal the event loop that we're done:
  setDoneFlag();
}

static void checkForAuxSDPLine(void* clientData) {
  H264VideoStreamServerMediaSubsession* subsess = (H264VideoStreamServerMediaSubsession*)clientData;
  subsess->checkForAuxSDPLine1();
}

void H264VideoStreamServerMediaSubsession::checkForAuxSDPLine1() {
  char const* …
Run Code Online (Sandbox Code Playgroud)

c++ stream libx264 live555

5
推荐指数
1
解决办法
9765
查看次数

使用x264将OpenGL输出转换为H264

我想将OpenGL程序的输出转换为h264并输出流。我在某处收集了大部分代码,并得到了一个输出文件,但是我不知道该如何处理或是否有效。当前,输出仅保存在file.h264中。

编辑:“全局”变量

    x264_param_t param;
    x264_t* encoder;
    x264_picture_t pic_in;
    x264_picture_t pic_out;

    x264_nal_t *headers;
    int i_nal;
    FILE* pFile;
Run Code Online (Sandbox Code Playgroud)

我的初始化函数:

initX264() {
    pFile = fopen("file.h264", "wb");

    x264_param_t param;
    x264_param_default_preset(&param, "veryfast", "zerolatency");
    param.i_threads = 1;
    param.i_width = 1024;
    param.i_height = 768;
    param.i_fps_num = 30;
    param.i_fps_den = 1;

    param.i_keyint_max = 30;
    param.b_intra_refresh = 1;

    param.rc.i_rc_method = X264_RC_CRF;
    param.rc.f_rf_constant = 25;
    param.rc.f_rf_constant_max = 35;

    param.b_annexb = 0;
    param.b_repeat_headers = 0;

    param.i_log_level = X264_LOG_DEBUG;

    x264_param_apply_profile(&param, "baseline");

    encoder = x264_encoder_open(&param);
    x264_picture_alloc(&pic_in, X264_CSP_I420, 1024, 768);

    x264_encoder_parameters( encoder, &param ); …
Run Code Online (Sandbox Code Playgroud)

c c++ h.264 x264 libx264

4
推荐指数
1
解决办法
3231
查看次数

标签 统计

c++ ×2

libx264 ×2

c ×1

h.264 ×1

live555 ×1

stream ×1

x264 ×1