GStreamer for Ethernet AVB

这篇具有很好参考价值的文章主要介绍了GStreamer for Ethernet AVB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https://iamkate.com/code/binary-file-viewer/
apt-get install manpages-posix-dev

1 AVB MPEG2-TS
1.1 MPEG2-TS
cip_with_sph_payload: 32-byte AVTP header + 4-byte Timestamp + 4-byte MPEG2TS header + 184-byte payload
32 bytes hdr, IEEE 1722-2016 spec
00 uint32_t subtype_data;
04 uint64_t stream_id;
12 uint32_t avtp_time;
16 uint32_t format_specific;
20 uint32_t packet_info; // big-endian MSB 16bit stream_data_length from cip_1
24 uint32_t cip_1;
28 uint32_t cip_2;
32 uint8_t cip_data_payload[0];
CIP means Common Isochronous Packet.

4 bytes MPEG2TS header
PID: offset-1 LSB 5bits + offset-2
SeqId: offset-3 LSB 4bits
PAT: Program Association Table, PID = 0
PMT: Program Map Table, PID = 0x130
CAT: Conditional Access Table

Note: CMMB uses H264 video format. Siano CMMB IC integrated tuner + demodulator, did not include H264 decoder.

1.2 MPEG2-TS File Name Extension
.ts, .mpg or .mpeg, PotPlayer 64 bit or VLC can play it.

2 gst-launch h264
gst-launch命令创建并运行一个pipe,组件之间的管道用“!”作为分隔符,为了跟shell的管道分隔符区分开没有用“|”。

2.1 mp4 to h264 conversion
ffmpeg -i C:\path\to\test.mp4 \
-an -vcodec copy -bsf:v \
h264_mp4toannexb \
C:\path\to\output.h264
其中bsf是Bit Stream Filter的缩写。

gst-launch-1.0 \
filesrc location=C:\\path\\to\\output.h264 ! \
h264parse ! avdec_h264 ! autovideosink
利用了filesrc、h264parse、avdec_h264和autovideosink四个element,其中设置了filesrc的location属性值为文件路径,h264parse的作用是从h264文件中识别出Start_Code_Prefix(0x000001或0x00000001)。
h264parse: gstreamer1.0-plugins-bad
avdec_h264: gstreamer1.0-libav

2.2 cvf format
P1722/D14: Draft 14, August 2015
P1722/D16: Draft 16, Nov 2015
1722-2016: Approved 7 December 2016

28 bytes hdr, IEEE 1722-2016 spec
00 uint32_t subtype_data;
04 uint64_t stream_id; // Stream ID = MAC + Unique ID
12 uint32_t avtp_timestamp; 
16 uint32_t format_specific;
20 uint32_t packet_info; // big-endian MSB 16bit stream_data_length from h264_timestamp
24 uint32_t h264_timestamp;

h264_timestamp:AVTP Presentation Time的作用是DTS(Decoding Time Stamp),在非交叉模式(Non-interleaved mode)下,是可以正常工作的;但是在交叉模式(Interleaved mode)下,由于解码顺序和显示顺序不一致,虽然能按正确的顺序解码,但是不能按正确的顺序显示。为了解决这个问题,才加上了h264_timestamp,它也是遵循RFC 6184规范的,它充当的是PTS(Presentation Time Stamp)的角色,用以指示正确的显示顺序。在非交叉模式下,该值可填充也可不填充。

H264 File Name Extension: .h264, PotPlayer 64 bit or VLC can play it
H265 File Name Extension: .h265, PotPlayer 64 bit or VLC can play it

3 gst-launch wav
gst-launch命令创建并运行一个pipe,组件之间的管道用“!”作为分隔符,为了跟shell的管道分隔符区分开没有用“|”。

3.1 mp4 to wav conversion
ffmpeg -i C:\path\to\test.mp4 \
-ar 48000 -ac 2 -f wav \
C:\path\to\output1.wav

ffprobe output.wav

gst-launch-1.0 \
filesrc location=C:\\path\\to\\output1.wav ! \
wavparse ! autoaudiosink

3.2 mp3 to wav conversion
ffmpeg -i C:\path\to\test.mp3 \
-ar 48000 -ac 2 -acodec pcm_s16le \
C:\path\to\output.wav

3.3 pcm to wav conversion
ffmpeg -i C:\path\to\test.pcm \
-ar 48000 -ac 2 -f s16be \
C:\path\to\output.wav

3.4 sample rate conversion
ffmpeg -i in_48k.wav \
-ar 24000 -ac 2 -acodec pcm_s16le \
out_24k.wav

3.5 crf format
20 bytes hdr, IEEE 1722-2016 spec
00 uint32_t subtype_data;
04 uint64_t stream_id;
12 uint64_t packet_info;
20 uint64_t crf_data[0];

Tcrf = Ts + (MTT/p)*p + Tc
Ts:采样时间点
MTT: Maximum Transit Time, also known as Presentation Time Offset, Class C is 15ms from AutoCDS v1.4
Tc:buffer里面的个数乘以采样周期

3.6 aaf format
24 bytes hdr, IEEE 1722-2016 spec
00 uint32_t subtype_data;
04 uint64_t stream_id; // Stream ID = MAC + Unique ID
12 uint32_t avtp_time; // CRF + MTT, MTT = 2ms
16 uint32_t format_specific;
20 uint32_t packet_info;

4 14nm iMX 8M Plus EVK
FEC: 0x30be_0000
DWMAC_v5.10a: 0x30bf_0000
USB0: 0x3810_0000
USB1: 0x3820_0000
Refer to Getting Started with AVB on Linux

1) Ubuntu Desktop 20.04.2.0
2) meson
github meson 0.59.0.rc1
cd meson
python3 setup.py build
python3 setup.py install
dep_threads = dependency('threads')
dependencies : [dep_threads,
    libgl_dep],
3) 3rd libraries
github libavtp:编译gst-plugins-bad前需要先编译安装github libavtp,否则gst-plugins-bad不编译avtp plugin。
libglib2.0-dev: apt install libglib2.0-dev
h264parse: gstreamer1.0-plugins-bad
avdec_h264: gstreamer1.0-libav
autoaudiosink: apt install libalsa-ocaml-dev, gst-plugins-base
autovideosink: apt install libx11-dev, ximagesink, gst-plugins-base
pango: for clockoverlay, gst-plugins-base, never build and install it
cairo: never update cairo, otherwise GTK apps cannot boot.
4) gstreamer build
gstreamer, gst-plugins-base, gst-plugins-bad: build
gst-plugins-good, gst-plugins-ugly, gst-libav: after install them, autoaudiosink and autovideosink may not work, refer to 3)
5) check avtp
gst-inspect-1.0 avtp
6) vlan
ip link add link eth0 name eth0.5 type vlan id 5 \
    egress-qos-map 2:2 3:3
ip link set eth0.5 up
7) GST_DEBUG
copy libavtp calculate_avtp_time(&tstamp, 5) to gst-plugins-bad avtp plugin to generate local avtp time for gst-launch-1.0 test, argument 5 means MTT (max_transit_time).
streamid的前48个字节是avb的组播地址,后16位根据需求制定。
GST_DEBUG=avtpsrc:6 gst-launch-1.0 xxx

sudo ./aaf-listener -d <mac> -i <eth0.N> | \
gst-launch-1.0 filesrc location=/dev/stdin ! \
rawaudioparse use-sink-caps=false \
format=pcm pcm-format=s16be \
sample-rate=48000 num-channels=2 ! \
audioconvert ! audioresample ! autoaudiosink

sudo ./cvf-listener -d <mac> -i <eth0.N> | \
gst-launch-1.0 filesrc location=/dev/stdin ! \
h264parse ! avdec_h264 ! autovideosink

5 Huawei IPCamera
HiIspTool.sh
Winows PQ Tools: Picture Quality

6 Abbreviations
AM824 Protocol: FireWire "Adaptation Layer" for MIDI
DWC sbd_intr: sideband interrupt
enp0s10: ethernet (en), prefix 0 (p0), slot 10 (s10). PCI BDF and physical/geographical location of the connector. systemd udev-builtin-net_id.c, /etc/systemd/network/99-default.link
GStreamer: based on GObject, GStreamer cerbero build for Android
Linux usr: Unix System Resource
Milan: Avnu Media-integrated local area network, for AVB interoperability
Network TAP:Test Access Point
SPAN:Switch Port Analyzer,也叫Port Mirror
UFIPC:Intel Ultra-Fast Inter Process Communication
VP8: Video Profile 8
XMOS: ex-INMOS. represented both the International founding of the company as well as the basis for VLSI components: n-channel MOS, or NMOS technology. Thus, it became known as International MOS or INMOS文章来源地址https://www.toymoban.com/news/detail-433858.html

到了这里,关于GStreamer for Ethernet AVB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决报错:fatal: Authentication failed for ‘https://github.com/*/*.git/‘

    目录 问题 解决 步骤一、  步骤二、 步骤三、 ​步骤四、 ​步骤五、 步骤六、 今天创建一个 github 新仓库,首次上传本地代码时,遇到了一个报错。但是,之前这样操作肯定是没有问题的,毕竟我可以保证用户名和密码都是正确的。目测判断是认证相关问题,具体报错信息

    2024年02月02日
    浏览(53)
  • 解决git的账户权限问题:fatal: Authentication failed for ‘https://github.com/*/*.git/

    问题: 这几天适用git push代码到github上的时候,总是显示 fatal: Authentication failed for \\\'https://github.com/*/*.git/  大概意思就是认证失败对于我那个仓库的地址,于是我通过git config --list命令查看了我的登录的账户和邮箱没有问题,还看了windows凭证也没有问题。于是我想起来了前几

    2024年02月08日
    浏览(51)
  • remote:Unauthorized fatal: Authentication failed for “https://gitee.com/xxx“报错的解决办法

    git与远程仓库gitee进行第一次连接时报错,也就是第一次提交文件到gitee时报错 报错原因:用户验证失败了,用户验证失败是因为在弹出框输入的内容有问题,让我们先后输入username和password, 这个username是gitee的登陆时的用户名(一般时手机号、邮箱号) ,如果错误理解为要

    2024年02月13日
    浏览(56)
  • fatal: could not read Username for ‘https://git.xxx.com‘: Device not configured

    使用sourcetree完成当前项目时报错 1、创建的feature分支,完成当前项目时 2、创建的hotfix分支,完成当前项目时 1.在使用 webhook 自动部署时测试出现此问题 2.这里是因为你的git仓库是有用户名和密码,但是你没有配置git仓库的用户名和密码,而导致的问题 1、在你的私有库文件

    2024年02月12日
    浏览(62)
  • 【报错解决】CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/nux-64

    下包的时候遇到如下报错: 解决方法: 一、终端修改: ①查看自己的下载channels信息: ②按照如下命令添加conda镜像 ③更新conda 然后就可以安装需要的包了 二、Windows修改: 找到.condarc文件(所在C盘--用户--用户名文件夹目录下)之后删除原来的内容,复制粘贴如下命令:

    2024年02月13日
    浏览(53)
  • 在提交文件到gitee远程仓库时报用户名密码错误 fatal: Authentication failed for ‘https://gitee.com/xxx/xxx.git 解决方案来啦 亲测有效

    在提交文件到gitee远程仓库时,突然出现一个弹框输入用户名 密码 很懵逼 输入了结果是错误的 D:文件名git push -u origin \\\"master\\\" remote: [session-fa417d86] Akiko: Incorrect username or password (access token) fatal: Authentication failed for \\\'https://gitee.com/xxx/文件名.git/\\\'      此刻如果再提交一遍 还是会

    2024年02月16日
    浏览(61)
  • 【学习】https://gitee.com/DingJiaxiong

    【学习】https://gitee.com/DingJiaxiong 0 前言 事情是这样,我准备把之前所有的笔记都放到Gitee 上了 不用GitHub … 就别问原因了。【方便大家自取】 OK,这几个月多多少少也写了2000 + 篇Markdown 笔记了,有些现在还没发出博客,因为一天只能发20 篇。 这些笔记都是自己看B站视频做的

    2024年02月01日
    浏览(49)
  • https://app.hackthebox.com/machines/Soccer

    https://app.hackthebox.com/machines/Soccer search exploit Download ZIP with latest version from master branch. Just copy the tinyfilemanager.php to your webspace - thats all 😃 You can also change the file name from “tinyfilemanager.php” to something else, you know what i meant for. Default username/password: admin/admin@123 and user/12345 . ⚠️ War

    2024年02月16日
    浏览(38)
  • https://app.hackthebox.com/machines/Sau

    next time http://10.10.11.224:55555/haha35 altrail Documentation | Wiki | Issues | Log In Trails close Powered by Maltrail (v0.53) Hide threat Report false positive https://nvd.nist.gov/vuln/detail/CVE-2023-27163 https://github.com/spookier/Maltrail-v0.53-Exploit POC http://10.10.11.224:55555/haha35/ http://10.10.11.224:55555/haha352 curl ‘http://10.10.11.

    2024年02月14日
    浏览(56)
  • https://app.hackthebox.com/machines/Squashed

    info collecting mount nfs files create user or: bash -i /dev/tcp/10.10.16.15/1337 01 browser 2.php create user ross su ross squash wget the .Xauthority Get the root’s desktop pic Wget the haha.xwd su root get the flag Ref:[https://www.jianshu.com/p/ef5201d9ffe7] (https://www.jianshu.com/p/ef5201d9ffe7) Squashed HTB Writeup https://www.jianshu.com/p/ef520

    2024年02月11日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包