The chunk size isn't the problem.
This code streams mp3 data to standard input for a pipe opened up an an
executable called ezstream. Ezstream is a source for icecast server.
here is @ezstream:
@ezstream = IO.popen("C:\\Program
Files\\ezstream-0.4.3-win32\\ezstream.exe -c \"C:\\Program
Files\\ezstream-0.4.3-win32\\examples\\stdin.xml\"", "r+b")
This code works on Windows:
url = get_track_url
Net::HTTP.start(url.host, url.port) do |http|
http.request_get(url.request_uri, {"User-Agent"=>"Mozilla/5.0
(Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010
Firefox/2.0"}) do |res|
raise "Bad response :#{res.code}: #{res.body}" unless res.code ==
"200"
res.read_body do |segment|
@ezstream.write segment
end
end
end
This code does not work on Windows:
f = File.open(get_file_path,'rb')
count = nil
until count == 0
count = @ezstream.write(f.read(1024))
#Invalid argument (Errno::EINVAL)
# you get a broken pipe exception with sysread and syswrite too
end
Any ideas what is so different about chunking a file from disk versus
chunking the file from an http network stream?
--
Posted via http://www.ruby-forum.com/.