5

VLCまたはFFmpeg(またはAVconv )には、ビデオの長さを特定の秒数に強制する機能がありますか

私が持っているとしましょう...5分の.mp4ビデオ(オーディオなし)。前述のツールのいずれかを使用して、ビデオをより長い時間に「拡張」する方法はありますか?ビデオはパワーポイントのスライドショーからのものですが、短すぎます(言うまでもなく、実行速度が速すぎます)。アイデアは、フレームを自動的に挿入して、指定された期間に達するようにすることです。それはかなり実行可能なもののように見えます(えーと...私がそうであるようにビデオエンコーディング/トランスコーディングの全くの初心者のために):30fpsでの5分のビデオは私が9000フレームを持っていることを意味します...それを10倍長くするには、最初の「実際の」フレームを10回コピーしてから、2番目の「実際の」フレームを取得して10回コピーします...というように続きます。

Ubuntu 12.04を使用していますが、必要に応じて、必要なソフトウェアをインストール/コンパイルできます。これまでのところ、VLC、AVConv、FFmpegがあります(特定のフォルダーにFFmpegがあるため、AVConvと競合しません)

前もって感謝します。

4

1 に答える 1

13

setptsビデオフィルターを使用しffmpegます。簡単な例:

  • 遅い(半分の速度):setpts=PTS*2またはsetpts=PTS/0.5
  • 高速(2x):setpts=PTS/2またはsetpts=PTS*0.5

ビデオの速度が10倍になります

ffmpeg -i input.mp4 -filter_complex "setpts=PTS/10" output.mp4

オーディオとビデオの両方で10倍の速度向上

オーディオの場合は、アテンポラバーバンド、またはアセトレートオーディオフィルターを使用します。

ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/10[v];[0:a]atempo=10[a]" -map "[v]" -map "[a]" output.mp4

ビデオとオーディオの長さのマッチング

この例では、audio.wav継続時間は30秒で、video.mp490秒です。

  1. オーディオファイルとビデオファイルの長さを取得します。

     ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 audio.wav
     ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
    
  2. setptsビデオフィルターを使用して、オーディオの長さに一致するようにビデオの長さを調整します。

     ffmpeg -i video.mp4 -i audio.wav -filter_complex "[0:v]setpts=PTS*30/90[v]" -map "[v]" -map 1:a -shortest output.mp4
    

ビデオを特定の時間に合わせる

この例では、入力は120秒です。必要な出力は30秒です。

  1. 入力ファイルの期間を取得します。

    ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
    
  2. setptsおよびatempo(またはrubberband)フィルターを使用します

    ffmpeg -i input.mp4 -filter_complex "setpts=PTS/(120/30);atempo=120/30" output.mp4
    
于 2013-02-08T22:19:26.323 に答える