我试图了解gstreamer管道。现在我想播放包含h264编码视频帧和aac编码音频样本的mp4视频。 为了播放视频样本我使用了以下管道
gst-launch-0.10 filesrc location=~/samples/step_up_dance_1080p.mp4 ! qtdemux name=dmux dmux.video_00 ! h264parse ! ffdec_h264 ! autovideosink
我使用以下管道单独播放音频
gst-launch-0.10 filesrc location=~/samples/step_up_dance_1080p.mp4 ! qtdemux name=dmux dmux.audio_00 ! aacparse ! faad ! autoaudiosink
两者都运行良好,但我希望将音频和视频结合起来。我该怎么做 ? 我试过了
gst-launch-0.10 filesrc location=~/samples/step_up_dance_1080p.mp4 ! qtdemux name=dmux dmux.video_00 ! h264parse ! ffdec_h264 ! autovideosink dmux.audio_00 ! aacparse ! faad ! autoaudiosink
但它没有用。 我如何一起播放音频和视频?
答案 0 :(得分:3)
首先,当说某些东西不起作用时,请说明会发生什么。加入管道停顿,你就忘记了为解码器创建新线程的队列元素。
gst-launch-0.10 filesrc location=~/samples/step_up_dance_1080p.mp4 ! qtdemux name=dmux dmux.video_00 ! queue ! h264parse ! ffdec_h264 ! autovideosink dmux.audio_00 ! queue ! aacparse ! faad ! autoaudiosink
使用playbin更简单。看一下管道布局。
GST_DEBUG_DUMP_DOT_DIR=$PWD gst-launch-0.10 playbin2 uri=file://$HOME/samples/step_up_dance_1080p.mp4
并使用graphviz渲染它创建的点文件(dot -Tsvg xxx.dot -o xxx.svg)。