尝试过node的方法调用本地的FFMPEG进行解码,流到流的转码,虽然可以,但是延迟有1-2s左右
function DecodeH264ByteToFlv(){
//ffmpeg -r 30 -i .\android.264 -c:v libx264 -vcodec copy 'C.flv'
ffmpeg = spawn('ffmpeg', [
'-r', '30',
'-i', '-',
'-c:v',
'libx264',
'-vcodec', 'copy',
'-f', 'flv',
// 'abc.flv'
'pipe:1'
])
ffmpeg.stdin.on('error', (e) => {
console.log('FFmpeg STDIN Error', e);
});
// FFmpeg outputs all of its messages to STDERR. Let's log them to the console.
ffmpeg.stderr.on('data', (data) => {
console.log('FFmpeg STDERR:', data.toString());
});
ffmpeg.stdout.on('data', (data)=>{
//output flv stream
console.log(data)
});
}
延迟性太高了。想问一下又没有什么办法?
尝试过的方法主要有两种,
想要知道有没有什么办法实时再浏览器播放?或者说又没有h264流封装成其他格式流的golang库或者代码?
回答不易,求求您采纳点赞哦
在解决这个问题之前,可以考虑几个因素:
是否必须使用浏览器作为播放器,是否有其他的播放软件可以使用。
转码的过程是否可以在客户端进行。如果可以,这样可以减小服务器的负担。
如果必须使用浏览器播放,可以尝试使用MSE(Media Source Extension),它是一种被广泛支持的API,可以在浏览器上播放媒体流。
如果客户端转码太慢,可以考虑使用服务器来进行转码。可以使用开源的软件FFmpeg或GStreamer进行转码,然后在浏览器上播放。
如果需要使用GoLang进行服务器端转码,可以使用Go-FFmpeg或Go-GStreamer等库,它们都支持在GoLang中使用FFmpeg和GStreamer进行转码。
''该回答引用ChatGPT''
如对你的问题有帮助,请点击右侧采纳即可,谢谢!可以使用 FFmpeg 将 H.264 视频流转码为其他格式,例如 FLV。但是,如果您要在浏览器上实时播放转码后的视频,可能需要使用 WebSockets 或媒体服务器(例如 Wowza、Kaltura、Adobe Media Server)来进行流式传输。
另外,如果您想要在服务端使用 Golang 进行转码,您可以使用第三方库,例如 GStreamer。该库提供了对 H.264 视频流的转码和流式传输的支持。