为 mjpeg 流创建正确的 header 和流信息

标签 c stream udp vlc

我正在努力尝试创建一个将由 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:

我得到的是图像的前几行,然后全是绿色并闪烁。在将图像写入文件而不是 stdout 后,我​​使用 jpeginfo 和 jpegsnoop 仔细检查了图像是否有错误,并且图像中没有错误。每个图像大小约为 150-200k。

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

最佳答案

Boundary 已经是一个指针,& 运算符是错误的。

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

关于为 mjpeg 流创建正确的 header 和流信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49473438/

相关文章:

c - Orwell 的 MinGW 和 TDM Dev-C++ 版本有什么区别?

c# - 如何在 C# 中创建一个将生成 HTTP 响应主体行的迭代器?

html - HTML5-音频流

UDP数据包分片

linux - Ubuntu 9.04 而非 8.04 的 UDP 广播接收问题

c - 在主函数中返回变量

c++ - C/C++ 代码 2nd = 登录操作

c - 是否可以从预处理器转换为数组?

Linux - 调试程序设计 - 从多个程序打印 STDOUT 流

.net - UDP、NAT 和设置 "connections"