Làm thế nào để phát một bộ phim nghe hai bản nhạc cùng một lúc?


10

Tôi có các tệp phim có nhiều bản âm thanh (trong bộ chứa MKV). Tôi muốn xem phim trong khi gửi một ngôn ngữ tới loa (cho trẻ em) và ngôn ngữ khác đến tai nghe (cho chính tôi), giữ các bản nhạc đồng bộ nếu phim bị tạm dừng, v.v.

Giả sử hệ thống của tôi đã có hai đầu ra âm thanh được cấu hình đúng.

Có cách nào để làm điều này với một trình phát phương tiện trong Linux không? Tôi đã kiểm tra MPlayer và VLC cho đến nay và họ chỉ hỗ trợ chọn một trong các bản âm thanh có sẵn.


1
Bạn đang hỏi một câu hỏi ngoài chủ đề (mua sắm phần mềm). Các câu hỏi tìm kiếm sản phẩm, dịch vụ hoặc đề xuất tài liệu học tập là lạc đề. Xem về chủ đề . Hãy thử softwarerecs.stackexchange.com nhưng trước tiên vui lòng đọc Những gì cần thiết cho một câu hỏi để chứa "đủ thông tin" .
DavidPostill

Có lẽ bạn có thể mã hóa lại tệp, kết hợp cả hai luồng âm thanh thành một. Vì vậy, nếu một là 5.1 và cái kia là âm thanh nổi, bạn sẽ có một luồng 8 kênh. Bạn có thể ánh xạ các kênh này đến các thiết bị đầu ra khác nhau bằng Soundflower trên OS X, nhưng tôi không biết về Linux. Nghe rất bất tiện. Bạn cũng có thể sử dụng một cái gì đó như Adobe Premiere hoặc NLE khác để ánh xạ các bản âm thanh khác nhau đến các đầu ra khác nhau.
Elliott B

Tôi sợ rằng "những đứa trẻ" _ đã học ngôn ngữ khác ... ít nhất là tôi hy vọng. :-)
Hastur

Bạn cũng có thể trộn các bản âm thanh thành âm thanh nổi, sau đó đặt tất cả chúng vào một bản âm thanh 5.1 (bỏ qua các kênh trung tâm / loa siêu trầm), sau đó chuyển chúng trở lại vào phim. Sau đó, bạn có thể phát nó trên bất kỳ card âm thanh 5.1 nào, chỉ cần cắm tai nghe & loa vào đầu ra thích hợp.
JonasCz - Phục hồi Monica

Câu trả lời:


3

Ý tưởng

aka Làm thế nào để phá vỡ một (bơ) bay trên bánh xe [ Bay ] .

Bạn có thể truyền phát cục bộ toàn bộ phim với tất cả các bản nhạc và phụ đề, ví dụ như với vlc.
Sau đó, sẽ đủ " kết nối" hai máy khách với luồng đó, chọn ngôn ngữ (và / hoặc phụ đề) và đầu ra âm thanh khác nhau (mà chúng tôi giả sử đã được định cấu hình).

Ngoài ra, với TV, máy tính bảng hoặc điện thoại di động mới, không cần thiết phải chạy ứng dụng khách trên máy tính ... và khi bạn tạm dừng trình phát, bạn tạm dừng tất cả ... và nó cũng hoạt động với các cửa sổ (luôn luôn giả định đầu ra âm thanh đã được cấu hình có thể với các chương trình phần thứ ba, trong trường hợp bạn muốn chạy hai máy khách trên máy tính).

Một số từ nữa

Một dòng lệnh truyền phát thông thường có thể tương tự như

vlc "movie.mkv" --sout-all --sout="#rtp{dst=239.255.100.100,port=5004,mux=ts}"

Nó là cần thiết tùy chọn --sout-all [ SO ]

 --sout-all, --no-sout-all  Enable streaming of all ES (default disabled)
 Stream all elementary streams (video, audio and subtitles) (default disabled)

Đọc vlc -Hđể có một số gợi ý cho các tùy chọn (tấn) khác có sẵn.

Để "phát" luồng

vlc rtp://239.255.100.100:5004  --audio-track=x

Trong đó x là số lượng luồng âm thanh bạn muốn nghe trên máy khách đó.
Tất cả cũng nên được thực hiện dễ dàng từ GUI máy chủ / máy khách ...

Tài liệu tham khảo và đọc thêm
Bạn có thể muốn đọc thêm từ trang blog của Luuk "Sử dụng VLC để phát nhiều video clip trên nhiều máy tính" [ 1 ] , cuối cùng bạn có thể thử thêm đoạn âm thanh bên ngoài bắt đầu từ trang videolan wiki này [ 2 ] hoặc bạn có thể chơi với Guxer và đầu ra khác nhau theo đề xuất của Antonio trong câu trả lời này [ 3 ] .

GStreamer:
# Số lượng và thứ tự của các bản nhạc phải được biết đến

gst-launch-1.0 \
filesrc location=example.mkv ! decodebin name=decoded \
decoded.src_0 ! queue ! autovideosink \
decoded.src_1 ! queue ! audioconvert ! alsasink device=”hw:1,0″ \
decoded.src_2 ! queue ! audioconvert ! alsasink device=”hw:2,0″

Lệnh Gstreamer ở ​​trên có thể là một câu trả lời hoạt động tối thiểu hoặc là một con đường để cứu (bơ) bay ...
... nhưng hiếm khi tôi muốn bảo vệ biệt danh của riêng mình.


Lưu ý rằng RST IP cần nằm trong phạm vi 224.0.0.0 đến 239.255.255.255 (dải IP đa hướng) hoặc bạn sẽ không thể kết nối nhiều hơn máy khách với nó. Có vẻ như bất kỳ IP như vậy sẽ chỉ hoạt động.
chx

@chx Hãy cho tôi biết nếu ý tưởng đó hoạt động với vấn đề khác của bạn ...
Hastur

Có nó làm! Tôi đã viết nó lên superuser.com/a/1422462/41259 nhưng tôi nghĩ chi tiết này đáng được đề cập ở đây.
chx

0

Giải pháp truyền phát có một nhược điểm - khách hàng sử dụng bộ đệm và họ có thể không đồng bộ hóa. Nó đã xảy ra với tôi.

Một cách tiếp cận khác để chạy hai bản nhạc khác nhau đồng thời mà tôi thấy hữu ích cho bản thân mình là chạy hai bản VLC và đồng bộ hóa phát lại của chúng. Nhưng tôi không thể thực hiện đúng cách mà không tự động hóa (các hành động thủ công được thực hiện từng bước một gây ra sự chậm trễ).

Giải pháp là kiểm soát đồng bộ cả hai phiên bản VLC bằng giao diện web. Nó có thể được kích hoạt thông qua GUI hoặc bảng điều khiển:

vlc --extraintf=http --http-host 127.0.0.1 --http-port 8081 --http-password any_password

Đối với mỗi phiên bản VLC sử dụng các cổng khác nhau. Để kiểm soát phát lại một lệnh là đủ - tạm dừng chuyển đổi: http://:any_password@127.0.0.1:8081/requests/status.xml?command=pl_pause"

Thêm thông tin về các lệnh.

Trong trường hợp đó, tất cả những gì bạn phải làm là tạo một chương trình / tập lệnh gửi yêu cầu HTTP đến cả hai URI. Tôi đã viết chương trình golang rất đơn giản cho nó (đây là mã nguồn ). JS là một ứng cử viên tốt cho mục đích đó. Đi xa hơn có thể thực hiện nhiều lệnh hơn, gán các ràng buộc khóa toàn cầu cho chương trình / tập lệnh đó.

Điểm chính mà phương pháp này hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.