2011-01-02 33 views
11

Tôi gặp sự cố khi tôi cần "mô phỏng" đầu ra micrô.Mô phỏng Micrô (micrô ảo)

Dữ liệu sẽ đến qua mạng, được giải mã vào PCM và về cơ bản cần phải được ghi vào micrô - sau đó các chương trình khác có thể đọc/ghi/bất kỳ điều gì.

Tôi đã đọc lên trên alsa nhưng thông tin khá thưa thớt. Plugin tệp có vẻ đầy hứa hẹn - tôi đã nghĩ đến việc có một đường ống có tên là "infile" mà sau đó tôi có thể phân phối dữ liệu đến từ ứng dụng của tôi. Tôi không thể làm cho nó hoạt động tuy nhiên (vlc/audacity chỉ segfault).

pcm.testing { 
    type file 
    slave { 
    pcm { 
     type hw 
     card 0 
     device 0 
    } 
    } 
    infile "/dev/urandom" 
    format "raw" 
} 

Có cách nào tốt hơn để thực hiện việc này không? Bất kỳ đề xuất về alsa plug-in (đặc biệt là các plugin tập tin)?

Trả lời

7

Âm thanh của bạn sẽ đi qua mạng và nội dung nào sẽ lưu vào bộ nhớ cache cho đến khi nội dung nào đó muốn đọc? Hoặc dữ liệu sẽ bị hủy? Nói chung một cái gì đó như dưới đây (chỉ hầu như không được thử nghiệm) nên làm việc như một mic ảo, nhưng tôi nghĩ rằng nó sẽ luôn luôn đọc tập tin từ đầu khi thiết bị mở và bạn cần phải kiểm tra như thế nào nó xử lý kết thúc của tập tin. Có lẽ những gì bạn sẽ thử nó bằng cách sử dụng đường ống nhưng sau đó bộ nhớ đệm/discarding dữ liệu đến cần phải được xử lý bởi các ứng dụng đọc từ mạng.

pcm.virtmic { 
    type file 
    format "raw" 
    slave.pcm "default" 
    file '/dev/null' 
    infile '/dev/urandom' 
} 

Xem alsa docs để có thêm tùy chọn.

Một lần nữa, không chắc chắn nếu công cụ này là những gì bạn thực sự cần cho công việc. Nó sẽ thực sự tiện lợi nếu bạn có thể bắt đầu một lệnh với tùy chọn 'infile', giống như bạn có thể với 'file' nhưng tiếc là bạn không thể ...

Hy vọng điều đó sẽ hữu ích.

CẬP NHẬT: slave.pcm không được "rỗng" nhưng một số thiết bị thực. Dường như nó được sử dụng cho thời gian hoặc tôi không biết nhưng sử dụng null gây ra quá trình ghi âm để ngăn chặn mãi mãi. Thiết bị này có thể buộc bạn ở một tỷ lệ mẫu nhất định mặc dù vì vậy hãy cẩn thận. Sử dụng "mặc định" là một giá trị mặc định sane. infile cần cung cấp dữ liệu âm thanh thô với định dạng và tỷ lệ phù hợp/chính xác. btw bạn có thể xem alsa server và jackd và các hệ thống âm thanh và thư viện khác cho các giải pháp thay thế cho công việc của bạn