端末からビデオファイルを結合する方法は?


9

私はavidemux2_cli、mencoder、ffmpeg、catを試しました。しかし、これは常に機能するわけではありません(ほとんどの場合、エラーはオーディオコーデックが同じでないことです)コマンドに間違ったオプションを指定した可能性があります。

したがって、コマンド:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

猫の問題は、エラーは表示されないが、常に機能するとは限らないことです。complete.aviのように、Sample.aviとまったく同じになります。

Fmmpegは何もしません。complete.aviは常にSample.aviと同じです

Mencoderエラー:すべてのファイルは、-oacコピー用に同一のオーディオコーデックと形式を持っている必要があります。したがって、complete.aviはSample.aviと同じです。

avidemux2_cliエラーはありませんが、complete.aviはSample.aviと同じです。

まとめると、すべてのcomplete.aviはSample.aviと同じです。そして問題は、それらが同じオーディオコーデックを持っていないことです(私は質問します)。


1
私は、あなたが安全に2本のビデオを結合したい場合は、同じコーデックへのビデオコーデックと入力ファイルのオーディオコーデックを変更する必要があるということだと思う
vine_user

そして、どうすればそれを行うことができますか?
Leon Vitanos

mencoder-ovcオプションおよび-oacオプションとともに使用できます。参照:mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

回答:


10

2つのビデオを安全に組み合わせる場合は、入力ファイルのビデオコーデックとオーディオコーデックを同じコーデックに変更する必要があります。

たとえば、xvid(ビデオコーデック)とmp3lame(オーディオコーデック)を使用します。

sudo apt-get install mencoder libxvidcore4 libmp3lame0

以下のコマンドで入力ビデオをエンコードできます:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

あなたのビデオと一致させるために、オプション「ビットレート」などを変更することができます(そしてコーデックも)。

エンコードされたビデオ名が「video1.avi」と「video2.avi」で、出力ビデオ名が「joined-video.avi」の場合、

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

このコマンドを使用して、結合されたビデオファイルを作成できます。


2
このユーティリティの名前がmencoderMedia ENcoderであることを強調したいと思いました。多くの人が誤ってと入力して行き詰まりますmemcoder
Val

フレームサイズも一致する必要はありませんか?
オタク長老2015年

4

同じコーデックの3つのビデオに参加する必要がありました。私はこれをどうにかして以前の答えを読んでいます:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

Openshotよりもはるかに高速でシンプルです!

最初に「-oacコピー」オプションを試しましたが、ビデオのオーディオコーデックで許可されていないようです。「-oac pcm」を推奨するエラーメッセージが表示されました。ただし、pcmコーデックは適切なオプションではありません。結果のファイルは非常に大きく、その2/3は非圧縮オーディオです。

お役に立てれば


2
MEncoder svn r34540(Ubuntu)は、gcc-4.7(C)2000-2012 MPlayer Team MPlayerでビルドされ、libfaacなしでコンパイルされました。READMEまたはDOCSを参照してください。
Philippe Gachoud、2014年

1

ここで見つけた解決策は、2つのmp4ファイルを失うことなく参加するのに役立ちました:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

Avidemuxを使用してみましたが、結合されたビデオのサウンドに問題がありました。


1

何かが一致しないため、ファイルは適切に結合されません。

他の多くの人と同じように、結合されたビデオでサウンドが正しく同期することに問題がありました。クリップの仕様が同じであればMP4Boxは正常に動作しますが、場合によっては「適切な宛先トラックが見つかりません-新しいトラックを作成しています」という問題に遭遇します。いくつかの試行錯誤とさらなる調査の後、私はこれまでこれまで許容できる(私にとって)品質で機能してきたビデオへの参加に対処するための次の方法を開発しました。

フレームサイズが一致しない場合(ビデオトラックに関連する結合エラー):

一致しないセグメントに対して制約(最大コーデック互換性のために8で割り切れる)を設定することにより、オーディオを中断することなくビデオ正規化(-c:aコピー)

コマンドの例

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

オーディオが一致しない場合(オーディオトラックに関連する結合エラー):

オーディオを正規化

ビデオ(c:vコピー)を中断せずにオーディオを処理し、すべてのクリップが、c:aコーデック-ar周波数などの目的のコーデック、周波数、およびビットレート、およびステレオの場合はb:a 128kのビットレート(64K /チャネルは良いターゲットのようです)または何でも一致します。

例:avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(libmp3lameはmp3オーディオのコーデックであることに注意してください)コマンドを発行するavconv -codecsavconv -codecs|grep *codecname*、例を特定のコードに絞り込むことで、avconvがサポートするエンコーダーのリストを取得できます。avconv -codecs|grep mp3

ファイルを正規化したので、それらを結合できます。この例では、ファイルをMP4Boxで結合します。持っていない場合は、コマンドを発行して取得できますsudo apt-get install gpac

コマンドでファイルを結合しますMP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(最初のファイルの前に猫はなく、追加の各ファイルの前には-catが付き、ターゲットファイルの前には-outがあることに注意してください)。

参加にMP4Box(MP4に推奨)を使用している場合、「適切な宛先トラックが見つかりません-新規作成(タイプビデオ)」というエラーを回避するために、仕様が一致しているかどうかに関係なく、すべてのクリップをavconvで処理する必要がある場合があります。

注:Bフレームを参照として使用しているため、AvidemuxがH.264 / AVC(トーテムごと)ファイルを使用してエンコードされたビデオに問題があることがわかりました。これにより、オーディオとビデオの両方をremuxなしでコピーすることを選択した場合でも、参加時にオーディオが同期しなくなるようです。セーフモードを選択しないとクラッシュし、セーフモードを使用すると同期が取れなくなる

出典:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

注:私の知る限り、他のフォーマット(コンテナ)でもフレームサイズとオーディオレートの一致について同様の制約があるため、ビデオとオーディオを正規化した後で catまたはmencoderを介して参加しようとすると、aviでも機能する可能性があります

オプション:必要に応じて、可変フレームレートと一定の品質設定25(推奨設定-素材と品質の期待に応じて調整)で、Handbrakeを使用して結合ファイルをより小さなサイズに再エンコードします。


1

次のように入力する必要があります。

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

さらにファイルを追加したい場合:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi

1

VLC Media Playerを使用して、複数のビデオファイルを結合/マージすることができました。VLCはUbuntuソフトウェアからダウンロードできます。または、Ctrl+ Alt+ Tを押して次のように入力することにより、ターミナルからインストールできます。

sudo apt update
sudo apt install vlc

VLCがインストールされたら、ビデオファイルのあるフォルダーでターミナルを開き、次のように入力します。

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

これによりVLC GUIが開き、ファイルが結合またはマージされたら、それを閉じることができます。詳細については、こちらをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.