Giter VIP home page Giter VIP logo

Comments (25)

numberwolf avatar numberwolf commented on May 28, 2024 1

OK 我看下

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024 1

你的265 codec stream没问题;但是format有问题,导致slice解析失败; ffplay是一个端上的播放器,相对会兼容更多badcase;
你这个case我转了一下就没问题了
ffmpeg -i data.h265 -vcodec libx265 -vtag hev1 -y test.h265
我不知道你端上硬编码是有那些设置。

image

好的,端上编码这块我也不太清楚,我在研究下。想问下这个format是指什么呢?

你这个应该是annxeb的我没仔细看,看错误是没有解出来其中的slice,所以出现了绿屏,部分宏块解码失败,重新编码之后就OK了,你是c/cpp直接编码的吗? 应该有一些配置项需要改;或者ffmpeg软编试一下

我这边又看了一下,发现是手机编码的问题,经过转码就可以播放了。多谢帮助了!

应该的,能帮到你 我其实更加开心 ~ 有问题可以随时问~

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

test case 视频方便发一下吗?或者media info给我,我参考一个复现

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

test case 视频方便发一下吗?或者media info给我,我参考一个复现

我这边是把手机的投屏流通过websocket推到这个播放器里面的,不是一个现成的视频。想问下你这边之前long run都是没有问题的是吗?

还有一个我想问下,就是我发现这个视频他的播放和我推送的速度有一定延迟,想问下这个是解码的延迟吗?每一帧的解码大概需要多久呢请问?

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

websocket推送?是HEVC的流吗?解码一帧没时间限制

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

websocket推送?是HEVC的流吗?解码一帧没时间限制

嗯嗯是的,我这边是使用ffmpeg来编码的HEVC流,我把这个工程稍微改了一点,改成从websocket中读取数据。前20分钟左右播放是没问题的,大概20分钟的时候就会出现memory access out of bounds的问题。

这个是第一个问题,然后第二个问题和上面这个没关系,我就是发现这个视频在前端播放出来比前端收到数据要有1-2s左右的延迟。想问下这个前端解码大概时间需要多久呢,这个1-2s左右的延迟是符合预期的吗?还是说我有哪里没设置对呢请问?

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

解码时间可以忽略,不然播放器24帧1s来肯定会卡,你的配置是什么样子的

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

解码时间可以忽略,不然播放器24帧1s来肯定会卡,你的配置是什么样子的

OK。我这边播放器的配置是这样子的
var type = "raw265";
var url265raw = "ws://127.0.0.1:18800/websocket/hevc/74605ad8";
var config = {
type: type,
player: "glplayer",
width: 1552,
height: 720,
accurateSeek : true,
token : token,
extInfo : {
readyShow : true,
rawFps : 60
}
};

其中60fps是要略大于我这边喂的视频流fps的
然后我这边websocket里面的数据是字节流,我这边对于play.js稍微做了一点修改。我本身不是做前端的,不太清楚改的是不是正确的,修改的部分如下。
var fileStart = 0;
var startFetch = false;
var networkInterval = window.setInterval(function () {
if (!startFetch) {
startFetch = true;
var h265_stream
h265_stream = new WebSocket(url265);
h265_stream.addEventListener('message',function(event) {
if (h264_stream.readyState === WebSocket.OPEN) {
event.data.arrayBuffer().then(function(buffer) {
var uint8View = new Uint8Array(buffer);
h265webjs.append265raw(uint8View)
});
}
})
}
}, 1);

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

1)想加快起播时间可以把 readyShow设置为false
2)关于 memory的问题 我觉得可能是内存泄露 这里我check一下

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

1)想加快起播时间可以把 readyShow设置为false
2)关于 memory的问题 我觉得可能是内存泄露 这里我check一下

好的,辛苦,我也来研究一下是不是我哪里配置的有问题。

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

我这里测试了一下,内存方面,265raw play mode没有发现有问题目前,你check下websocket方面是否有没有释放的内存?
image
image

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

补充一个细节,着你websocket是一帧一帧 append的吗?如果是一帧一帧,那么可以不用走这套播放器,直接用底层解码能力
https://github.com/numberwolf/h265web.js-wasm-decoder 这个是底层解码器

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

我这里测试了一下,内存方面,265raw play mode没有发现有问题目前,你check下websocket方面是否有没有释放的内存?
image
image

好的,我当时大概是会在20min左右的时候出现问题。我今天没来及看,我明天拉我这边懂前端的朋友帮忙一起看下是不是我这边的问题。多谢了!

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

补充一个细节,着你websocket是一帧一帧 append的吗?如果是一帧一帧,那么可以不用走这套播放器,直接用底层解码能力
https://github.com/numberwolf/h265web.js-wasm-decoder 这个是底层解码器

我这边应该是一帧一帧append在一起的,sps和pps好像是和I帧合在一起发送的,我需要再看下。

这个底层解码器我明天一并试一下,thanks。

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

对的,我sdk里面的方法是非帧类型 流式的,所以会耗费时间,这里我觉得你既然是完整的NALU 可以直接用底层解码器,一帧一帧喂进去

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

对的,我sdk里面的方法是非帧类型 流式的,所以会耗费时间,这里我觉得你既然是完整的NALU 可以直接用底层解码器,一帧一帧喂进去

我这边遇到另一个问题,就是我通过手机硬编码输出的视频流喂进去之后出现了只显示左半边的情况,然后右半边是绿色的,同时console里面会打印First slice in a frame missing.的错误日志
我这边喂进去的数据开头是这样的
buffer 1:
0 0 0 1 64 (vps)
0 0 0 1 66 (sps)
0 0 0 1 68 (pps)
buffer 2:
0 0 0 1 38 (IDR)
.....
请问这个对于我的视频输入格式有什么要求吗?
image

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

emmm....你要不把你的流保存一下看一下,我是随便ffmpeg转一个265都可以,所以需要check一下硬编码出来的265 raw data

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

ffmpeg -i input.mp4
-vcodec libx265 -pix_fmt yuv420p
-an
-maxrate 1000k -bufsize 1000k
-vtag hev1
-y video.h265

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

对了 vps+sps+pps+IDR 作为一个buffer传进去也可以试一下; 然后你也可以把你的流文件发我 我看一下

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

对了 vps+sps+pps+IDR 作为一个buffer传进去也可以试一下; 然后你也可以把你的流文件发我 我看一下

好的多谢,我先试一下;不行的话我发一个流文件好了,thanks.

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

对了 vps+sps+pps+IDR 作为一个buffer传进去也可以试一下; 然后你也可以把你的流文件发我 我看一下

我这边拼在一起了好像还是不行,拼在一起之后第一帧是
buffer 1:
0 0 0 1 64 (vps)
0 0 0 1 66 (sps)
0 0 0 1 68 (pps)
0 0 0 1 38 (IDR)
这边看到依然是绿色,并且有报错 First slice in a frame missing,这边是我自己存出来的裸流文件

data.h265.zip
我这边直接用ffplay来播放这个文件倒是可以的,辛苦帮看看我这边是不是哪里没配置对

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

你的265 codec stream没问题;但是format有问题,导致slice解析失败; ffplay是一个端上的播放器,相对会兼容更多badcase;

你这个case我转了一下就没问题了

ffmpeg -i data.h265 -vcodec libx265 -vtag hev1 -y test.h265

我不知道你端上硬编码是有那些设置。

image

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

你的265 codec stream没问题;但是format有问题,导致slice解析失败; ffplay是一个端上的播放器,相对会兼容更多badcase;

你这个case我转了一下就没问题了

ffmpeg -i data.h265 -vcodec libx265 -vtag hev1 -y test.h265

我不知道你端上硬编码是有那些设置。

image

好的,端上编码这块我也不太清楚,我在研究下。想问下这个format是指什么呢?

from h265web.js.

numberwolf avatar numberwolf commented on May 28, 2024

你的265 codec stream没问题;但是format有问题,导致slice解析失败; ffplay是一个端上的播放器,相对会兼容更多badcase;
你这个case我转了一下就没问题了
ffmpeg -i data.h265 -vcodec libx265 -vtag hev1 -y test.h265
我不知道你端上硬编码是有那些设置。

image

好的,端上编码这块我也不太清楚,我在研究下。想问下这个format是指什么呢?

你这个应该是annxeb的我没仔细看,看错误是没有解出来其中的slice,所以出现了绿屏,部分宏块解码失败,重新编码之后就OK了,你是c/cpp直接编码的吗? 应该有一些配置项需要改;或者ffmpeg软编试一下

from h265web.js.

wzrf avatar wzrf commented on May 28, 2024

你的265 codec stream没问题;但是format有问题,导致slice解析失败; ffplay是一个端上的播放器,相对会兼容更多badcase;
你这个case我转了一下就没问题了
ffmpeg -i data.h265 -vcodec libx265 -vtag hev1 -y test.h265
我不知道你端上硬编码是有那些设置。

image

好的,端上编码这块我也不太清楚,我在研究下。想问下这个format是指什么呢?

你这个应该是annxeb的我没仔细看,看错误是没有解出来其中的slice,所以出现了绿屏,部分宏块解码失败,重新编码之后就OK了,你是c/cpp直接编码的吗? 应该有一些配置项需要改;或者ffmpeg软编试一下

我这边又看了一下,发现是手机编码的问题,经过转码就可以播放了。多谢帮助了!

from h265web.js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.