WhyCan Forum(哇酷开发者社区)

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2020-08-11 11:32:51

JinC
会员
注册时间: 2019-11-12
累计积分: 10

v3s/s3的H264编码

零、目的
  搞一下v3s或者s3的H264硬件编解码

一、硬件
1.1 V3S方案
1.1.1 主板
    在x宝上搞了一块v3s的行车记录仪的板子,当时买的是20块钱板子+7块钱邮费,现在降价了 15块钱+7块钱邮费,真的是挺便宜的,
    这里称之为小篮板吧。这个算是标准的v3s官方行车记录仪板子了。
    但是没有这个小蓝板的原理图,下面用逆向跟万用表来搞一下基本的原理图。
   
    引出打印串口看一下启动log,可以看出来用的是camdroid sdk,ar0330 mipi摄像头。
    把小蓝板上的spi norflash拆下来,型号是ic25lp128,用编程器读出里面的8MByte的bin,
    然后截取0x32000~0x39FFF这段保存成sys_config.bin,
    再用sunxi-tools工具里面的bin2fex把sys_config.bin转成sys_config.fex,这个就是板子的实际引脚了,再用万用表验证一下几个关键的点就可以了。   
    没有引出网口来,直接飞线简单的引一下就行。

1.1.2.摄像头
    通过打印跟逆向出来的sys_config.fex看到上面这块板子用是mipi摄像头ar0330,一搜太贵了,得换一个!
    因为mipi的摄像头要用isp配置参数,就找了一下Tina SDK里面看到有现成的ov9732的isp配置(具体isp参数要跟着摄像头、lens来调)
    ov9732是720p方案,30块吧。

1.1.3.lcd
    sys_config.fex里面看到是t27p06,serial RGB,在x宝上买一2.7寸320*240,25块+25邮费,真黑!
    我看DOPI开源摄像头(HI3516/HI3518),里面用的2.4的好像也是可以的,20+10。
          
1.1.4.spinand
    把小蓝板的spi nor换成spi nand, MX35LF1GE4AB, x宝上的散件,6.3块,买了4片包邮
   
    整体飞完线的样子就是这样了:15+7+30+25+25+ 6.3*4
       小篮板
       喇叭、麦克、液晶、摄像头、网口、调试串口

1.2 S3方案:
          华嵌的S3核心板,没有底板,之前搞过一个飞线板子调双网口。等搞完v3s的方案后再来搞吧。

二、SDK及参考资料
2.1 SDK
  晕哥帖子里的 编译索智(Sochip) S3 SDK (zeta) 的37楼有对camdroid zeta 海豚派这几个里面编解码库的对比
  手头上一个官方的camdroid SDK, 里面的摄像头、264编解码、rendor都有,就是有点复杂。
  没有海豚派的sdk、没有S3 的 Zeta sdk,也就没有研究这两个。

  我直接用了一个叫彩虹派的rainbow-pi-sdk的(晕哥帖子有介绍过这个板子),同时把小蓝板的spi nor换成spi nand, MX35LF1GE4AB, x宝上的散件,6.3块。
2.2例子及资料
  这个rainbow-pi-sdk里面没有编解码的例子,但是有编解码的库,

  编解码的例子的话网上搜到一个https://gitee.com/kinglaw/Zeta_Linux_Samples,其实就是Zeta的例子,只看demo_CaptureToEncoding

  资料参考晕哥帖子里提到的【社区逆向出来的编解码器资料】: https://github.com/allwinner-zh/media-codec
  只看media-codec/sunxi-cedarx/doc/ 下的 Video Decoder API.pdf / Video Encoder API.pdf也就够了

三、调试说明
3.1摄像头ov9732
   没有啥好改的,配上了驱动基本没问题,
   使用rainbow-pi-sdk里面自带的app/demo-camera例子就能实现preview(摄像头直接显示到lcd),验证一下摄像头好用,(或者自己用v4l2写一个例子保存yuv文件也行)
   注意lcd比较小,而且这个例子时用yuv软转rgb然后显示到lcd的
   摄像头isp就先不调了。

3.2H264编码
  Zeta_Linux_Samples/demo_CaptureToEncoding,修改一下编出264,主要是看一下sps、pps、i、p,为后面mediastreamer写适配库用。

待续...

离线

#2 2020-08-11 14:59:08

狼狼
会员
注册时间: 2020-06-14
累计积分: 34

Re: v3s/s3的H264编码

真棒,关注一下!

离线

#3 2020-08-11 16:48:18

哇酷小二
管理员
注册时间: 2020-04-22
累计积分: 1,811

Re: v3s/s3的H264编码

感谢楼主分享,期待更新, 并求行车记录仪购买链接.

离线

#4 2020-08-11 19:48:35

tianjjff
会员
注册时间: 2018-12-24
累计积分: 80

Re: v3s/s3的H264编码

感谢楼主分享,期待更新

离线

#5 2020-08-11 21:06:47

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 354
个人网站

Re: v3s/s3的H264编码

关注,感谢分享。有没有可能实现裸机的编解码。我看了下代码,貌似编码的插件源码一个都没有

离线

#6 2020-08-12 08:18:39

JinC
会员
注册时间: 2019-11-12
累计积分: 10

Re: v3s/s3的H264编码

哇酷小二 说:

感谢楼主分享,期待更新, 并求行车记录仪购买链接.

问了一下店家,已经没有板子了。应该是拆机的散件。

离线

#7 2020-08-13 20:02:54

dddggg412
会员
注册时间: 2020-08-13
累计积分: 2

Re: v3s/s3的H264编码

延时和压缩率怎么样

离线

#8 2020-08-14 12:02:13

yuyu35
会员
注册时间: 2020-05-07
累计积分: 2

Re: v3s/s3的H264编码

真棒,非常优秀的项目!留个脚印先!

离线

#9 2020-08-14 19:17:09

ippen
会员
注册时间: 2018-07-22
累计积分: 344

Re: v3s/s3的H264编码

我看着板子这么熟悉呢,之前我也买了两块,准备用来拆零件

离线

#10 2020-08-16 22:20:49

kesion
会员
注册时间: 2020-07-03
累计积分: 32

Re: v3s/s3的H264编码

厉害了,N多看不懂,能看看,摄像头的拍照效果?

最近编辑记录 kesion (2020-08-16 22:24:52)

离线

#11 2020-08-17 13:27:46

cplmaomao0
会员
注册时间: 2020-06-23
累计积分: 13

Re: v3s/s3的H264编码

优秀,屏幕是spi屏幕? 还是rgb 屏

离线

#12 2020-08-20 20:52:17

angelsan
会员
注册时间: 2020-04-02
累计积分: 32

Re: v3s/s3的H264编码

Rainbow-Pi的 SDK支持SPi-Nand启动吗?

JinC 说:

问了一下店家,已经没有板子了。应该是拆机的散件。

离线

#13 2020-08-22 19:39:40

JinC
会员
注册时间: 2019-11-12
累计积分: 10

Re: v3s/s3的H264编码

Rainbow-Pi的sdk是支持spinand的,用的MX35LF1GE4AB。

这几天使用华嵌的S3核心板尝试跑Rainbow-Pi的sdk,但是烧录不上(打包出img来后用tf卡烧录的方式),这个板子是用的emmc,用Rainbow-Pi的sdk没有在上面跑起来,然后把华嵌的S3核心板上emmc替换成MX35LF1GE4AB,也是烧录不上。
然后又尝试去搞一下tina,看到里面有一个r11跟s3 、v3s差不多,都是f35吧,试了一下也是烧录不上。

有哪位大侠用过s3跑官方sdk的么。

下面是华嵌的S3核心板上emmc替换成MX35LF1GE4AB,使用tf卡烧录时的log:

HELLO! BOOT0 is starting!
boot0 version : 4.0.0
boot0 commit : 5bde7999aad829824ac6b80a49dad0a502609447
 
fel flag  = 0x00000000
rtc[0] value = 0x00000000
rtc[1] value = 0x00000000
rtc[2] value = 0x00000000
rtc[3] value = 0x00000000
rtc[4] value = 0x00000000
rtc[5] value = 0x00000000
rtc[6] value = 0x00000000
rtc[7] value = 0x00000000
DRAM DRIVE INFO: V0.7
DRAM Type = 3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3)
DRAM CLK = 408 MHz
DRAM zq value: 000039bb
DRAM size = 128 MB
dram size =128
card boot number = 0
card no is 0
sdcard 0 line count 4
[mmc]: mmc driver ver 2014-12-10 21:20:39
[mmc]: ***Try SD card 0***
[mmc]: SD/MMC Card: 4bit, capacity: 3840MB
[mmc]: vendor: Man 00000000 Snr 12800003
[mmc]: product: APPSD
[mmc]: revision: 0.0
[mmc]: ***SD/MMC 0 init OK!!!***
sdcard 0 init ok
The size of uboot is 000ac000.
sum=aa12155c
src_sum=aa12155c
Succeed in loading uboot from sdmmc flash.
Ready to disable icache.
Jump to secend Boot.
[      0.306]

U-Boot 2011.09-rc1-00000-g5bde799-dirty (Jun 18 2020 - 09:44:02) Allwinner Technology 

[      0.315]version: 1.1.0
[      0.318]uboot commit : 5bde7999aad829824ac6b80a49dad0a502609447
 
[      0.328]pmbus:   ready
not set main pmu id
axp_probe error
[      0.334]PMU: pll1 408 Mhz,PLL6=600 Mhz
AXI=204 Mhz,AHB=204 Mhz, APB1=102 Mhz 
set power on vol to default
dcdc2_vol = 1200
axp set dcdc2_vol to 1200 failed
dcdc3_vol = 3300
axp set dcdc3_vol to 3300 failed
aldo2_vol = 2500
axp set aldo2_vol to 2500 failed
aldo3_vol = 3000
axp set aldo3_vol to 3000 failed
ldo1_vol = 3300
axp set ldo1_vol to 3300 failed
ldo2_vol = 3000
axp set ldo2_vol to 3000 failed
ldo3_vol = 2800
axp set ldo3_vol to 2800 failed
ldo4_vol = 1800
axp set ldo4_vol to 1800 failed
find power_sply to end
vbus exist
no battery, limit to dc
dram_para_set start
dram_para_set end
[      0.468]DRAM:  128 MiB
relocation Offset is: 0709c000
save config for small mem_size 
Not Found clk pll_de in script 
Not Found clk pll_video1 in script 
Not Found clk pll_video in script 
Not Found clk pll_periph0 in script 
DRV_DISP_Init end
[      0.576]fetch script data boot_disp.output_disp fail
[      0.581]fetch script data boot_disp.output_type fail
[      0.586]fetch script data boot_disp.output_mode fail
[      0.591]fetch script data boot_disp.auto_hpd fail
[      0.596]lcd0_para.lcd_used=0
[disk_read_fs] no the partition
error: open disp_rsl.fex, maybe it is not exist
disp0 device type(0) enable
workmode = 17
storage type = 1
NAND_UbootProbe start
NB1 : enter phy init
NandHwInit: Start Nand Hardware initializing .....
uboot:nand version: 2 25 20150917 1145 
Reg 0x01c20848: 0x3333
Reg 0x01c2085c: 0x55
Reg 0x01c20864: 0x10
uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x47a319b0
request general tx dma channel ok!
uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x47a319cc
request general rx dma channel ok!
SPI nand ID: 0 0
_SearchNandArchi fail
[ERR]NandHwInit: SCN_AnalyzeNandSystem() failed!
NandHwInit: End Nand Hardware initializing ..... FAIL!
NB1 : nand phy init fail
NB1 : enter phy Exit
nand release dma:47a319b0
nand release dma:0
NAND_UbootProbe end: 0xffffffff
try nand fail                                                                                      
[      0.674][mmc]: mmc driver ver 2015-04-13 14:50:00                                             
err: gpio count < =0 ,gpio_count is: 0                                                             
[      0.683][mmc]: get sdc_phy_wipe fail.                                                         
[      0.686][mmc]: get sdc0 sdc_erase fail.                                                       
[      0.690][mmc]: get sdc_2xmode fail  used =  0
[      0.695][mmc]: get sdc_ddrmode fail  used =  0
[      0.700][mmc]: get sdc_f_max fail,use default  50000000Hz
[      0.705][mmc]: get card_line fail,use default card_line 4
[      0.711][mmc]: get sdc_ex_dly_used fail,use default
[      0.716][mmc]: SUNXI SD/MMC: 2
[      2.718][mmc]: mmc 2,update clk failed
[      2.721][mmc]: [mmc]: mmc 2  update clock failed
[      2.727][mmc]: mmc 2 Found fatal err,so no send cmd
[      2.732][mmc]: go idle failed
[      2.735][mmc]: mmc go idle error
[      2.738][mmc]: erase_grp_size:0x0WrBlk * 0x0 = 0x0 Byte
[      2.744][mmc]: secure_feature 0x0
[      2.747][mmc]: secure_removal_type  0x0
MMC init failed
In:    serial
Out:   serial
Err:   serial
--------fastboot partitions--------
mbr not exist
Net:   eth0Warning: failed to set MAC address

[      2.765]Hit any key to stop autoboot:  0 
work mode=0x11
run card sprite
try sprite_led_gpio config
[      2.775]sunxi sprite begin
sunxi sprite error: unable to get firmware start position
sunxi sprite firmware probe fail
sunxi#

离线

#14 2020-09-15 14:28:04

建议重开
会员
注册时间: 2020-09-15
累计积分: 2

Re: v3s/s3的H264编码

老哥,这板子的硬编码弄出来了吗,必须得是camdroid才能用吗

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB