3

亲爱的开发者社区,我正在开发一个带有 gstreamer 管道的嵌入式视频盒,用于视频处理。一切正常,但现在我遇到了一个问题:我有一个编码管道,用于从我的 mkv 视频中创建一个 mp4。但是现在我想在视频之前添加一个介绍,在视频之后添加一个结尾。我这里有 mkv 和 mp4 这两个文件。我需要一些帮助来创建一个管道,以创建我的 mp4,将这 3 个视频串联在一起。所以介绍与视频连接在一起,最后也应该添加结尾。知道如何使用 gstreamer 进行简单的串行连接管道吗?我感谢所有帮助!编辑完成:我的 gstreamer 安装确实过时了 - 但由于多种原因我现在无法更新它(旧的 arch linux,设置开发环境需要太多时间)。这是我当前从原始​​ mkv (MJPEG) 电影创建 mp4 的 bin:

QGst::BinPtr m_encBin = QGst::Bin::fromDescription(
"filesrc location=\""+path+"videoname.raw.mkv\" ! queue ! matroskademux name=\"demux\" "
"demux.video_00 ! queue ! ffmpegcolorspace ! queue ! x264enc ! queue ! mux.video_00 "
"demux.audio_00 ! queue ! audioconvert ! queue ! faac ! queue ! mux.audio_00 "
"mp4mux name=\"mux\" ! queue ! filesink name=\"filesink\" sync=false ", QGst::Bin::NoGhost);

当我将此 bin 添加到管道时,它工作正常,当我设置管道的位置 var 时,我得到带有音频的 mp4 文件。我现在有第二个管道,它包含 intro.mp4 和 outro.mp4,这基本上是因为我需要覆盖文本。我现在需要的是连接电影。我不在乎解复用时或最后使用 mp4 时的天气。

更新:我找到了一个为最新的 ffmpeg 安装进行连接的解决方案:

ffmpeg -i intro.mp4 -map 0 -c copy -f mpegts -bsf h264_mp4toannexb intro.ts
ffmpeg -i outro.mp4 -map 0 -c copy -f mpegts -bsf h264_mp4toannexb outro.ts
ffmpeg -i movie.mp4 -map 0 -c copy -f mpegts -bsf h264_mp4toannexb movie.ts
ffmpeg -i "concat:intro.ts|movie.ts|outro.ts" -c copy -absf aac_adtstoasc finalconcatmovie.mp4

重要提示:所有电影都需要具有相同的大小和编解码器,即 h264 和 1024x576 分辨率。电影有音轨时,介绍和结尾不包含音频。我的 ffmpeg 安装现在会自动向 intro 和 outro 添加空音轨,以便能够连接电影。

问题是我在旧的 Arch linux 安装上运行它,如果它丢失,我的 ffmpeg 不会自动创建和添加音频通道。所以我坚持这一点。知道如何添加音频和连接电影吗?

谢谢弗雷德里克

4

0 回答 0