在 gstreamer 中从 HLS 生成 MP4
Generating MP4 from HLS in gstreamer
我正在尝试从带有不连续标签的 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.
非常感谢这方面的任何帮助。
经过大量调试,我发现我的管道存在问题。非常感谢@FlorianZwoch 让我转向 voaacenc 编码器。
默认情况下,voaacenc 未安装在 mac 的 gst-plugins-bad 中。我所以我不得不使用
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 页面
我正在尝试从带有不连续标签的 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.
非常感谢这方面的任何帮助。
经过大量调试,我发现我的管道存在问题。非常感谢@FlorianZwoch 让我转向 voaacenc 编码器。
默认情况下,voaacenc 未安装在 mac 的 gst-plugins-bad 中。我所以我不得不使用
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 页面