From dd6146e28d8d40661c94e702a33a8fc841ec5c3e Mon Sep 17 00:00:00 2001 From: Quella777 <2892744389@qq.com> Date: Fri, 7 Nov 2025 15:27:03 +0800 Subject: [PATCH] finnal --- VideoProsessing/bin/video | Bin 362032 -> 362032 bytes VideoProsessing/src/main.cpp | 65 ++++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/VideoProsessing/bin/video b/VideoProsessing/bin/video index 9787ab47d2879c1efbf8642267ac3ae1147e4776..091560ba2a62435f4517a64233030a42eec9fe2c 100755 GIT binary patch delta 1753 zcmZ9M4Q!J|7{~A4_UJa|=tf6Z815|_Foi-3WBu4W=wN(o9pDGZR3aPeCLe`OR@5lV zm_h)l#N~|d644Md6Qk2iOXwsB!~lYlI1&(I`BDr*)T z-#x<~eN}mHDmC*7Y8lpm`U}nGbL|0|9ev$Cfzlj)a9SD7iGDY&P@xm~?V{y$Vs!p= zYZ|rifTIv=vtwPhrL$sFy@wLwMc!WOw?wZv-Z$V_tIMOznx{Hib~HC_4mGM9>suQ` zo3}Trj)vx7;|{f<{^d}E>UdFgsg8|Js*~TCUo^W(-88SXMBN!|@y(s<^3I#%D)r29 z0X`4LqL!`U4XvABYb;jE{3DF1Uf&HK#90V_dY4|0Ez+$lYZy{>H zx&$r&c7qY{4A>1`1y6ux*=YP@w>8&zQ-~6|t1vw(t+O%x{E~ZO?s|AM>A_Gj*I@4F z58Q>hN8!OOMn^u@2<9Mnc^=QXZ>40)l*|HB43mmE#J727*{~!#0R`-wwi~Ij+P)pIQ13K72J;X z2(R!J+VatD|4$-?ortXEZN6FFJJ4~aQdOr?<)c;7aO&Np-Ty(_ho**~ufdzVss{fq zejOQhaauNW@@d3|a2=HESDwuxDn1V*#&VA@E}Lfapeu`DlDAn75&7+eyOOuz@F2V; zDQ_TEKptMrILuF$JxVM2wKA*CkH&rY2ib(6C-@^;0X@MTqw7kokY465X*26@prI?1 zqUvgh%E!t?ADYq7YAV^Xl)XsyE9^2xmM9-oervE>V3*~>u8x)7gS@@`fi{!IqxN!l z7FQSg->eP9Y6CRmuK55xhH#}b%v1-N)iha+t~lQy!hBKkZe+?y8_IrB(zv{fSsc>9LrwG zCMa}&%)XkPGEj5u`cuqJ>0aHohFwtx-TJR9*$n-34I7uAO-8gatt5TuK?>CoP4}&3 zFVMJ-)48!P*0PTnq@H}9otjQ>>6hMMR=v1`cFZGL?X3?SxU-Xp7e9 z91A08Rt?J~zD0+baeojqlf@zhMFBGbNeqh;A!ewHM&>Wv0Ck!r&+lEk7`e&4pL@UO z+;h);_atv1HhUm8`|wak`U*1D(pPkS{c(=DJh}Rh>>c_+?)*!akAJx2OLtRNLz8p- z?WJoAuh+$+!fW$sHp`OS7`@W>G>4TIcxg`j`GPD;XR*#gH=Px~P*^0;T=t7)HO-AL zTbP$djm&E;!q{xxoNer?+ToKaAx@k-Kr4;$tJXI(*cP_Sg3~5hTSCo^JA(mfyDuCF z?%WfQtWQgJ$-2E!g0Z359|%bezGs3Bl2wk%{)ULu=nIAe?5ky#t-F2EZT>*e_Z)X^ zltPhki)7usFPhRyY&Hbq>b6M8w;A-%t=>Lhp? z)C+`6f@{FsaaE0gV_*!l+)~v(upS%)gWxdO15OI0jSOL8)?fqZ0WG&xbqg2;Bj8~$ z2A%}_z-!8tr$GrE24kRBY$IgiFKiSE zshq$@&=1yww!c+%KVO60;2?Msyao<|;U_~ zZtyf{;E%upjy&VwkE&Y6S5>+NT)mIaS(js$(R>3Rg|E;g^o{6i*eOSmF#-#}6>nzr z82T|b?zlJS{X9zM&C}SI(nRR^XgB zzZ&Zp9+KPOXLtyHJopyqFR^oSKJ8{B82cG@^0B~~Uwan*JT3T3kEY_@fj=*ZIZ546 zJ$)V?p6fg_9)C?Lz6H8|jNNq4X1&fdlYZ>~Tc=XsF6xyjQn?8INK&snn)ary;hXEQCa>y&-NW8;wk=PI7NA9WnW zb&zhQ@OUPXFztcQm0L`37n&wewH8SHHmebY&uuVkS%tfJ?lIJ8S<327B`^oCHh7!8 z=w3jz?5I1>L{PYQe~=w;GO*9x`Sb<$+thfEr-&Y5c2BXd4+UMF3@WWhQ2tnY)Zq|x zDRtPYly2em3Z47#6#0Ylxd-|c=saEM(sb(mIJbqJ@)Xma_=v}md7$2#sQ1#0aYH9P z0au|bC~s~Oh^{jc@(8b_(+ww93AcsEHBJ8%_^qd#hGdgo#qJgJ1W!ex)+?T;^mrnBt(Yayi;05u;u#IykQjMH zbWr-KV%jKP6&B0N&uhg+%Go+`hB=$a71ObjbfEw#qRJJDYm>NDFqbD@-z1(85$541 z#WM?qB^o8CT`b9%PRCrX)V7P|>Aj9*fL`V0cF~dHNySB4m)gbi0+8`K&{H QfEtzbgTNO`%|Y?TzuP<~5&!@I diff --git a/VideoProsessing/src/main.cpp b/VideoProsessing/src/main.cpp index 89b244c..e8148bf 100644 --- a/VideoProsessing/src/main.cpp +++ b/VideoProsessing/src/main.cpp @@ -18,26 +18,59 @@ int main() { VideoCapture cap(0); // 直接传 MJPEG(本身就是全 I 帧) + // FILE *pipe = popen( + // "ffmpeg " + // "-f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 " + // "-i - " + // "-c:v h264_rkmpp " + // "-rc_mode 2 " // CQP 模式 + // "-qp_init 30 " + // "-profile baseline " + // "-g 1 " // 全 I 帧 + // "-bf 0 " + // "-coder cavlc " + // "-8x8dct false " + // "-fflags nobuffer " + // "-flags low_delay " + // "-max_delay 0 " + // "-f rtsp -muxdelay 0.001 -rtsp_transport udp " + // "rtsp://192.168.12.1:8554/rtsp/test", "w"); + + // FILE *pipe = popen( + // "ffmpeg " + // "-f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 " + // "-i - " + // "-c:v h264_rkmpp " + // "-rc_mode 2 " // CQP 模式(最低延迟) + // "-qp_init 32 " // 初始 QP + // "-profile baseline " // baseline profile + // "-coder cavlc " // CAVLC 编码 + // "-8x8dct false " // 禁用 8x8 DCT + // "-g 1 " // GOP=1(全 I 帧) + // "-bf 0 " // 无 B 帧 + // "-fflags nobuffer " // 无缓冲 + // "-flags low_delay " // 低延迟标志 + // "-max_delay 0 " // 零延迟 + // "-f rtsp -rtsp_transport udp " + // "rtsp://192.168.12.1:8554/rtsp/test", + // "w"); + + + // UDP传输 FILE *pipe = popen( "ffmpeg " "-f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 " "-i - " "-c:v h264_rkmpp " - "-rc_mode 2 " // CQP 模式 - "-qp_init 30 " - "-profile baseline " - "-g 1 " // 全 I 帧 - "-bf 0 " - "-coder cavlc " - "-8x8dct false " - "-fflags nobuffer " - "-flags low_delay " - "-max_delay 0 " - "-f rtsp -muxdelay 0.001 -rtsp_transport udp " - "rtsp://192.168.12.1:8554/rtsp/test", "w"); - - if (pipe) { - setvbuf(pipe, NULL, _IONBF, 0); // 添加无缓冲模式 + "-rc_mode 2 -qp_init 32 " + "-profile baseline -coder cavlc " + "-g 1 -bf 0 " + "-fflags nobuffer -flags low_delay " + "-f h264 udp://192.168.12.1:8888?pkt_size=1316", "w"); + + if (pipe) + { + setvbuf(pipe, NULL, _IONBF, 0); // 添加无缓冲模式 } if (!pipe) { @@ -86,7 +119,7 @@ int main() } fwrite(frame.data, 1, frame.total() * frame.elemSize(), pipe); - fflush(pipe); // 立即刷新 + fflush(pipe); // 立即刷新 // imshow("测试画面", frame); // 按下 'q' 键退出