Tôi nhận ra rằng việc hỏi hai câu hỏi cùng một lúc có khả năng vi phạm giao thức bình thường, nhưng vì tôi nghĩ có lẽ hai vấn đề của tôi có liên quan với nhau (và tôi chỉ thực sự cần sửa câu hỏi thứ nhất nếu câu hỏi thứ hai không liên quan), có vẻ như đó là vấn đề duy nhất cách hợp lý về phía trước để mô tả cả hai cùng một lúc.
Những gì tôi thực sự muốn đạt được là lấy hai thiết bị đầu vào âm thanh USB riêng biệt và ghi lại từ cả hai đồng thời (được đồng bộ hóa, vì vậy các tệp riêng biệt thực sự không phải là một lựa chọn khả thi).
Một vấn đề là tôi không chắc làm thế nào tôi có thể bày tỏ yêu cầu này với ffmpeg, các tài liệu rất lớn và rất khó để người mới bắt đầu biết phải bắt đầu tìm ở đâu. Theo một cách nào đó, đó có lẽ là vì tôi không biết tên khái niệm là gì, vì vậy các mục chỉ mục không gọi cho tôi.
Một vấn đề khác là để đạt được điều này, tôi khá chắc chắn rằng tôi cần tham khảo trực tiếp các thiết bị phần cứng (vì -f alsa -i pulse
tôi có thể tin rằng, chỉ tham khảo thiết bị xung "hiện được chọn"). Bây giờ, nếu tôi cố gắng ghi lại từ một thiết bị duy nhất, một trong số chúng hoạt động tốt nếu tôi gọi nó bằng tên hw:2
. Một cái khác, hiện đang hw:3
có xu hướng gây khó chịu khi báo cáo bận, nhưng nếu tôi vượt qua điều đó, tôi luôn gặp lỗi: cannot set sample format 0x10000 2 (Invalid argument) hw:3: Input/output error
Tuy nhiên, nếu tôi cố gắng ghi lại từ đó thông qua xung (đó là thay đổi duy nhất; hãy chọn nó làm đầu vào mặc định, và đề cập đến nó như -i pulse
, thay vì -i hw:3
sau đó nó hoạt động (vẫn đơn lẻ, rõ ràng) chỉ tốt.
Bất kỳ con trỏ? Tôi đang thử điều gì đó không thể? Phần nào của tài liệu ffmpeg tôi nên đề cập đến?
EDIT: Khi tìm kiếm của tôi tiếp tục, tôi tự hỏi liệu đây có phải là thứ mà tôi phải hiểu "bộ lọc phức tạp" hay có thể là thứ mà hệ thống "jack" có thể xử lý. Tôi chưa thành công trong việc thực sự hiểu, nhưng họ có vẻ như là ứng cử viên có thể?
EDIT (thêm thông tin):
Đây là một lựa chọn các lệnh và đầu ra mà tôi đã cố gắng sử dụng, với các dòng chú thích, như thường lệ [...]
cho thấy tôi đã bỏ qua những thứ không hữu ích trong việc giúp hiểu:
toby@LinuxStudio:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
[...]
card 1: PCH [HDA Intel PCH], device 0: 92HD99BXX Analog [92HD99BXX Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: U192k [UMC404HD 192k], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
toby@LinuxStudio:~$ ffmpeg -f alsa -i hw:3 -sample_rate 48000 -channels 4 -channel_layout quad test.wav
[...]
[alsa @ 0x563b07aa6960] cannot set sample format 0x10000 2 (Invalid argument)
hw:3: Input/output error
toby@LinuxStudio:~$ ffmpeg -f alsa -i hw:2 -sample_rate 48000 -channels 2 -channel_layout quad test.wav
[...]
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, quad, s16, 3072 kb/s
[...]
Exiting normally, received signal 2.
toby@LinuxStudio:~$ ffmpeg -f alsa -i pulse -sample_rate 48000 -channels 4 -channel_layout quad test.wav
[...]
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, quad, s16, 3072 kb/s
Exiting normally, received signal 2.
toby@LinuxStudio:~$ ffmpeg -f alsa -i pulse -sample_rate 48000 -channels 4 -i hw:2 -sample_rate 48000 -channels 2 -channel_layout hexagonal test.wav
[...]
hw:2: Protocol not found
Did you mean file:hw:2?
Vì vậy, đặc biệt lưu ý rằng lệnh có hw:2
hoạt động cho hai kênh, lệnh hw:3
không thành công với "Đối số không hợp lệ", lệnh tương đương hoạt động khi tham chiếu pulse
thay vì hw:3
(và với thiết bị mặc định xung được đặt thành hw:3
sử dụng pavucontrol
để chúng phải là cùng mục tiêu).
Ngoài ra, dự đoán tốt nhất của tôi về một định dạng để lấy từ hai đầu vào rõ ràng là một lỗi cú pháp, nhưng tôi đoán, vì vậy đó không phải là một bất ngờ!
Cuối cùng, tôi thấy rằng khoảng chín lần mười, nếu tôi cố gắng sử dụng hw
định dạng để truy cập thiết bị bốn kênh, ffmpeg từ chối nỗ lực với cannot open audio device hw:2 (Device or resource busy)
hw:2: Input/output error
Điều đó luôn xảy ra tôi sử dụng pavucontrol
để chọn thiết bị làm mặc định, nhưng không biến mất nếu tôi bỏ chọn nó và thường xảy ra ngay cả khi thiết bị không bao giờ được mặc định.