Добрый день! До определенного момента считал, что звук в linux воспроизводится благодаря xserver...но после трассировки mplayer немного потерялся. Буду благодарен за пояснение данного процесса (в какой сокет/файл записывается аудиопоток?).
Вот, что нашел:
Вырезки из «strace mplayer»:
pipe2([5, 6], O_CLOEXEC)
и в цикле записывает (4 - это аудиофайл)
read(4, "~\2760\v\305'\251\357\377\376\273\377\277\351#~\0\0\0\20\6g?\367\342\327U\303ej\351J"..., 4096) = 4096
write(6, "W", 1) = 1
Кроме того перед этим открывает
socket(AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 9
connect(9, {sa_family=AF_LOCAL, sun_path="/run/user/1000/pulse/native"}, 110) = 0
А также нашел открытие сокета X11, но он закрывается еще до начала воспроизведения:
connect(8, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X1"}, 20) = 0
getpeername(8, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X1"}, [20]) = 0
getsockname(8, {sa_family=AF_LOCAL, NULL}, [2]) = 0
fcntl(8, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(8, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(8, F_SETFD, FD_CLOEXEC) = 0
writev(8, [{"l\0\v\0\0\0\22\0\20\0\0\0", 12}, {"", 0}, {"MIT-MAGIC-COOKIE-1", 18}, {"\0\0", 2}, {"q\234\r\32d\203m\347\32;\221\3265\26k<", 16}, {"", 0}], 6) = 48
recvfrom(8, "\1\0\v\0\0\0\213\5", 8, 0, NULL, NULL) = 8
recvfrom(8, "\30\240\265\0\0\0\200\3\377\377\37\0\0\1\0\0\24\0\377\377\1\7\0\0 \10\377\0\0\0\0"..., 5676, 0, NULL, NULL) = 5676
writev(8, [{"\20\0\5\0\f\0\0\0PULSE_SERVER", 20}], 1) = 20
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\1\0\0\0\0\0\220\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\24\0\6\0\234\2\0\0\220\1\0\0\37\0\0\0\0\0\0\0\377\3\0\0", 24}], 1) = 24
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\10\2\0\21\0\0\0\37\0\0\0\0\0\0\0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 100
writev(8, [{"\20\0\6\0\20\0\0\0PULSE_SESSION_ID", 24}], 1) = 24
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\3\0\0\0\0\0\355\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\24\0\6\0\234\2\0\0\355\1\0\0\37\0\0\0\0\0\0\0\377\3\0\0", 24}], 1) = 24
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\10\4\0\1\0\0\0\37\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 36
writev(8, [{"\20\0\5\0\n\0\0\0PULSE_SINK\0\0", 20}], 1) = 20
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\5\0\0\0\0\0\221\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\24\0\6\0\234\2\0\0\221\1\0\0\37\0\0\0\0\0\0\0\377\3\0\0", 24}], 1) = 24
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\20\0\5\0\f\0\0\0PULSE_SOURCE", 20}], 1) = 20
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\7\0\0\0\0\0\222\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\24\0\6\0\234\2\0\0\222\1\0\0\37\0\0\0\0\0\0\0\377\3\0\0", 24}], 1) = 24
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\20\0\5\0\f\0\0\0PULSE_COOKIE", 20}], 1) = 20
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\t\0\0\0\0\0\223\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
writev(8, [{"\24\0\6\0\234\2\0\0\223\1\0\0\37\0\0\0\0\0\0\0\377\3\0\0", 24}], 1) = 24
recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"\1\10\n\0\200\0\0\0\37\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 544
shutdown(8, SHUT_RDWR) = 0
close(8) = 0
PS: лез в исходники mplayer, но там уперся в библиотечные функции pulseaudio, которые в свою очередь пестрят изобильным интерфейсом и многочисленными ответвлениями, так что копать дальше ради того, чтобы узнать как оно работает не стал. (мне, для личного FAQ, достаточно внешний интерфейс, и алгоритм его взаимодействия с ядром на пальцах)