feat:v1版本完成
This commit is contained in:
parent
023fe0a0f3
commit
491e2be4a6
@ -162,6 +162,7 @@ class VideoDecoder(
|
|||||||
// 启动渲染线程
|
// 启动渲染线程
|
||||||
renderThreadRunning = true
|
renderThreadRunning = true
|
||||||
renderThread = Thread {
|
renderThread = Thread {
|
||||||
|
var hasNotifiedFlutter = false
|
||||||
var renderedFrameCount = 0 // 渲染帧计数器
|
var renderedFrameCount = 0 // 渲染帧计数器
|
||||||
while (renderThreadRunning) {
|
while (renderThreadRunning) {
|
||||||
// 计算每帧渲染间隔
|
// 计算每帧渲染间隔
|
||||||
@ -172,10 +173,10 @@ class VideoDecoder(
|
|||||||
val frame = outputFrameQueue.take()
|
val frame = outputFrameQueue.take()
|
||||||
frame.codec.releaseOutputBuffer(frame.bufferIndex, true)
|
frame.codec.releaseOutputBuffer(frame.bufferIndex, true)
|
||||||
renderedFrameCount++
|
renderedFrameCount++
|
||||||
// 每累计renderFps帧回调一次onFrameRendered
|
// 只在首次渲染时回调Flutter
|
||||||
if (renderedFrameCount >= renderFps) {
|
if (!hasNotifiedFlutter) {
|
||||||
// 回调到Flutter端 通知解码并渲染完81帧了
|
|
||||||
mainHandler.post { onFrameRendered() }
|
mainHandler.post { onFrameRendered() }
|
||||||
|
hasNotifiedFlutter = true
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e(TAG, "[RenderThread] Exception", e)
|
Log.e(TAG, "[RenderThread] Exception", e)
|
||||||
|
|||||||
@ -129,6 +129,7 @@ class VideoDecodePlugin {
|
|||||||
required int timestamp,
|
required int timestamp,
|
||||||
required int frameSeq,
|
required int frameSeq,
|
||||||
bool splitNalFromIFrame = false,
|
bool splitNalFromIFrame = false,
|
||||||
|
int? refIFrameSeq, // P帧时可选
|
||||||
}) async {
|
}) async {
|
||||||
if (splitNalFromIFrame && frameType == 0) {
|
if (splitNalFromIFrame && frameType == 0) {
|
||||||
// 优先使用缓存的SPS/PPS
|
// 优先使用缓存的SPS/PPS
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user