আমি কীভাবে কোনও ডিএলএনএ অনুগত ডিভাইসে লাইভ অডিও স্ট্রিম সেট আপ করব?


53

আমাদের 12.04.1 এলটিএস এএমডি 64 ডেস্কটপ থেকে আমাদের নেটওয়ার্কের কোনও ডিএলএনএ-অনুবর্তী বাইরের ডিভাইসে সাউন্ডকার্ডের লাইভ আউটপুটটি স্ট্রিম করার কোনও উপায় আছে? রিগেল, মিনিডিএলএনএ এবং uShare ব্যবহার করে ভাগ করা ডিরেক্টরিতে মিডিয়া সামগ্রী নির্বাচন করা সর্বদা ভাল - তবে এখনও পর্যন্ত আমরা DLNA- এর মাধ্যমে ক্লায়েন্টের কাছে সরাসরি অডিও স্ট্রিম পেতে ব্যর্থ হয়েছি।

পুলসৌদিও দাবি করেছেন যে একটি ডিএলএনএ / ইউপিএনপি মিডিয়া সার্ভার রয়েছে যে রিগেলের সাথে একসাথে কেবল এটি করার কথা রয়েছে। তবে আমরা এটি চালাতে পারিনি।

আমরা live.gnome.org , এই উত্তরটি এখানে বর্ণিত পদক্ষেপগুলি অনুসরণ করেছি এবং অনুরূপ অন্য গাইডেও রয়েছি


ইন 12.04 LTS আমরা স্থানীয় অডিও ডিভাইস, অথবা আমাদের DLNA ক্লায়েন্টে GST-লঞ্চ প্রবাহ নির্বাচন করতে পারেন কিন্তু Rygel নিম্নলিখিত বার্তা প্রদর্শন করা হয় এবং ক্লায়েন্ট এটা প্লেলিস্টের শেষে পৌঁছে গেছেন বলে:

(rygel:7380): Rygel-WARNING **: rygel-http-request.vala:97: Invalid seek request

ক্লায়েন্টে লাইভ অডিও স্ট্রিমগুলি শোনার কোনও উপায় ছিল না।


কেবলমাত্র 14.04 এলটিএসে বিতরণ আপগ্রেড করার পরে আমরা নীচের উত্তরে সুন্দরভাবে বর্ণিত সেটিংস থেকে আমাদের ডিএলএনএ রেন্ডারগুলিতে একটি লাইভ স্ট্রিম নির্বাচন করতে সক্ষম হয়েছি । তবুও, আমরা রিগেল শুরু করার পরে আমাদের ইউপিএনপি ডিভাইসে নতুন স্ট্রিমটি চাপতে না পারার পরে আমাদের একটি প্রতিষ্ঠিত স্ট্রিম নির্বাচন করা দরকার select অডিও মেটাডেটা প্রেরণ করা হয়নি।


আমাদের সাউন্ডকার্ডের অডিও কোনও ডিএলএনএ ক্লায়েন্টকে লাইভ স্ট্রিম হিসাবে প্রেরণের জন্য কি অন্য কোনও বিকল্প আছে?


আপনি কি আপনার রিসিভার ডিভাইসের সাথে ডিএলএনএ স্ট্রিমিং এড়াতে পারবেন? আমার সমাধানটি HTTP- র মাধ্যমে পালসৌদিও প্রবাহকে পাশ কাটাতে হবে, এখানে আরও দেখুন: স্যান্ডালোভ.আর
ব্লগ

দুঃখিত, না, আমি আসলেই ডিএলএনএ কাজ করতে চাই কারণ ডিএলএনএ কেবলমাত্র বিভিন্ন ক্লায়েন্ট (টিভি, এভি-রিসিভারস, ব্লুরে প্লেয়ারস ইত্যাদিতে) ব্যাপকভাবে প্রয়োগ করা হয়।
তাক্কাত

তক্কাত, আমি যে সমাধানটির কথা বলছি তা আমার AVR এ স্ট্রিমিংয়ের সমস্যার সমাধান করে। আপনি যদি সত্যিই কোনও ডিএলএনএ সার্ভার চালু করতে চান তবে 12.04-তে ('প্যাকএমডি লোড-মডিউল-মডিউল-এইচটি-প্রোটোকল-টিসিপি'র) পরে, আমি ১১.১০-তে একই' অবৈধ চাওয়ার অনুরোধ 'সতর্কতা পেয়েছি ।
দিমিত্রিসান্ডালভ

@ দিমিত্রিসান্ডালভ: আপনি কীভাবে পালসোডিও আউটপুটটি লাইভ স্ট্রিমের জন্য রাইগেল সেট আপ করতে সফল হয়েছেন তার বিবরণ ভাগ করে নিলে খুব সুন্দর হবে cool
তাকত

উত্তর:


63

Pulseaudio-DLNA

আমি একটি সামান্য সার্ভার তৈরি করেছি যা আপনার নেটওয়ার্কের সমস্ত আপডেন্ট রেন্ডারগুলিকে আবিষ্কার করে এবং সেগুলিতে ডুবে যোগ করে as সুতরাং আপনি আপনার আপ্নিপ ডিভাইসগুলিতে খেলতে প্যাভুকন্ট্রলের মাধ্যমে প্রতিটি অ্যাপ্লিকেশন নিয়ন্ত্রণ করতে পারেন।

লিনাক্সের আওতায় আপ্নপ ডিভাইসগুলির সাথে কাজ করার সময় আমি সর্বদা স্বাচ্ছন্দ্য বোধ করি।

অ্যাপ্লিকেশনটি উত্স বা ডিইবি প্যাকেজ থেকে গিট থেকে ডাউনলোডযোগ্য ইনস্টল করা যেতে পারে , বা আমরা প্রকল্পের অফিসিয়াল পিপিএ: কিউস / পালসৌদিও-ডিএলএনএ যুক্ত করার পরে আমাদের উত্সগুলিতে এই সহ:

sudo apt-get update && sudo apt-get install pulseaudio-dlna

তারপরে আমরা কমান্ড লাইন থেকে নিম্নলিখিত বিকল্পগুলি সহ পালসিউডিয়ো-ডিএলএনএ পরিচালনা করি:

pulseaudio-dlna [--host <host>] [--port <port>] [--encoder <encoder>] [--renderer-urls <urls>] [--debug]
pulseaudio-dlna [-h | --help | --version]

আরও জন্য পালসওডিয়ো dlna "সম্পর্কে" দেখুন।

যখন কোনও ডিএলএনএ রেন্ডারার উপস্থিত ছিল তখন আমরা সাউন্ড মেনু থেকে আউটপুট সিঙ্ক হিসাবে এটি নির্বাচন করতে পারি:

এখানে চিত্র বর্ণনা লিখুন


3
দুর্দান্ত আবেদন - আপনাকে ধন্যবাদ! একটি স্যামসুং স্মার্ট টিভি (UE40ES6100) সহ আমার ডিভাইসগুলিতে সূক্ষ্ম কাজ করেছে। কেবল একটি নোট: আমাদের python-requestsনির্ভরতা হিসাবেও প্রয়োজন এবং আমরা ডিফল্ট অডিও নিয়ন্ত্রণগুলি থেকে রেন্ডারার নির্বাচন করতে পারি - প্যাভুকন্ট্রোল ইনস্টল করার দরকার নেই।
তাককাত

আমি খুশি তুমি এটা পছন্দ করেছো. আমি সবেমাত্র README আপডেট করেছি। ইঙ্গিতটির জন্য ধন্যবাদ!
ম্যাসিমো

2
দুর্দান্ত সমাধান। ধন্যবাদ। তবে আমার একটি প্রশ্ন রয়েছে: বেশ কয়েকটি সেকেন্ডের প্লেব্যাক বিলম্ব রয়েছে (ভিএলসিতে বিরতি টিপানোর পরে 10 সেকেন্ড)। এটি কি কোনও ডিএলএনএ "বৈশিষ্ট্য" বা এটি হ্রাস করার কোনও উপায় আছে? সুতরাং ডিএলএনএ ভিডিও প্লেব্যাক বা গেমিংয়ের জন্য কী বোঝায় না? :(
জেপিটি

2
বিলম্ব HTTP বাফার পূরণ থেকে আসে filling আপনার সংযোগের সমস্যা থাকলে (দুর্বল ওয়াইফাই ইত্যাদি) এটি স্ট্রিমটিকে চালিয়ে যায়। আপনি যদি বিলম্ব হ্রাস করতে চান তবে দ্রুততর বাফারটি পূরণ করার জন্য একটি কোডেক ব্যবহার করুন যার জন্য খুব বেশি ব্যান্ডউইথ ( ওয়াভ ) প্রয়োজন। কেবল সংযোগ সর্বদা সহায়তা করে। অন্যথায় এটি আপনার নির্মাতারা ফার্মওয়্যার প্রয়োগের জন্য খুব নির্দিষ্ট। যেমন আমি কোকির সাথে প্রায় 1 সেকেন্ডের সাথে দেরি করি। Sonos খেলুন 1 wav সহ: 1 সেকেন্ড, এমপি 3: 5 সেকেন্ড সহ। সমস্ত তারের মাধ্যমে সংযুক্ত। তবে আপনি এটি থেকে সম্পূর্ণরূপে মুক্তি পাবেন না। মূল উদ্দেশ্য সঙ্গীত এবং অডিও বই। যা কিছু দরকার তা সিঙ্ক হওয়ার দরকার নেই।
ম্যাসিমো

1
@ জেপিটি এবং অন্য সবাই দেরিটি সমাধানের জন্য উপায় খুঁজছেন (আমার জন্য 10s): শায়ারপোর্ট-সিঙ্ক ব্যবহার করে আমি আমার রাস্পবেরিপিতে এয়ারপ্লে সিঙ্ক চালাচ্ছি ডিএলএনএ সিঙ্কের সমান্তরালে এবং অবশ্যই বলতে হবে যে বিলম্বগুলি আরও সংক্ষিপ্ত (~ 2s শুরু করা; থামানো অবিলম্বে)। বলা হচ্ছে, ম্যাসিমোকে অনেক অনেক ধন্যবাদ কারণ বিলম্বের কথা ভুলে গিয়ে পালসোডিও-ডিএলএনএ একটি কবজির মতো কাজ করে এবং এটি ইনস্টল করতে সত্যিই তুচ্ছ! (এয়ারপ্লে আমার জন্য সেট আপ করা বেশ শক্ত ছিল))
বালু

8

পাভুকন্ট্রোল এই জিগস ধাঁধাটি হারিয়ে যাচ্ছে! আমি সবকিছু ঠিকঠাকভাবে সেট আপ করেছিলাম এবং বাহ্যিক ডিভাইস (এলজি টিভি) দেখিয়েছিল যে শব্দটি চালানো হচ্ছে তবে আমি কোনও শব্দ শুনিনি। আজ আমি প্যাভুকন্ট্রোল ইনস্টল করেছি এবং এটি খুললে আমি ডিএলএনএ সার্ভারের মাধ্যমে সাউন্ড চ্যানেল করার বিকল্পটি পেয়েছি। ডিএলএনএ বিকল্পটি কেবল তখনই প্রদর্শিত হয় যখন কোনও প্লেয়ার থেকে পালসওডিওতে শব্দ আউটপুট থাকে। এখানে চিত্র বর্ণনা লিখুন


এই ভাগ করার জন্য আপনাকে ধন্যবাদ। আপনি কীভাবে ডিএলএনএ সার্ভার সেট আপ করলেন? আমার জন্য এটিএম রিগেল বরং অসহায় সেগফোল্টস ছাড়েন।
তাকাট

আমার ঠিক স্বাভাবিক সেটিংস আছে। আপনি আপনার পোস্টে উল্লিখিত একই লিঙ্কটি অনুসরণ করেছি [[GstLaunch] সক্ষম = সত্য লঞ্চ-আইটেম = অডিওটেষ্টার্ক; audiotestsrc-title = ডেস্কটপ লাইভ স্ট্রিমিং! অডিওটেষ্টার্ক-মাইম = অডিও / এমপিইজি অডিওটেষ্টার্ক-লঞ্চ = পালসসিআরকি ডিভাইস = upnp.monitor! lamemp3enc লক্ষ্য = মানের গুণমান = 6
jumbli

রহস্যময়। রিথম্বক্সের সাথে সেগফাল্টগুলি অদৃশ্য হয়ে গেছে তবে আমি এখনও কেবল Invalid seek requestরিগেল থেকে পেয়েছি। মিডিয়া ডিরেক্টরিগুলি রয়েছে তবে আমার জিএসটি-স্ট্রিম সর্বদা EOF।
তাকাট

দুর্দান্ত সংযোজন, এটি আপনাকে প্রতিটি অ্যাপ্লিকেশানের জন্য একটি সিঙ্ক সেট করতে দেয় যা অডিও খেলতে পারে! আমি আমার বড় স্টেরিওতে গান শুনতে পারি এবং ভিডিও বা গেমের শব্দ আমার কম্পিউটারে রাখতে পারি। ধন্যবাদ!
স্প্রিংলোড

এটি যখন আমার সাথে সংযুক্ত হয়ে খেলছিল তখন কেবল সমস্যাটি নিখোঁজ হয়েছিল!
ইজিউই

4

আমি দুঃখিত আমি রাইগেল এর সাথে আপনাকে মোটেই সহায়তা করতে পারছি না, তবে এমন একটি বিকল্প থাকতে পারে যা আপনার পক্ষে কাজ করতে পারে।

নীতিটি হ'ল অডিও ফাইলে স্ট্রিমটি রেকর্ড করার জন্য একটি প্রোগ্রাম পান, তারপরে একটি কাস্টম কনফিগারেশনের সাথে miniDLNA প্রবর্তন করুন যা স্ট্রিমটি যে ডিরেক্টরিটিতে রয়েছে তাতে নির্দেশ করে।

উদাহরণ: বলুন আমরা ~ / স্ট্রিম / এ কাজ করছি। ~ / স্ট্রিম / minidlna.conf তৈরি করুন

network_interface=wlan0
media_dir=/home/<user>/stream/
friendly_name=Live Audio Stream
db_dir=/home/<user>/stream/
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
inotify=no
enable_tivo=no
strict_dlna=no
notify_interval=900
serial=12345678
model_number=1

তারপরে সেই ডিরেক্টরিটির একটি অডিও ফাইলে স্ট্রিমটি সংরক্ষণ করুন। "FFmpeg রেকর্ড সাউন্ড কার্ড অডিও" এর জন্য গুগলিং এই আদেশটি পেয়েছিল

ffmpeg -f alsa -i default -acodec flac ~/stream/OutputStream.flac

তবে এর সাথে আমার খুব ভাগ্য হয়নি। অন্য বিকল্পটি হ'ল ভিএলসি হ'ল আপনার একটি জিইউআই উপলব্ধ রয়েছে এবং এটি কার্যকর হয় না।

তারপরে অন্য টার্মিনাল উইন্ডোতে miniDLNA বুট করুন:

minidlna -d -f ~/stream/minidlna.conf -P ~/stream/minidlna.pid

এটা তোলে উচিত OutputStream.flac সনাক্ত এবং তারপর আপনার নেটওয়ার্ক ডিভাইস থেকে অ্যাক্সেস করা।

আশা করি আপনি যদি ইতিমধ্যে এটি সমাধান না করে থাকেন যা আপনাকে কয়েকটি ধারণা দিয়েছে।


1
প্রতিশ্রুতিবদ্ধ পদ্ধতির - আপনাকে ধন্যবাদ - তবে এর আরও পরিমার্জন প্রয়োজন। মিনিডিএলএনএর সাথে একটি দ্রুত পরীক্ষার মাধ্যমে আজ আমি আমার ডিএলএনএ ক্লায়েন্টের দ্বারা স্বীকৃত স্ট্রিম ফাইলটি পাইনি। এছাড়াও ffmpeg দ্বারা উত্পাদিত স্ট্রিমগুলি বরং খারাপ বলে মনে হয় (স্থির শব্দ)। আমি এটি করছি এবং আপনাকে জানাতে হবে।
তাক্কাত

এখনও অবধি আমরা ffmpeg বা avconv সহ অডিও সিঙ্ক থেকে একটি ফ্ল্যাক বা এমপি 3 অডিও ফাইল তৈরি করতে সক্ষম হয়েছি। তবে আমরা ফাইল রেকর্ডিং ছাড়াই এই ফাইলটি মিনিডিএলএনএ দ্বারা স্বীকৃত হবে না। তদন্তের পরে আমরা অন্য ফাইলটি রেকর্ড করার সময় এই ফাইলটি আবার ডিএলএনএ ক্লায়েন্টে খুলতে পারি তবে স্ট্রিমটি সর্বদা রেকর্ডিংয়ের সূচনা থেকে শুরু হয় এবং আমরা যখন ক্লায়েন্টের কথা শোনার শুরু করি তখন তখন থেমে যায়। কোন ধারণা কীভাবে এটি কাটিয়ে উঠবেন?
তাক্কাত

সুতরাং, আপনি কি একবারে রেকর্ডিং বন্ধ করতে ffmpeg প্রক্রিয়াটি ভেঙে ফেলেছেন, তারপরেই ফাইলটি মিনিডিএলএনএ দ্বারা স্বীকৃত? এছাড়াও, অডিও গুণমান কি আরও ভাল? আমি আমার মেশিনে এটি ব্যবহার করে দেখব এবং এটি আবার চালু করতে পারি কিনা। (
ফ্লাইতে

হ্যাঁ প্রথম জায়গায়। দ্বিতীয়বার আমি এটি ক্লায়েন্টের কাছ থেকে অ্যাক্সেস করতে পারি তবে এটি শুরু থেকেই শুরু হয় (অর্থাত্ যখনই আমি রেকর্ডিং শুরু করি) এবং মাঝখানে থামে (অর্থাত্ ক্লায়েন্টের কাছে রেকর্ডিং শুরু করা এবং গ্রহণ শুরু করার মধ্যবর্তী সময়ের পরে)। অডিও এখন ঠিক আছে, ডুপ্লেক্স অক্ষম করতে হয়েছিল।
তাক্কাত

4

একটি ধারণা আমাকে একটি ডিএলএনএ রেন্ডারারের কাছে "আমি যা শুনি" প্রবাহিত করতে হয়েছিল (ডাব্লুডিটিভি এর মতো) ভিপিএলসি সহ স্ট্রিমটিকে HTTP স্ট্রিম pulse://alsa_output.xxx.monitorহিসাবে ইনপুট হিসাবে সার্ভার এবং এটিকে এমপি 3 বা এফএলসি তে ট্রান্সকোড করতে হয়েছিল। তারপরে আমি কিছু ডিএলএনএ নিয়ন্ত্রণ বিন্দু ব্যবহার করতে চেয়েছিলাম যাতে রেন্ডারকে তাহট স্ট্রিম খেলতে দেওয়া হয়। ভিএলসি ট্রান্সকোডড স্ট্রিমটি সঠিকভাবে পরিবেশন করে, তবে এটি মাইম টাইপ সেট করতে দেয় না, তাই রেন্ডারার এটি খেলতে অস্বীকার করে।

পরের ধারণাটি ছিল অজগরে একটি HTTP সার্ভার লিখতে যা পরিবর্তে স্ট্রিমটি পরিবেশন করে। এটি ডাল থেকে অডিও স্ট্রিমটি পায় parec, এটিকে এনকোড করে flac( lameবা যা আপনি চান) এবং মাইম টাইপটি সঠিকভাবে সেট করে।

এটি নিম্নলিখিত (খুব সাধারণ) স্ক্রিপ্টের সাথে কাজ করে:

#!/usr/bin/python

import BaseHTTPServer
import SocketServer
import subprocess

PORT = 8080
# run "pactl list short |grep monitor" to see what monitors are available
# you may add a null sink for streaming, so that what is streamed is not played back locally
# add null sink with "pactl load-module module-null-sink"
MONITOR = 'null.monitor'
MIMETYPE = 'audio/flac'
ENCODER = 'flac - -c --channels 2 --bps 16 --sample-rate 44100 --endian little --sign signed'
BUFFER = 65536

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(s):
    print s.client_address, s.path, s.command
    s.send_response(200)
    s.send_header('content-type', MIMETYPE)
    s.end_headers()
def do_GET(s):
    s.do_HEAD()
    pa = subprocess.Popen('parec -d {} | {}'.format(MONITOR, ENCODER), shell = True, bufsize = BUFFER, stdout = subprocess.PIPE)
    while True:
        data = pa.stdout.read(1024)
        if len(data) == 0: break
        s.wfile.write(data)
    print 'stream closed'


httpd = SocketServer.TCPServer(("", PORT), Handler)

print "listening on port", PORT

try:
httpd.serve_forever()
except KeyboardInterrupt:
pass

httpd.server_close()

প্যারামিটারগুলি সামঞ্জস্য করুন, এটি চালান, এবং আপনার মেশিনে ডিএলএনএ রেন্ডারারটি নির্দেশ করুন। এটি আমার কাছে রেন্ডারার হিসাবে ডাব্লুডিটিভি এবং কন্ট্রোল পয়েন্ট হিসাবে বুদ্বুপ্পের সাথে একটি অ্যান্ড্রয়েড ফোন নিয়ে কাজ করেছে (প্লেলিস্টে ম্যানুয়ালি কোনও নতুন আইটেম যুক্ত করার সময় আপনি স্ট্রিম URL টি টাইপ করতে পারেন)। তবে এটি কোনও ডিএলএনএ অনুগত ডিভাইসগুলির সাথে কাজ করা উচিত।


4

দ্রষ্টব্য: এই সমাধানটি কার্যকর হয় তবে ম্যাসিমো একটি নতুন এবং সম্ভবত আরও ভাল সমাধানের প্রস্তাব দিয়েছে।

সম্পূর্ণতার জন্য এখানে উবুন্টু 14.04 (এছাড়াও পরীক্ষিত এবং 15.04 তে কাজ করা ) এর একটি উত্তর রয়েছে :

  1. যে কোনও প্রয়োজনীয় প্যাকেজ ইনস্টল করুন: sudo apt-get install rygel rygel-preferences rygel-gst-launch

  2. ~/.config/rygel.confনিম্নলিখিত ফাইল অন্তর্ভুক্ত ফাইল তৈরি করুন :

    [GstLaunch]
    enabled=true
    title=@REALNAME@'s stream
    launch-items=myaudioflac;myaudiompeg
    
    myaudioflac-title=FLAC audio on @HOSTNAME@
    myaudioflac-mime=audio/flac
    myaudioflac-launch=pulsesrc device=upnp.monitor ! flacenc quality=8
    
    myaudiompeg-title=MPEG audio on @HOSTNAME@
    myaudiompeg-mime=audio/mpeg
    myaudiompeg-launch=pulsesrc device=upnp.monitor ! lamemp3enc target=quality quality=6
    
    [Playbin]
    enabled=true
    title=Audio/Video playback on @REALNAME@'s computer
    
    [general]
    interface=
    upnp-enabled=true
    
    [MediaExport]
    uris=
    
  3. কমান্ডলাইন থেকে নিম্নলিখিত কমান্ডগুলি কার্যকর করুন (এগুলি চাইলে স্ক্রিপ্টে রাখা যেতে পারে):

    pactl load-module module-http-protocol-tcp
    pactl load-module module-rygel-media-server 
    rygel &
    
  4. paprefsকমান্ডটি চালান , এবং নিশ্চিত করুন যে উভয় ডিএলএনএ বিকল্প "নেটওয়ার্ক সার্ভার" ট্যাবে সক্ষম (পরীক্ষিত) রয়েছে।

  5. আপনার কম্পিউটারে কিছু অডিও খেলুন। pavucontrolপ্রোগ্রামটি চালান এবং "প্লেব্যাক" ট্যাবে আউটপুট ডিভাইসটিকে "ডিএলএনএ / ইউপিএনপি স্ট্রিমিং" এ পরিবর্তন করুন।

এই মুহুর্তে, আপনার কোনও ডিএলএনএ ক্লায়েন্ট (রেন্ডারার / নিয়ন্ত্রণ পয়েন্ট) থেকে এমপিইজি এবং এফএলসি স্ট্রিম খেলতে সক্ষম হওয়া উচিত।

দ্রষ্টব্য: জিনিসগুলি কাজ শুরু করার জন্য আপনাকে আপনার কম্পিউটার পুনরায় চালু করতে (বা নাড়ি পুনরায় চালু করতে) প্রয়োজন হতে পারে।


3

অ্যাডামের পাইথন স্ক্রিপ্টটি আমার প্রয়োজন ছিল। উজ্জ্বল। জিএসটি-লঞ্চ সহ রিগেল আমার কোনও রেন্ডারারের সাথে কাজ করে না, তবে এই স্ক্রিপ্টটি উভয়ের সাথেই কাজ করে। আমার ক্ষেত্রে আমি স্কিজিজাইট (স্কুইজবক্সের জন্য) থেকে একটি অডিও স্ট্রিম ইনপুট নিচ্ছি এবং একটি রেন্ডারকে প্রেরণ করছি। স্ক্রিপ্টটি پلসওডিও মনিটর থেকে ইনপুট নিতে মূল ফর্মেও কাজ করে যদি এটির প্রয়োজন হয়।

এর যে কোনও সম্পর্কে সামান্যই জানার সাথে সাথে আমি স্ক্রিপ্টে কিছু সংযোজন করতে সক্ষম হয়েছি যে:

i) এটিকে শেল স্ক্রিপ্ট থেকে চালানোর অনুমতি দেওয়া হয় এবং একটি সিগমেন্টার / সিগ্কিল দিয়ে শেষ করা যায় ('বাদে' বিবৃতিতে এখন 'সিস্টেমেটসাইট' অন্তর্ভুক্ত রয়েছে)

ii) স্ক্রিপ্টটি থামাতে এবং পুনরায় আরম্ভ করতে এবং একই পোর্টটি পুনরায় ব্যবহারের অনুমতি দেয় (এটি পুনরায় চালু হওয়া স্ক্রিপ্টটি ব্যর্থ হওয়ার প্রবণতা বলেছিল যে রেন্ডারারের কাছে এখনও এটি খোলা থাকলে পোর্টটি খুলতে পারে না) - (অনুমতি_আরজ_এড্রেস = সত্য বিবৃতি)

iii) এমন একটি সংস্করণ তৈরি করুন যা স্টিডিনের কাছ থেকে ইনপুট নেয় এবং এর সমাধান দেয় যাতে sox ব্যবহার করে wav ফর্ম্যাটে আউটপুট যায় (পোর্ট 8082 তে)

সুতরাং আমার সংস্করণটি দেখে মনে হচ্ছে:

#!/usr/bin/python

import BaseHTTPServer
import SocketServer
import subprocess

PORT = 8082

MIMETYPE = 'audio/x-wav'
BUFFER = 65536

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
  def do_HEAD(s):
    print s.client_address, s.path, s.command
    s.send_response(200)
    s.send_header('content-type', MIMETYPE)
    s.end_headers()
  def do_GET(s):
    s.do_HEAD()
    pa = subprocess.Popen('sox -t raw -r 96000 -b 24 -L -e signed -c 2 - -t wav -r 44100 -b 16 -L -e signed -c 2 - ', shell = True, bufsize = BUFFER, stdout = subprocess.PIPE)
    while True:
        data = pa.stdout.read(1024)
        if len(data) == 0: break
        s.wfile.write(data)
    print 'stream closed'

SocketServer.TCPServer.allow_reuse_address = True
httpd = SocketServer.TCPServer(("", PORT), Handler)

print "listening on port", PORT

try:
 httpd.serve_forever()

except (KeyboardInterrupt, SystemExit):
 pass

httpd.server_close()

1
আমি এই স্ক্রিপ্টটিতে কয়েকটি ছোটখাটো সমস্যা পেয়েছি।
pastim

@ অ্যাডাম - বেশ কয়েকটি পরীক্ষার পরে আমি এই প্রোগ্রামটিতে কয়েকটি ছোটখাটো সমস্যা পেয়েছি। তবে সবচেয়ে বড় সমস্যা হ'ল স্ট্রিমিং ত্রুটি 32 (ব্রোকেন পাইপ) দিয়ে থামানো হয় যা প্রেরিত ডেটার পরিমাণের প্রত্যক্ষ অনুপাতে। 24/96000 মানের স্ট্রিমের জন্য এটি কেবল এক ঘণ্টার বেশি। 24/192000 এ এটি 30 মিনিটের কিছুটা বেশি। সিডি মানের জন্য কিছুটা 3 ঘন্টা। উপস্থাপককে আবার স্ট্রিমটি নির্বাচন করে স্ট্রিমটি আবার শুরু হয়। আমি বিশ্বাস করি যে সমাধানটি 'ছিটানো এনকোডিং' হতে পারে। আমি অবাক হয়েছি যে কেউ কোনও খণ্ডিত সংস্করণ তৈরি করেছে কিনা।
pastim

1

এটি এখন আপনার পক্ষে কার্যকর হবে কিনা তা নিশ্চিত না, তবে আমি এটি উবুন্টু ১২.১০ তে কাজ করার বিষয়ে একটি পোস্ট লিখেছিলাম:

http://dpc.ucore.info/blog/2012/11/07/dlna-streaming-in-ubuntu-12-dot-10/


এটি ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ - এটাই আমার পক্ষে সর্বদা ব্যর্থ হয়েছে। এই সাইটের নকশা থেকে আমরা আপনাকে গৃহীত পদক্ষেপগুলির রূপরেখার জন্য উত্সাহিত করতে চাই (কেবলমাত্র আপনার ব্লগে লিঙ্কটি পোস্ট করার পাশাপাশি) কারণ সময়কালে লিঙ্কগুলি অদৃশ্য হয়ে যেতে পারে যাতে আপনার উত্তর অকেজো হয়ে যায়। আমি এটি পরীক্ষা করতে সক্ষম হওয়ার সাথে সাথেই আপনার কাছে ফিরে আসব।
টাকাত

এখানে এখন পর্যন্ত আমার পর্যবেক্ষণগুলি: আপনার গাইড অনুসরণ করে 12.04-এ ক্লায়েন্ট থেকে অডিও স্ট্রিমটি নির্বাচন করার সময় রাইগেলকে সেগফুল্টের সাথে ক্র্যাশ করা হয়েছে। 12.10-এ আমরা জিএসটি-লঞ্চ দিয়ে স্ট্রিম তৈরি করতে অক্ষম। কিছু অনুপস্থিত?
তাক্কাট

প্রশ্নটি ছিল প্রায় ১২.০৪ এবং এই উত্তরটি উবুন্টু ১২.১০ এর জন্য, অন্যথায় আমি এটি দিয়েছি। :)
jdthood

ভবিষ্যতের ব্যক্তি এখানে থেকে: সেই লিঙ্কটি পচে গেছে। : পি
দাতাশমন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.