JuliaPy / JuliaPy/PyCall.jl

Working with stdout

Offen
#566 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Julia
Sterne
1.5k
Forks
186
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I am trying to convert the following piece of code:
```python
from vapoursynth import core
import sys
video = core.ffms2.Source(source='test.mkv')
video = core.std.Transpose(video)
video.output(sys.stdout, True)
```

The following code (passing Julia's stdout):
```julia
using PyCall
#ENV["PYTHON"] = "/usr/bin/python"
@pyimport vapoursynth as vs
@pyimport sys
core = vs.get_core()

video = core[:ffms2][:Source](source="test.mkv")
video = core[:std][:Transpose](video)
video[:output](stdout, true)
```
gives me a segfault.

Passing python's stdout:
```julia
using PyCall
@pyimport vapoursynth as vs
@pyimport sys
core = vs.get_core()

video = core[:ffms2][:Source](source="test.mkv")
video = core[:std][:Transpose](video)
video[:output](sys.stdout, true)
```
Fails when I run:
```
$ julia ex03.jl | x264 --demuxer y4m -o out.mkv -
y4m [info]: 768x1280p 0:0 @ 30/1 fps (cfr)
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 3.2
y4m [error]: bad frame header length
y4m [error]: bad frame header length
x264 [info]: frame I:1 Avg QP:28.50 size: 53237
x264 [info]: mb I I16..4: 42.0% 29.0% 29.0%
x264 [info]: 8x8 transform intra:29.0%
x264 [info]: coded y,uvDC,uvAC intra: 38.0% 53.4% 29.0%
x264 [info]: i16 v,h,dc,p: 37% 29% 3% 31%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 38% 19% 15% 6% 5% 6% 4% 5% 3%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 39% 25% 13% 3% 3% 4% 4% 4% 4%
x264 [info]: i8c dc,h,v,p: 48% 26% 24% 2%
x264 [info]: kb/s:12776.88

encoded 1 frames, 21.80 fps, 12950.16 kb/s
ERROR: LoadError: PyError ($(Expr(:escape, :(ccall(#= /home/jose/.julia/packages/PyCall/rUul9/src/pyfncall.jl:44 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw)))))
'File write call returned an error'
File "src/cython/vapoursynth.pyx", line 1338, in vapoursynth.VideoNode.output

Stacktrace:
[1] pyerr_check at /home/jose/.julia/packages/PyCall/rUul9/src/exception.jl:60 [inlined]
[2] pyerr_check at /home/jose/.julia/packages/PyCall/rUul9/src/exception.jl:64 [inlined]
[3] macro expansion at /home/jose/.julia/packages/PyCall/rUul9/src/exception.jl:84 [inlined]
[4] __pycall!(::PyObject, ::Ptr{PyCall.PyObject_struct}, ::PyObject, ::Ptr{Nothing}) at /home/jose/.julia/packages/PyCall/rUul9/src/pyfncall.jl:44
[5] _pycall!(::PyObject, ::PyObject, ::Tuple{PyObject,Bool}, ::Int64, ::Ptr{Nothing}) at /home/jose/.julia/packages/PyCall/rUul9/src/pyfncall.jl:22
[6] _pycall!(::PyObject, ::PyObject, ::Tuple{PyObject,Bool}, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /home/jose/.julia/packages/PyCall/rUul9/src/pyfncall.jl:11
[7] #call#89(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::PyObject, ::PyObject, ::Vararg{Any,N} where N) at /home/jose/.julia/packages/PyCall/rUul9/src/pyfncall.jl:89
[8] (::PyObject)(::PyObject, ::Vararg{Any,N} where N) at /home/jose/.julia/packages/PyCall/rUul9/src/pyfncall.jl:89
[9] top-level scope at none:0
in expression starting at /home/jose/src/julia/vapoursynth/python_based/ex03.jl:8
```

But if I do:
```
$ julia ex03.jl > out.y4m
$ mplayer out.y4m
```
I am able to play the video.

Any clue about what is going on?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.