Video streaming GStreamer将音频转码到AAC

Video streaming GStreamer将音频转码到AAC,video-streaming,gstreamer,rtsp,video-encoding,Video Streaming,Gstreamer,Rtsp,Video Encoding,我有一个RTSP流,我正在使用GStreamer将其重新流到HLS,如下所示: gst-launch-1.0 -v -e rtspsrc protocols=tcp location=rtsp://admin:1234@192.168.1.20:554/Streaming/channels/101 ! queue ! rtph264depay ! h264parse ! mpegtsmux ! hlssink location="D:\\wamp\\www\\stream\\%06d.ts"

我有一个RTSP流,我正在使用GStreamer将其重新流到HLS,如下所示:

gst-launch-1.0 -v -e rtspsrc protocols=tcp location=rtsp://admin:1234@192.168.1.20:554/Streaming/channels/101  ! queue ! rtph264depay ! h264parse ! mpegtsmux  ! hlssink location="D:\\wamp\\www\\stream\\%06d.ts" playlist-location="D:\\wamp\\www\\stream\\play.m3u8" target-duration=5

RTSP流具有使用H.264和原始音频(pcm_ulaw)编码的视频。我的目标是将音频编码到AAC中,以便HLS支持它。放置
的正确顺序是什么!音频转换!voaacenc
命令进入管道以实现此目标?

基本上,在RTSP源和MPEGTS muxer之间有另一个分支。大概是这样的:

gst-launch-1.0 -v -e rtspsrc protocols=tcp location=rtsp://admin:1234@192.168.1.20:554/Streaming/channels/101 name=rtsp ! queue ! rtph264depay ! h264parse ! mpegtsmux name=mux ! hlssink location="D:\\wamp\\www\\stream\\%06d.ts" playlist-location="D:\\wamp\\www\\stream\\play.m3u8" target-duration=5 rtsp. ! queue ! rtppcmudepay ! mulawdec ! audioconvert ! audioresample ! voaacenc ! aacparse ! mux.

谢谢,我错过了rtppcmudepay模块,据我所知,该模块会卸载rtsp流内容。然而,这个解决方案面临的问题是,在运行15-20分钟后,生成的HLS流以下载的速度播放视频的所有帧,而不考虑时间戳。在这种情况下,在ffmpeg中,我会在RTSP流的接收端手动生成时间戳。GStreamer是否有类似的插件,可以忽略RTSP流的时间戳并独立生成它们?为什么这样的事情会在10-15分钟的播放时间后发生?这是发送方还是接收方的问题?是否验证时间戳已损坏?RTSP流是实时的还是按需的?我想一个人需要一些更详细的信息,首先可能是错误的,否则只是猜测。音频PTS确实坏了,现在似乎是与供应商相关的问题。该流来自海康威视NVR,确实是实时的。我正在考虑从FFmpeg切换到GStreamer,当使用FFmpeg时,我会强制它在移动中生成时间戳。我想知道GStreamer中是否有类似的函数。源元素上通常有
do timestamp
属性。在您的情况下,它应该是
rtspsrc
。启用时,在处理缓冲区时,应将缓冲区的时间戳设置为当前时钟。由于
rtspsrc
是一个bin,因此该选项可能会暴露于其子元素之一。在这种情况下,您需要编写一个真正的应用程序来设置这些元素的属性。