ffmpegで結合すると音ズレする

全体で5秒の動画Aがあり、0:00から3:00秒まで無音、音は3:01から5:00です。


全体で60秒の動画Bがあり、0:00から60:00まで音があります。


この動画をffmpegで結合するとちょうど3秒の音ズレが発生します。


ffmpegの仕様はわからないのですが、音が発生してから結合?しているようです。ただそうは言ってもAの無音部分の絵が削除されているわけではありません。(Aの無音部分の音がBの0:00から3:00になっている)


こういうのを回避するにはどうすればいいのでしょうか?

iMac 27″ 5K, macOS 11.4

投稿日 2021/06/27 18:34

返信
返信: 9

2021/06/28 01:21 nncm11418905 への返信

>いえ、A+Bです。


それなのにAの先頭の無音3秒がBの頭に入り込んでる??

Aの先頭の無音はなくなってはいないのかな?


それはちょっと考えられない気がしますが・・・・

ちなみにencodeは? avc1?hevc? 音声は? aac??


その動画の映像と音声のトラック情報見て同じ長さに調整してから結合するしかないような気がしますが。


2021/06/28 03:25 亀どん への返信

ちょっとややこしくなってきたので整理します。


▽素材

素材A

5秒

映像あり(常時静止画)

0:00から3:00秒まで無音

音は3:01から5:00


素材B

60秒

映像あり(常時動画)

0:00から60:00秒まで有音


▽やりたいこと

ffmpegで結合して65秒の動画にしたい(A+B)


▽備考

コーデック云々は当該ファイルをcommand+iで見る限り同一です。それ以上の詳細は不明なため、iMovieを使い同じ条件で再度アウトプットしました。両ファイルともQuickTimeでは映像も音も普通に再生されます。


▽現状

出来上がって動画(仮にCとします)を再生するとAが映ります。が、5秒過ぎてもBに切り替わりません。音自体は正しい位置(3秒目)で鳴ります。その後、13秒ぐらいまでAの映像が続き、Bの映像に切り替わります。


意味的には「音ズレ」だと思っているのですが、これは「絵ズレ」とも言うのでしょうか。。。


2021/06/28 04:53 nncm11418905 への返信

>映像あり(常時静止画)

ははぁ。 映像と音のDuration(全長)が違うのでは?


試しに

ffmpeg -safe 0 -f concat -i filelist.txt -c:v libx264 -c:a aac -map 0:v -map 0:a output.mp4

とやって、再エンコしてみては?


それでうまくいくなら、、、、


concatはno再エンコだと同じデコーダでないとうまくいかないかも。

別のデコーダの映像をつなげると破綻する。(ffmpegのバージョンも重要)


>その後、13秒ぐらいまでAの映像が続き、Bの映像に切り替わります。

この場合、Bの映像streamに切り替わってもデコードが破綻してますので、次のIフレームまでは

Bの映像はデコードできない。Aの静止画が残ってる。


じゃないかなぁ?


このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

ffmpegで結合すると音ズレする

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。