私はいくつかの画像取得ソフトウェアを作成しました。これらの画像を取得しているので、最後の画像をビデオファイルの最後に追加したいのです(すべての画像の時間経過これまでに取得した)。これにより、すべての画像のビデオが表示されます。FFMPEGを使用してMP4の最後に単一のフレームを追加する
しかし、私は単一のフレームを追加しようとしています。私はタイムラプスの罰金を生み出しました。私がこれをやっているやり方は、私が10枚の画像を集めるまで待っていて、それから時間がかかる。私はにフレームを追加するタイムラプスを生成するために使用したコマンドである:
-framerate 40 -start_number N -i DSC_%05d.JPG -c:V libx264 -r 30 output.mp4
私はいくつかの方法を試しましたが、ほとんどすべては動作していましたが、必要に応じて全く動作しませんでした。ここで私は何のコマンドとどのような出力があると、試してみたものです:
連結方式のデマルチプレクサは、MP4にJPGに参加することを
次のように連結するために使用するファイルのリストをテキストファイルに見える:
ファイル 'B00334_1.mp4'
ファイル 'test_image.jpg'
期間は10
私はファイルを結合しようとするために使用するコマンドは、次のとおりです。
のffmpeg -f連結-i concat.txt -cは、この試みからの出力は非壊れたビデオ(スコア!)ですが、それが唯一の最初のビデオを示し
をoutputfile.mp4コピーして、特に指定された10秒間ではなく、新しいフレームの兆候を示さない。 (私は0.1秒ほど10秒ほどそれを望んでいませんが、成功したときにすぐに見えるように10秒間使用しています)。
JPGをMP4に変換してからConcat Demuxer
だから私は考えました。たぶん画像の代わりに2番目のビデオが必要なので、私はショア、フレーム長のビデオを作成し、それを時間の終わりに追加します。 JPGからMP4を作成するために使用さ
コマンド:
fmpeg -loop 1 -i test_image.jpg -r -t 5これは、ビデオの罰金を生成test_video.mp4
、私が手静止画像を示す5秒間の長さのビデオ。この動画はサムネイルを読み込まないため、これが何かを意味するかわかりません。今concat.txtファイルには、次のようになります。
ファイル最初に示されているテキストファイルを呼び出すために同じコマンドを実行する際に「B00334_1.mp4」
ファイル「text_video.mp4」
例私は、最初のファイルの出力(タイムラプス)+連結されたビデオの時間(成功!?)を取得します。しかし、画像を表示しなければならないビデオのポイントに達すると、それは単に時間経過の最後のフレームを示し、それは第2のビデオの5秒間、下方にグリッチします。基本的に2番目のビデオを見せているわけではありませんが、2番目のビデオは最後のフレームが長時間グリッチしなくなります。バックMP4から
をconcating、その後.TSにコマンドをJPGとMP4の両方の変換
はTSファイルにJPGをオンしようとするために使用:
のffmpeg -y -i test_image.jpg -cコピー - BSF:V h264_mp4toannexb -f mpegts medium1.ts
これは失敗し、出力を返します: Codec 'mjpeg' (8) is not supported by the bitstream filter 'h264_mp4toannexb'. Supported codecs are: h264 (28)
を。
コーデックを明らかにサポートされているh264に変更しても、結果には影響しません。
MP4にJPGを変換してからffmpeg -y -i input.jpg -c copy -bsf:v h264_mp4toannexb -f mpegts output.ts
前と同じコマンドを使用して、MP4Sで結構ですから2つのTSファイルを作成
を連結し、その後.TSします。新しく作成されたファイルも必要に応じて表示されます。イメージから作成されたtsファイルにはイメージが表示され、ビデオにはビデオが表示されます。今、これらの2つの新しいTSファイルで、私はそれらを一緒に連結することができるはずですか?
私はこれらのファイルをFFMPEGのconcat protocol
機能で結合しようとしています。このコマンドを使用する:
のffmpeg -y -i 'CONCAT:medium1.ts | medium2.ts' -cコピー-bsf:aac_adtstoascのoutput.mp4
は今、これは一緒にビデオに参加します!時間が最後に追加され、最後の数秒にスキップすると、新しく追加された画像が表示されます。しかし、ビデオを再生させると、2番目のビデオに当たった直後にメディアプレーヤーがクラッシュします。
私は、必要に応じてより多くの情報を提供できます。読んでくれてありがとう。
編集:出力ログMulvyaの回答から:VLCやffplay、私のために、次の作品の再生のために
[mov,mp4,m4a,3gp,3g2,mj2 @ 000000000255c0a0] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'concat.txt':
Duration: N/A, start: 0.000000, bitrate: 44807 kb/s
Stream #0:0(und): Video: h264 (High 4:2:2) (avc1/0x31637661), yuvj422p(pc), 2896x1944, 44807 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
Metadata:
handler_name : VideoHandler
Output #0, mp4, to 'merged.mp4':
Metadata:
encoder : Lavf57.66.102
Stream #0:0(und): Video: h264 (High 4:2:2) ([33][0][0][0]/0x0021), yuvj422p(pc), 2896x1944, q=2-31, 44807 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000002564840] Auto-inserting h264_mp4toannexb
bitstream filter
frame= 60 fps=0.0 q=-1.0 Lsize= 5564kB time=00:00:01.90
bitrate=23990.6kbits/s speed=30.6x
video:5563kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.024155%
AFAIKは2つのビデオを結合して、同じサイズにする必要があります。 – WLGfx
@WLGfxまあ、私はこれを避けようとしていますが、私はどのサイズのビデオにも参加するプログラムを作成しましたが、このインスタンスでは動作しません。どのように私はビデオに参加することを避けることができますし、ストレートJPGをMP4に追加 –
@WLGfx、解像度を意味するのですか?もしそうなら、いいえ。プレイヤーを再構成するための帯域内のxPSがある限り、問題はありません。 – Mulvya