\chapter{硬件接口} \section{网络} 系统里有两个网口,一个是从 SOC 直出的,一个从 PCIE 接 RTL81111芯片出来的网口。他们的IP地址配置文件是 /etc/network/interfaces.d 下的 eth0 和 eth1。其对应关系如下表所示: \begin{table}[H] \centering \begin{tabular}{ccc} \toprule 网络接口 & 驱动 & 默认地址 \\ \midrule \texttt{eth0} & \texttt{\small r8168} & \texttt{\small 192.168.2.80} \\ \texttt{eth1} & \texttt{\small st\_gmac} & \texttt{\small 192.168.1.80} \\ \bottomrule \end{tabular} \caption{网口对应关系} \end{table} \section{video} 从 HDMI 输入的视频数据,在 Linux 系统里从 /dev/videoX 的设备中获取出来。可以用 多媒体框架 gstreamer 来做测试。 用 gstreamer 的 gst-launch-1.0 可以用来控制 video 的视频数据。 这里以 板子上用 gstreamer 提供 rtp 服务,在电脑的 windows 端用 VLC 程序来实现视频的播放为例,展示一下 video 功能。 \begin{enumerate} [(1)] \item 在板子上启动 rtp 服务: \begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay pt=96 \ ! udpsink host=192.168.1.17 port=5000 \end{minted} 这里假定电脑的IP地址是:192.168.1.17。这根据实际情况修改。 \item 在电脑上新建一个 sdp 文件(hdmi.sdp)\footnote{ SDP 的完整定义,请查看 rfc4566},内容如下: \begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash} m=video 5000 RTP/AVP 96 a=rtpmap:96 H264 a=framerate:30 c=IN IP4 192.168.1.17 \end{minted} 这里的 5000 是端口号, 192.168.1.17 是 IP 地址,要与上面命令中的参数保持一致。 \item 在电脑上用 VLC 程序打开 hdmi.sdp 文件。 \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{vlc} \caption{VLC 播放 video} \end{figure} \end{enumerate} \begin{comment} \begin{minted}[bgcolor=lightgray!30,fontsize=\tiny]{bash} gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080,framerate=30/1 \ ! timeoverlay ! tee name=vsrc vsrc. ! queue ! videoconvert \ ! ximagesink vsrc. ! queue ! x264enc tune=zerolatency \ ! rtph264pay name=pay0 pt=96 \end{minted} gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay ! udpsink host=192.168.1.10 port=5000 在 windows 端用 vlc 打开 \verb+rtsp://<目标IP>:8554/test+ 可以拉取视频数据。 \noindent 发送端: \begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash} gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000 \end{minted} 接收端: \begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash} gst-launch-1.0 -v udpsrc port=5000 ! rtpmp2tdepay ! decodebin ! autovideosink \end{minted} \end{comment}