【问题标题】:create correct header and stream info for mjpeg stream为 mjpeg 流创建正确的标头和流信息
【发布时间】:2018-03-25 07:19:04
【问题描述】:

我正在努力创建一个将由 VLC 播放的流。我检查了我的流信息,每一帧都是有效的 jpeg 图像。

对于我做的流(在 C 中):

loop:

    // jpg contains 150-200k image
    // sPtr is content length
    ...

    char boundary[100];
    char sPtr[11];
    sprintf(sPtr, "%i", ptr);
    strcpy(boundary,"--myboundary\r\nContent-Type: image/jpeg\r\nContent-Length: ");
    strcat(boundary, sPtr);
    strcat(boundary, "\r\n\r\n");
    fwrite(&boundary, 1, strlen(boundary), stdout);             
    fwrite(&jpg, 1, ptr, stdout);
    sprintf(boundary, "%s", "\r\n");
    fwrite(&boundary, 1, 2, stdout);
goto loop:

我得到的是图像的前几行,然后全是绿色并闪烁。在将图像写入文件而不是标准输出后,我使用 jpeginfo 和 jpegsnoop 对图像进行了两次、三次检查以查找错误,并且图像中没有错误。每个图像大小约为 150-200k。

我用 ./test | 启动 c 程序vlc -

【问题讨论】:

  • 如果图片没问题,标题肯定有问题。请添加指向标头规范的链接。
  • 不确定添加指向标头规范的链接是什么意思。发送到 vlc 的唯一数据是通过 stdout 和这 3 个 fwrite;边界、数据和\r\n。还有别的吗?
  • 我的意思是 VLC 规范。看不到 jpg 是如何定义的。将什么写入标准输出?
  • 就是显示的内容。 jpg 只是一个包含完整 jpg 的数组。

标签: c stream udp vlc


【解决方案1】:

边界已经是指针,&操作符错误。

fwrite(boundary, 1, strlen(boundary), stdout);   

【讨论】:

  • 谢谢。我删除了 & 但仍然存在与流相同的问题。
猜你喜欢
  • 2012-05-24
  • 1970-01-01
  • 2015-06-24
  • 2013-02-02
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
相关资源
最近更新 更多