【发布时间】: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 的数组。