GStreamer 将流录制到持续时间错误的 wav 文件
GStreamer recording a stream to a wav file with wrong duration
我正在使用 GStreamer 录制一个 wav 文件,通过 UDP 端口接收 G711 流。
任何 wav 播放器都可以播放该文件,但显示错误的持续时间并且不能快进。
我相信 GStreamer 在开头用空数据写入 header。
此管道可以重现问题:
gst-launch-1.0 udpsrc port=3000 caps="application/x-rtp,media=(string)audio, payload=0,clock-rate=(int)8000" ! rtpjitterbuffer ! rtppcmudepay ! mulawdec ! wavenc ! filesink append=true location=c:/recordings/audio-zz.wav
Florian Zwoch 建议使用-e 文件将正确关闭。
的确,它完美地工作。
我在带有 gst1-java-core 库的 Java 程序中使用此管道。
似乎我错过了一些关闭管道的东西。
我的程序与没有 -e 参数的 gst-launch 具有相同的行为。
在停止管道之前,我发送了一个 EOS 事件。
pipeline.sendEvent(新 EOSEvent());
我该如何解决?
filesink 元素的 append 参数不允许重写 header。
谢谢。
如何停止流水线?如果您使用 ctrl-c 中断管道,则可能确实跳过了 header 完成。 运行 您的管道带有 -e
选项,以便在 ctrl-c 您的管道正常停止。
我正在使用 GStreamer 录制一个 wav 文件,通过 UDP 端口接收 G711 流。 任何 wav 播放器都可以播放该文件,但显示错误的持续时间并且不能快进。 我相信 GStreamer 在开头用空数据写入 header。
此管道可以重现问题:
gst-launch-1.0 udpsrc port=3000 caps="application/x-rtp,media=(string)audio, payload=0,clock-rate=(int)8000" ! rtpjitterbuffer ! rtppcmudepay ! mulawdec ! wavenc ! filesink append=true location=c:/recordings/audio-zz.wav
Florian Zwoch 建议使用-e 文件将正确关闭。 的确,它完美地工作。
我在带有 gst1-java-core 库的 Java 程序中使用此管道。 似乎我错过了一些关闭管道的东西。 我的程序与没有 -e 参数的 gst-launch 具有相同的行为。
在停止管道之前,我发送了一个 EOS 事件。
pipeline.sendEvent(新 EOSEvent());
我该如何解决?
filesink 元素的 append 参数不允许重写 header。
谢谢。
如何停止流水线?如果您使用 ctrl-c 中断管道,则可能确实跳过了 header 完成。 运行 您的管道带有 -e
选项,以便在 ctrl-c 您的管道正常停止。