This commit is contained in:
2025-11-07 15:27:03 +08:00
parent 09b6cab3cf
commit dd6146e28d
2 changed files with 49 additions and 16 deletions

Binary file not shown.

View File

@@ -18,26 +18,59 @@ int main()
{ {
VideoCapture cap(0); VideoCapture cap(0);
// 直接传 MJPEG本身就是全 I 帧) // 直接传 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( FILE *pipe = popen(
"ffmpeg " "ffmpeg "
"-f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 " "-f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 "
"-i - " "-i - "
"-c:v h264_rkmpp " "-c:v h264_rkmpp "
"-rc_mode 2 " // CQP 模式 "-rc_mode 2 -qp_init 32 "
"-qp_init 30 " "-profile baseline -coder cavlc "
"-profile baseline " "-g 1 -bf 0 "
"-g 1 " // 全 I 帧 "-fflags nobuffer -flags low_delay "
"-bf 0 " "-f h264 udp://192.168.12.1:8888?pkt_size=1316", "w");
"-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) { if (pipe)
setvbuf(pipe, NULL, _IONBF, 0); // 添加无缓冲模式 {
setvbuf(pipe, NULL, _IONBF, 0); // 添加无缓冲模式
} }
if (!pipe) if (!pipe)
{ {
@@ -86,7 +119,7 @@ int main()
} }
fwrite(frame.data, 1, frame.total() * frame.elemSize(), pipe); fwrite(frame.data, 1, frame.total() * frame.elemSize(), pipe);
fflush(pipe); // 立即刷新 fflush(pipe); // 立即刷新
// imshow("测试画面", frame); // imshow("测试画面", frame);
// 按下 'q' 键退出 // 按下 'q' 键退出