【发布时间】:2012-04-30 11:26:19
【问题描述】:
f = os.popen("gst-launch -q whateversrc ! ... ! fdsink")
f.read(1024);
在 GNU/Linux 上工作得很好,但会导致 \x0d\x0a 而不是 Windows 的每个 \x0a。如何解决?
我在控制台也试过gst-launch -q ..... ! matroskamux streamable=true ! fdsink > qqq3.mkv,qqq3.mkv也乱码。 gst-launch -q filesrc location=file ! fdsink > file2 也转换为 CRLF。
怎么办?适用于 Windows 的 Gstreamer 构建没有 tcp{server,client}sink...
可能有一种方法可以在 Windows 中(或对于给定的应用程序)全局关闭 LF->CRLF 转换?
【问题讨论】:
-
你真的应该考虑使用subprocess module而不是
os.popen。另外,您使用的是什么版本的 Python? -
Cygwin 中的“Python 2.6.5”
-
您是否尝试过在
os.popen调用中指定模式?例如,您可以尝试os.popen("gst-launch ...", "r")或os.popen("gst-launch ...", "rb")。前者应该是默认行为,而后者明确指定读取二进制数据。 -
也试过
subprocess.Popen(cam_cmd, shell=True, bufsize=1024, stdout=subprocess.PIPE).stdout- 同样的问题 -
srgerg,试过“rb” - 一样。
标签: python windows binary pipe gstreamer