我正在尝试从具有不连续标签的HLS流生成MP4。由于视频来自同一来源,因此FPS和WXH是相同的。
我使用以下管道测试了多路分配并播放它,并且效果很好
gst-launch-1.0 -v souphttpsrc location=<HLS_URL> ! hlsdemux ! decodebin name=decoder \
! queue ! autovideosink decoder. ! queue ! autoaudiosink
为此,我添加了x264 enc和avenc_aac编码器以将其保存到文件中,并且始终失败
"gstadaptivedemux.c(2651): _src_chain (): /GstPipeline:pipeline0/GstHLSDemux:hlsdemux0"
管道失败
gst-launch-1.0 -v mp4mux name=mux faststart=true presentation-time=true ! filesink location=dipoza.mp4 \
souphttpsrc location=<HLS_URL> ! hlsdemux ! decodebin name=decoder ! queue name=q1 ! \
videoconvert ! queue name=q2 ! x264enc name=encoder ! mux. decoder. \
! queue name=q3 ! audioconvert ! queue name=q4 ! avenc_aac ! mux.
我真的很感谢这方面的帮助。
答案 0 :(得分:0)
经过大量调试,我发现管道存在问题。非常感谢@FlorianZwoch要求我转到voaacenc编码器。
在Mac的gst-plugins-bad中默认未安装voaacenc。我因此不得不使用
brew reinstall gst-plugins-bad --with-libvo-aacenc
以下管道与我的应用程序配合良好。
gst-launch-1.0 --gst-debug=3 mp4mux name=mux ! \
filesink location=xxxx.mp4 souphttpsrc location=<hls url> ! decodebin name=decode ! \
videoconvert ! videorate ! video/x-raw, framerate=50/1 ! queue ! x264enc ! mux. decode. ! \
audioconvert ! voaacenc ! mux.
在我的HLS流视频段中,有些具有50FPS,有些具有59.97FPS。因此,我使用的视频速率默认设置为50。这可能需要根据您的细分进行更改
对于那些想要相同的C ++代码的人,请签出我的github页面