bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.42k stars 1.57k forks source link

pull after push will show ‘no image’ #2045

Open shuaisong opened 1 year ago

shuaisong commented 1 year ago

package com.zjxf.hsdji.utils;

import com.frank.live.FFmpegUtil; import com.zjxf.hsdji.MApplication;

import org.bytedeco.ffmpeg.avutil.AVFrame; import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.FFmpegFrameRecorder; import org.bytedeco.javacv.FFmpegLogCallback; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.FrameRecorder; import org.bytedeco.javacv.OpenCVFrameConverter; import org.bytedeco.opencv.opencv_videoio.VideoWriter; import org.bytedeco.opencv.opencv_core.Size;

import java.io.File; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream;

import static org.bytedeco.ffmpeg.global.avcodec.AV_CODEC_ID_H264; import static org.bytedeco.ffmpeg.global.avcodec.AV_CODEC_ID_MPEG1VIDEO; import static org.bytedeco.ffmpeg.global.avutil.AV_LOG_PRINT_LEVEL; import static org.bytedeco.ffmpeg.global.avutil.AV_PIX_FMT_BGR24; import static org.bytedeco.ffmpeg.global.avutil.AV_PIX_FMT_RGB48; import static org.bytedeco.ffmpeg.global.avutil.AV_PIX_FMT_YUV420P; import static org.bytedeco.ffmpeg.global.avutil.AV_PIX_FMT_YUV420P10; import static org.bytedeco.ffmpeg.global.avutil.av_log_set_level;

/**

// recorder.setOption("probesize", "1000000"); // recorder.setOption("buffer_size", "5000000"); // recorder.setSampleRate(44100); // recorder.setTrellis(0);

    return recorder;
}

public void stopPush() {
    this.running = false;
    this.interrupt();
}

public boolean isRunning() {
    return this.running;
}

@Override
public void run() {
    recordPushWithFormat();
}

}

shuaisong commented 1 year ago
implementation group:'org.bytedeco',name:'javacv',version:'1.5.9'

implementation group:'org.bytedeco',name:'ffmpeg',version:'6.0-1.5.9'
implementation (group:'org.bytedeco',name:'ffmpeg',version:'6.0-1.5.9',classifier:'android-arm')
implementation (group:'org.bytedeco',name:'ffmpeg',version:'6.0-1.5.9',classifier:'android-arm64')

implementation group:'org.bytedeco',name:'opencv',version:'4.7.0-1.5.9'
implementation (group:'org.bytedeco',name:'opencv',version:'4.7.0-1.5.9',classifier:'android-arm')
implementation (group:'org.bytedeco',name:'opencv',version:'4.7.0-1.5.9',classifier:'android-arm64')

implementation group:'org.bytedeco',name:'openblas',version:'0.3.23-1.5.9'
implementation (group:'org.bytedeco',name:'openblas',version:'0.3.23-1.5.9',classifier:'android-arm')
implementation (group:'org.bytedeco',name:'openblas',version:'0.3.23-1.5.9',classifier:'android-arm64')

implementation group:'org.bytedeco',name:'javacpp',version:'1.5.9'
implementation (group:'org.bytedeco',name:'javacpp',version:'1.5.9',classifier:'android-arm')
implementation (group:'org.bytedeco',name:'javacpp',version:'1.5.9',classifier:'android-arm64')
saudet commented 1 year ago

Some filters might buffer frames, that's normal.

shuaisong commented 1 year ago

how fix it?

saudet commented 1 year ago

grabber.setFormat("h264");

I don't think that's a format supported by FFmpeg. Check the log.

Please make sure that FFmpegLogCallback.set() has been called.

shuaisong commented 1 year ago

I set it,and push success ,but no image

shuaisong commented 1 year ago

2023-06-21 13:59:40.094 W [MediaServer] [12119-event poller 11] MediaSink.cpp:55 operator() | Cached frame of unready track(H264) is too much, now cleared 2023-06-21 13:59:44.806 W [MediaServer] [12119-event poller 11] MediaSink.cpp:55 operator() | Cached frame of unready track(H264) is too much, now cleared 2023-06-21 13:59:45.290 D [MediaServer] [12119-event poller 11] MediaSink.cpp:150 emitAllTrackReady | All track ready use 10044ms 2023-06-21 13:59:45.290 W [MediaServer] [12119-event poller 11] MediaSink.cpp:157 emitAllTrackReady | Track not ready for a long time, ignored: H264 2023-06-21 14:00:07.987 I [MediaServer] [12119-event poller 11] RtmpProtocol.cpp:444 check_C1_Digest | check rtmp complex handshark success! 2023-06-21 14:00:08.032 D [MediaServer] [12119-event poller 11] RtmpSession.cpp:367 operator() | 7180-157(192.168.4.1:49363) play 回复时间:0ms 2023-06-21 14:00:18.981 D [MediaServer] [12119-event poller 11] RtmpSession.cpp:130 operator() | 7181-164(192.168.4.1:20609) publish 回复时间:1ms 2023-06-21 14:00:19.256 I [MediaServer] [12119-event poller 11] MediaSource.cpp:523 emitEvent | 媒体注册:rtmp://defaultVhost/live/kunpeng01

saudet commented 1 year ago

That doesn't look like FFmpeg's log. You'll need to check its log for any errors and warnings.