|
|
|
\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 在电脑上新建一个名为 hdmi.sdp 的 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}
|
|
|
|
如果一切正常可以在 vlc 里面看到 HDMI 输入的视频。
|
|
|
|
\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}
|