diff --git a/VideoProsessing/bin/video b/VideoProsessing/bin/video index 9787ab4..091560b 100755 Binary files a/VideoProsessing/bin/video and b/VideoProsessing/bin/video differ 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' 键退出