Node.js 如何消除直播节点中的失真&x2B;ffmpeg

Node.js 如何消除直播节点中的失真&x2B;ffmpeg,node.js,ffmpeg,video-streaming,http-live-streaming,distortion,Node.js,Ffmpeg,Video Streaming,Http Live Streaming,Distortion,我尝试了使用NodeJS和ffmpeg编码器的实时视频流。它的工作原理是大约2秒的滞后,同时也有失真。滞后并不重要,因为总是有。但是我需要尽可能地消除视频失真。那么,合适的比特率是多少?是否有更好的编码器来实现这一点?在ffmpeg中,它编码为mpegts,因此是否有比mpegts更好的格式?plz帮助 我的编码是 ffmpeg -s 640x480 -f dshow -i video="HP HD Webcam":audio="Microphone (Realtek High Definiti

我尝试了使用NodeJS和ffmpeg编码器的实时视频流。它的工作原理是大约2秒的滞后,同时也有失真。滞后并不重要,因为总是有。但是我需要尽可能地消除视频失真。那么,合适的比特率是多少?是否有更好的编码器来实现这一点?在ffmpeg中,它编码为mpegts,因此是否有比mpegts更好的格式?plz帮助

我的编码是

ffmpeg -s 640x480 -f dshow -i video="HP HD Webcam":audio="Microphone (Realtek High Definition Audio)" -preset ultrafast -qp 0 -f mpegts -v:b 800 -r 100 http://localhost:8082/abc/640/480/

您没有设置视频编解码器,因此它使用了mpeg2(的默认设置)。要使用H264,请使用-c:v libx264:

ffmpeg -s 640x480 -f dshow -i video="HP HD Webcam":audio="Microphone (Realtek High Definition Audio)" -c:v libx264 -preset ultrafast -qp 0 -f mpegts -v:b 800 -r 100 http://localhost:8082/abc/640/480/

然后就好了。此外,绿框听起来像bug(溢出?),因此可能需要在ffmpeg bug跟踪器上提交一份关于它们的文件。

你所说的“失真”到底是什么意思?视频中有绿框,一些像素没有渲染。我的意思是源流输出不正确。使用两种速率控制方法(
-qp 0
和大概的
-b:v 800
)是互斥的,因此将忽略其中一种<代码>-v:b不是一个选项;也许你的意思是
-b:v
。看起来您忘记了a
k
-b:v
选项接受以位为单位的值,因此您打算每秒编码800位,如果你想使用这个选项,那么
-b:v 800k
会更有意义。我用你的代码替换了我的代码,然后在前端它不会解码流,我想这是因为我的js文件只解码mpeg。你也能帮我吗?谢谢…我不知道什么是js文件?我正在尝试使用ffmpeg对视频进行编码,并在浏览器中使用javascript对流进行解码,以便通过http发送。找到h264 js解码器:)。或者使用非javascript的东西,我的意思是,所有浏览器都支持视频标签中的h264,为什么不直接使用它呢?