2010-03-19 46 views
7

Tôi đã viết một ứng dụng SL4 cơ bản để thu thập dữ liệu âm thanh từ micrô bằng cách sử dụng CaptureSource. Vấn đề là, đó là đầu ra PCM thô - có nghĩa là rất lớn và không nén.Silverlight 4 - mã hóa dữ liệu PCM từ micrô

Vì tôi cần ứng dụng này chạy hoàn toàn trong môi trường SL4, làm cách nào để nén dữ liệu âm thanh PCM thành dữ liệu có thể được gửi đến máy chủ từ xa dễ dàng hơn?

Về cơ bản tôi cần một giải pháp mà tôi cũng có thể triển khai/bao gồm trong ứng dụng Windows Phone Series 7 cũng như một ứng dụng sẽ hoạt động trong môi trường trình duyệt.

Trong cuộc hội thoại, mọi người đã đề xuất Speex và WMA, nhưng tôi chưa tìm thấy bất kỳ thư viện hoặc ví dụ nào hoạt động mà không yêu cầu tham chiếu đến DLL không hoạt động trong dự án SL4.

Trả lời

4

Xin xem lớp WavFileHelper trong Silverlight 4 Rough Notes: Camera and Microphone Support trên blog của Mike Taulty của (thấp hơn giữa trang một chút, nhưng toàn bộ bài viết có giá trị), trong đó ông nén file PCM sang WAV.

Đây là một ví dụ khác khi ghi vào WAV bạn có thể thay đổi các giá trị như Mono/Stereo, thay đổi trực tiếp kích thước của tệp WAV: Audio recorder Silverlight 4 sample. Và một điều nữa cung cấp thêm chi tiết về cách viết cho WAV: Creating Sound using MediaStreamSource in Silverlight 3 Beta

+0

Cảm ơn, đây là tất cả các bài viết mà tôi đã thấy mặc dù. Một điều cần ghi nhớ ở đây, là yêu cầu của tôi rằng tôi cần phải "nén dữ liệu âm thanh PCM vào một cái gì đó có thể được gửi đến một máy chủ từ xa dễ dàng hơn". Chuyển đổi PCM sang WAV thật dễ dàng, nhưng việc nén đầu ra thì không. WAV là không mong muốn bởi vì nó là như vậy bloaty, ngay cả khi bạn mã hóa nó như là mono. Blog của Mike Taulty rất tuyệt cho thấy cách sử dụng các bồn để chụp PCM và chuyển đổi sang WAV, nhưng tôi đoán những gì chúng ta thực sự cần ở đây là một MediaStreamSource hoặc một cái gì đó tương tự như kết quả đầu ra như Speex hoặc WMA. – Richard

+0

@Otaku - Tôi đã chấp nhận câu trả lời của bạn; đó là nguồn gốc toàn diện nhất. Vẫn cần phải làm nhiều hơn nữa, và tôi sẽ cố gắng cập nhật bài viết này tại một số điểm trong tương lai với câu trả lời thực tế của tôi. Cảm ơn vì đầu vào của bạn. – Richard

+0

@Richard - cảm ơn bạn! Tôi nghe ya về sự cần thiết cho một cái gì đó nhỏ gọn hơn nhiều so với WAV. Tôi sẽ giữ cho mặt trước của tâm trí cũng như tôi chạy vào mọi thứ và nếu một cái gì đó tốt hơn đến cùng, tôi sẽ cập nhật câu trả lời. –

0

Bài viết này http://alvas.net/alvas.audio,articles.aspx#how-to-save-audio-to-mp3-on-silverlight về lưu âm thanh trên máy khách. Để gửi dữ liệu âm thanh đến máy chủ, bạn có thể sử dụng WebClient, ví dụ.

+0

Cảm ơn; những gì tôi sau khi mặc dù là một giải pháp quản lý thuần túy. NET không có các thành phần của bên thứ ba mà không được nhắm mục tiêu cụ thể tại nền tảng SL4. Tôi cần một giải pháp mà sẽ làm việc trên Windows Phone Series 7, quá. – Richard

1

Hãy xem this. Có vẻ như anh ta đã chuyển bộ mã hóa Speex thành C# cho vấn đề chính xác mà bạn đang cố giải quyết. Nó có sẵn here. Speex được thiết kế cho bài phát biểu và nên hoạt động tốt hơn wma, mp3 hoặc các codec âm thanh khác được thiết kế để xử lý nhạc nếu bạn chỉ là giọng nói mã hóa mà tôi cho là do bạn đang lấy từ micrô.

+0

Cảm ơn Jason. Tôi đã thấy điều này trước đây - tôi sẽ phải xem lại nó và xem nó có hoạt động hay không; Tôi quên lý do chính xác tôi đã giảm giá lần đầu tiên! – Richard

+0

Liên kết ám ảnh: Không thể tải nội dung trang – Nasenbaer

-2

Bạn có thể thực hiện mã hóa thông qua máy chủ, bằng cách gửi tất cả luồng tới dịch vụ WCF và thực hiện mã hóa thông qua API SDK mã hóa Microsoft Expression.

Xin vui lòng, thấy url này mà tôi đã hỏi trước: http://forums.silverlight.net/forums/t/181141.aspx

Trân

+0

Cảm ơn, nhưng vấn đề là nén nó * trước khi * nó được gửi đến máy chủ. – Richard

Các vấn đề liên quan