Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 13
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Đọc âm thanh từ mic >>> xuất ra loa vằng VC++?

    tớ đang làm chương trình chat qua mạng lan ... mọi thứ gần như hoàn thành rồi nhưng còn phần chat voice mắc quá search trên mạng toàn project = MFC với C# tớ đọc không hiểu lắm :-(

    ai giúp tớ chỉ ra những hàm API cần để xử lý việc này 1 cách đơn giản nhất không (vì là chat lan nên không cần nén âm thanh ... làm cách nào đơn giản nhất là ok)

    Mong các bạn giúp đỡ cả về ý tưởng luôn ... tớ vẫn chưa hiểu khi nào thì nên bắt đầu phát âm thanh ? vì lúc nào chương trình cũng tron tình trạng đọc dữ liệu từ card âm thanh nên không biết khi nào nên dừng lại để phát nó và khi dừng lại như vậy nó cũng không đảm bao thu phát âm liên tục ... :-(

    Help me.

  2. #2
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0
    Ko có API nào làm việc này thì phải. Kevin chỉ biết là với DirectX có thể làm việc này. Kevin đã thử với dshow capture cả âm thanh và hình ảnh rất tốt.

    Đơn giản bạn có thể xem cái này:
    http://www.codeproject.com/KB/audio-...Recording.aspx

    Khó hơn tí bạn bạn xem cái này:
    http://www.codeproject.com/KB/direct...txcapture.aspx

  3. #3
    Có mấy cái hàm API waveIn, waveOut ấy ^.^
    Mấy cái này chỉ có API thôi, chẳng dính dáng gì đến cái MFC gì đâu ^.^

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    waveIn, waveOut là hàm của DirectX chứ nhỉ? Làm gì có hàm Windows API tên đó?
    Send me the ref-links of these APIs, pls!

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Kevin Hoang
    waveIn, waveOut là hàm của DirectX chứ nhỉ? Làm gì có hàm Windows API tên đó?
    Send me the ref-links of these APIs, pls!
    Oài, mấy cái hàm waveInPrepare, waveInReset, .. gì gì là của Windows APIs chứ làm gì lại của DX ở đây anh [IMG]images/smilies/smile.png[/IMG]

  6. #6
    Ah, là các hàm APIs của WinMM không phải của DirectX. Kevin nhớ rồi, dùng cái đó không tốt lắm, nhưng lại dễ sử dụng!

    @Học Hỏi:
    - Không nên ích kỷ xóa đi nội dung bài viết khi mà bạn đã làm xong. Đã tham gia cộng đồng C Việt, bạn cũng nên chia sẻ kiến thức mà bạn biết cho mọi người, lần sau bạn có khúc mắc gì người khác mới nhiệt tình giúp bạn.

    @All:
    - Ở cộng đồng C Việt, chúng tôi tôn trọng tất cả chia sẻ của bất kỳ thành viên nào, bởi chúng tôi KHÔNG xây dựng cộng đồng C Việt như một câu lạc bộ dành cho một vài cá nhân trao đổi với nhau. Chúng tôi mong muốn rằng tất cả các bạn ở đây, ai biết nhiều thì chia sẻ nhiều, ai biết ít chia sẻ ít, cùng nhau xây dựng lên một cộng đồng hữu ích mà ai cũng có lợi từ việc tham gia nó.

    - Các bạn có thể thoải mái chia sẻ và trao đổi bất cứ vấn đề gì ở cộng đồng C Việt. Khi tham gia cộng đồng C Việt, các bạn cũng không nên có quan niệm rằng "ý kiến của Mod hoặc Admin là đúng hoàn toàn", để rồi các bạn không có bất cứ một sự trao đổi nào. Càng biết nhiều, càng sai nhiều, chỉ có chia sẻ, trao đổi mới làm giảm tỉ lệ sai sót. Đề tài này là 1 minh chứng mà ai cũng nhìn thấy.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Kevin Hoang
    Ah, là các hàm APIs của WinMM không phải của DirectX. Kevin nhớ rồi, dùng cái đó không tốt lắm, nhưng lại dễ sử dụng!
    Em chưa biết nó không tốt chỗ nào vậy anh? Anh có thể phân tích điểm không tốt của nó được không vậy?
    Em vẫn dùng nó để play các file nhạc bình thường, play âm thanh thoại, ... etc...
    Hơn nữa, em thấy dùng mấy cái wave cơ bản này mình handle được nhiều thứ. Chẳng hạn nếu dùng DirectX mình rất khó khử vọng (AEC) vì DX có bộ AEC riêng nhưng không hiệu quả lắm đối với việc truyền âm thanh qua mạng. Dùng wave mình có thể dùng được bộ khử vọng riêng tốt mà.

  8. #8
    Kevin đã từng triển khai các dự án liên quan đến Multimedia, thì waveIn, waveOut không đáp ứng được các yêu cầu khắt khe về chất lượng của âm thanh, và phải là wav của windows mới có thể tương thích với nó. Khi Kevin trao đổi với một số khách hàng, họ đã trao đổi trước vấn đề này khi mà Kevin trao đổi về các yếu tố khác. Nó rất đơn giản, nêu muốn làm hơn một điều gì là vấn đề cực kỳ vất vả.

    Việc sử dụng waveIn chỉ đem lại âm thanh như là sound recorder tool đã làm. Tuy nhiên là việc này tùy theo từng yêu cầu mà sử dụng, không phải ai cũng cần một chất lượng âm thanh đặc biệt.

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi namdq2k
    Ban đầu bạn đưa khoảng n = 4, 5 buffer vào để nó play. (im lặng trong 4, 5 buffer đầu tiên)
    Khi nó play xong, thì nó có callback lên một cái tín hiệu là nó vừa chơi xong buffer đó rồi (lúc này còn n - 1 buffer đang được chơi). Nếu chưa có dữ liệu thì bạn nhét nó vào một buffer với giá trị các byte của buffer = 0 (im lặng). Còn nếu có dữ liệu thì copy nó vào buffer đẩy vào cho nó chơi.
    tớ chưa hiểu rõ cách của cậu lắm , có phải như này không :

    tạo ra 1 hàng đợi rồi cho tầm 5 lần nhận dữ liệu vào đó >>> lúc đó bắt đầu play, rồi mỗi lần nhận được dữ liệu lại cho nó vào hàng đợi ... cứ vậy rồi lần lượt lấy ra rồi play trong hàng đợi đúng không cậu ?

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Học Hỏi
    tớ chưa hiểu rõ cách của cậu lắm , có phải như này không :

    tạo ra 1 hàng đợi rồi cho tầm 5 lần nhận dữ liệu vào đó >>> lúc đó bắt đầu play, rồi mỗi lần nhận được dữ liệu lại cho nó vào hàng đợi ... cứ vậy rồi lần lượt lấy ra rồi play trong hàng đợi đúng không cậu ?
    Tớ gửi cái projects đó cho cậu rồi đó. Trong đó cái class WavePlay tớ viết để chơi nhạc đó [IMG]images/smilies/smile.png[/IMG]
    Có một hàm callback để nhận dữ liệu khi nó vừa chơi xong buffer. Công việc là khi có hàm callback thì nhét dữ liệu vào đó. Không có dữ liệu thì vẫn nhét vào một buffer có các mẫu = 0 [IMG]images/smilies/smile.png[/IMG] (im lặng)

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •