0

我在 Windows XP 上使用 GStreamer 将原始 (YUV) 视频流写入 AVI 文件序列。我正在使用的管道的简化版本如下所示:

gst-launch -e -v videotestsrc 模式=smpte100 num-buffers=10 水平速度=1 !视频/x-raw-yuv,格式=(fourcc)UYVY,宽度=(int)640,高度=(int)480,帧率=30/1!ffmpeg色彩空间!!multifilesink next-file=key-frame location="frame_%d.avi" index=1

我遇到的第一个问题是第一个写入的文件具有文件名“frame_d.avi”,即“%d”被解释为“d”,因此索引没有被替换到字符串中。我猜这是Unicode问题?目前我可以通过修改文件接收器的源代码来解决这个问题,但如果可能的话,我宁愿不这样做。

我遇到的第二个问题是,当我尝试在 Windows Media Player 中查看 AVI 文件时,我收到以下消息:

“Windows Media Player 无法播放该文件。播放器可能不支持文件类型或可能不支持用于压缩文件的编解码器。”</p>

当我尝试在管道中使用 filesink 元素(而不是 multifilesink)时,我可以在媒体播放器中查看视频。

使用 Hex 编辑器查看文件内容,我可以看到在使用 multifilesink 时,已写出 AVI 标头,然后是 YUV 数据:

5249464610030000415649204c495354f80200006864726c6176696838000000 3582000080969800000000000000000000000000000000000100000000000000 80020000e0010000000000000000000000000000000000004c49535494020000 7374726c73747268380000007669647359555932000000000000000000000000 010000001e000000000000000000000000000000000000000000000000000000 0000000073747266280000002800000080020000e00100000100100059555932 00b00400000000000000000000000000000000004a554e4b1802000004000000 0000000030306462000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000亿0000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000004c495354100000006f646d6c 646d6c6804000000000000004c495354040000006d6f76693030646200600900 eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80 eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80 eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80 eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80 eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80 eb80eb80eb80eb80eb80eb80eb80eb80eb80eb80eb48d289d210d292d210d292 d210d292d210d292d210d292d210d292d210d292d210d292d210d292d210d292 d210d292d210d292d210d292d210d292d210d292d210d292d210d292d210d292 d210d292d210d292d210d292d210d292d210d292d210d292d210d292d210d292 d210d292d210d292d210d292d210d292d210d292d210d292d210d292d210d292 d210d292d210d292d210d292d210d292d210d292d210d292d210d292d210d292 d210d292d210d292d210d292aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10 aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10 aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10 aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10 aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10 aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10aaa6aa10 aaa6aa1091369122913691229136912291369122913691229136912291369122 9136912291369122913691229136912291369122913691229136912291369122 9136912291369122913691229136912291369122913691229136912291369122 9136912291369122913691229136912291369122913691229136912291369122 9136912291369122913691229136912291369122913691229136912291369122 91369122913691229136912291369122913691229136912291806a806aca6ade 6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade 6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade 6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade 6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade 6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade6aca6ade 6aca6ade6aca6ade6aca6ade6aca6ade6a9251e7515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f029f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296ef0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f029f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296ef0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f029f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f029f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0515a51f0 515a51f0515a51f029f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296ee29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296ee29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e 29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e29f0296e

当我使用文件接收器(并且播放正确)时生成的标题如下所示:

5249464608c45d00415649204c495354f80200006864726c6176696838000000 35820000b840190100000000100000000a000000000000000100000000000000 80020000e0010000000000000000000000000000000000004c49535494020000 7374726c73747268380000007669647359555932000000000000000000000000 010000001e000000000000000a00000000600900000000000000000000000000 0000000073747266280000002800000080020000e00100000100100059555932 00b00400000000000000000000000000000000004a554e4b1802000004000000 0000000030306462000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000亿0000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f76693030646200600900000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f76693030646200600900000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f76693030646200600900000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f76693030646200600900000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f766930306462006009000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f766930306462006009000004c495354100000006f646d6c 646d6c68040000000a0000004c49535454c05d006d6f76693030646200600900

数据本身看起来不错;除了 avimux 强制将 UYUV 转换为 YUY2 之外,这意味着我需要修改 avimux 以支持这一点。

为什么 multifilesink 写出的 header 与 filesink 写出的 header 不同,为什么这些差异会阻止视频播放?

提前感谢您的任何想法。

4

1 回答 1

1

在 dos 命令提示符上,您需要编写

location="frame_%%d.avi"

逃避 % 字符。关于您的实际问题,multifilesink 不适用于混合内容。您可以将其用于无标题内容。avimux 不会在后续部分写入新标头。放置 avimux 可能会更容易!文件接收器组合到一个垃圾箱,在某些情况下,向垃圾箱发送一个 eos,将垃圾箱设置为就绪,更改文件名并将其重新设置为播放。

于 2012-06-03T17:29:27.347 回答