3

親愛なる偉大な開発者コミュニティ 私は、ビデオ処理用の gstreamer パイプラインを備えた埋め込みビデオ ボックスに取り組んでいます。すべて正常に動作しますが、問題があります。mkv ビデオから mp4 を作成するためのエンコード パイプラインがあります。しかし、ビデオの前にイントロを追加し、ビデオの後にアウトロを追加したいと考えています。ここには、mkv と mp4 の両方のファイルがあります。これらの 3 つのビデオを連続して組み合わせて mp4 を作成するパイプラインを作成する助けが必要です。そのため、イントロはビデオに連結され、最後にアウトロも追加する必要があります。gstreamer を使用して単純なシリアル連結パイプラインを行う方法はありますか? すべての助けに感謝します!編集完了: 私の gstreamer インストールは本当に古くなっています - しかし、複数の理由で今は更新できません (古い arch linux、dev env のセットアップに時間がかかりすぎます)。生のmkv(MJPEG)ムービーからmp4を作成する現在のビンは次のとおりです。

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);

このビンをパイプラインに追加すると正常に動作し、パイプラインの場所変数を設定すると、オーディオ付きの mp4 ファイルが取得されます。これで、基本的にテキストをオーバーレイする必要があるため、intro.mp4 と outro.mp4 を暗号化する 2 つ目のパイプラインができました。今必要なのは、映画を連結することです。私は、逆多重化中や最後に 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

重要: すべてのムービーは、サイズとコーデックが同じである必要があります。これは、解像度 1024x576 の h264 です。映画には音声トラックがありますが、イントロとアウトロには音声が含まれていません。私のffmpegインストールは、空のオーディオトラックをイントロとアウトロに自動的に追加して、ムービーを連結できるようになりました。

問題は、古い arch Linux インストールで実行していて、ffmpeg がオーディオ チャンネルを作成して自動的に追加しないことです。だから私はこれにこだわっています。オーディオを追加してムービーを連結する方法はありますか?

ありがとうフレドリック

4

0 に答える 0