Không thể chạy file âm thanh mặc dù dẫn đường dẫn đúng trong winform

mình đang mô phỏng 1 game trên winform c# , đến lúc mình thêm âm thanh vào bằng SoundPlayer thì chỉ riêng file âm thanh đầu tiên của mình chạy được còn tất cả các file sau này thêm vào khi chạy nó đều báo lỗi không tìm thấy file ở đường dẫn,
–> file âm thanh mình đã đổi định dạng sang wav, đặt ở trong resouces

SoundPlayer audiochayGame = new SoundPlayer();
audiochayGame.SoundLocation = “audiochaygame.wav”;
audiochayGame.PlayLooping();

ai biết lỗi··· nó nằm đâu chỉ mình vs ạ


Đưa cái hình thế thì tụi mình “mò” lỗi à?
Chép mã lên, cho xem tất cả tài nguyên (phần Resources), chỉ rõ lỗi ở dòng nào.

3 Likes

cảm ơn bạn đã nhắc , mình đã sửa lại nội dung bài viết gồm lỗi và nơi để file audio rồi, bạn xem giúp mình lỗi vs ạ

Khuyến khích chép mã (dạng văn bản) hơn chụp hình.


Đường dẫn sai lè ra rồi.
Nó dạng tài nguyên nhúng (được nén trong tập tin .exe). Bạn lại gán đường dẫn cục bộ (trên ổ đĩa).
Bạn phải lấy dữ liệu dạng luồng (stream) để gán cho SoundPlayer.

// audiochayGame.SoundLocation = “audiochaygame.wav”;
audiochayGame.Stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("audiochaygame.wav");

Google: c# get embedded resource stream.

5 Likes

mình làm theo như bạn chỉ bên trên thì không còn lỗi đường dẫn tới file nữa , nhưng âm thanh phát ra chỉ là 1 tiếng pit của máy ,
mình thử thêm đường chỗ khởi tạo soundplay();

SoundPlayer audiochayGame = new SoundPlayer(@"D:\thuctap.net\GameHuongBia\Game\Resources\audiochaygame.wav");

thì lại chạy được
nhưng nếu như thế thì khi mình chuyển bà này sang máy khác thì đường dẫn sẽ không còn chính xác nữa , và việc chạy âm thanh sẽ xảy ra lỗi

Thế này: c# get embedded resource audio

4 Likes

mình đã cho chạy được âm thanh trong app rồi, bạn có thể cho mình xin thêm 1 vài từ khóa để tìm kiếm việc cho 2 âm thanh chạy xen kẽ nhau được ko ạ, mình cảm ơn !!

Xen kẽ!?
Ý bạn là chạy song song (cùng một lúc)?

3 Likes

có thể hiểu là như thế, khi form chạy lên mình cho chạy 1 đoạn âm thanh , và trong quá trình chạy ấy thỉnh thoảng mình sẽ cho chạy một đoạn âm thanh khác chạy vào và không làm đoạn âm thanh ban đầu mất đi

Trong trò chơi, hầu hết các đều có vài phần như:

  • Nhạc nền/chủ đề (Background/Theme music). Xuyên suốt.
  • Hiệu ứng âm thanh (Sound effects).
  • Âm thanh môi trường (Ambient sounds).

Ví dụ từ Warcraft 3:
Sound Settings

SoundPlayer không thể làm điều này.
Bạn có thể dùng bộ thư viện của DirectX hoặc WindowsAPI

Google: c# soundplayer play multiple sounds simulations

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?