Terminalden video dosyaları nasıl birleştirilir?


9

Ben avidemux2_cli, mencoder, ffmpeg, kedi denedim .. Ama bu her zaman işe yaramaz (Çoğu zaman hata ses codec bileşeni aynı değildir) Belki de komutları yanlış seçenekler koymak.

Yani komutlar:

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

Kedi sorunu, hata göstermemesi, ancak her zaman işe yaramamasıdır .. complete.avi gibi, Sample.avi ile tam olarak aynı olacaktır

Fmmpeg hiçbir şey yapmaz. Complete.avi her zaman Sample.avi ile aynıdır

Mencoder hatası: Tüm dosyalar -oac kopyalama için aynı ses codec bileşenine ve biçimine sahip olmalıdır. Yani complete.avi, Sample.avi ile aynıdır

avidemux2_cli hata yok ama complete.avi yine Sample.avi ile aynı.

Özetlemek gerekirse, tüm complete.avi Sample.avi ile aynıdır .. Ve sorun onlar aynı ses codec bileşeni (ben quess) yok .. Herhangi bir fikir?


1
İki videoyu güvenli bir şekilde birleştirmek istiyorsanız, giriş dosyalarının video codec bileşenini ve ses codec bileşenini aynı codec bileşenlerine değiştirmeniz gerektiğini düşünüyorum,
vine_user

Ve bunu nasıl yapabilirim?
Leon Vitanos

mencoder-Ovc seçeneği ve -oac seçeneği ile kullanabilirsiniz . Bakınız: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

Yanıtlar:


10

İki videoyu güvenli bir şekilde birleştirmek istiyorsanız, giriş dosyalarının video codec bileşenini ve ses codec bileşenini aynı codec bileşenlerine değiştirmeniz gerekir.

Örneğin, xvid (video codec bileşeni) ve mp3lame (ses codec bileşeni) kullanarak:

sudo apt-get install mencoder libxvidcore4 libmp3lame0

giriş videolarını aşağıdaki komutlarla kodlayabilirsiniz:

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

Videolarınızla eşleşmek için "bit hızı" vb. (Ve ayrıca codec bileşenleri) seçeneklerini değiştirebilirsiniz.

Kodlanan video adları "video1.avi" ve "video2.avi" ise ve çıkış video adı "join-video.avi" ise,

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

Bu komutu kullanarak, birleştirilmiş video dosyasını oluşturabilirsiniz.


2
Sadece bu programın adının mencoder(yani Medya Kodlayıcısı) olduğunu pekiştireceğimi düşündüm . Birçok kişi yanlışlıkla yazarak sıkışıp kalıyor memcoder.
Val

çerçeve boyutlarının da eşleşmesi gerekmez mi?
Elder Geek

4

Aynı kodeklerle üç video parçasına katılmak zorunda kaldım. Bunu yapmayı başardım önceki cevapları:

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

OpenShot'tan çok daha hızlı ve daha basit!

Önce '-oac copy' seçeneğini denedim, ancak videolarımdaki ses codec bileşeni buna izin vermiyor gibi görünüyor. '-Oac pcm' öneren bir hata mesajı aldım. Pcm codec bileşeni iyi bir seçenek değil: sonuçta ortaya çıkan dosya çok büyük ve 2 / 3'ü sıkıştırılmamış ses.

Bu yardımcı olur umarım


2
Gcc-4.7 (C) 2000-2012 MPlayer Team MPlayer ile oluşturulan MEncoder svn r34540 (Ubuntu), libfaac olmadan derlendi. Bkz. README veya DOCS.
Philippe Gachoud

1

Burada bulduğum bir çözüm, iki mp4 dosyasını kayıpsız olarak katılmama yardımcı oldu:

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

Avidemux'u kullanmayı denedim, ancak birleştirilmiş videoda sesle ilgili sorunlar yaşadım.


1

Bir şey eşleşmediği için dosyalarınız düzgün bir şekilde birleştirilmiyor.

Diğerleri gibi, birleştirilmiş videolarda ses senkronizasyonu konusunda sorun yaşadım. ve klipler aynı özelliklere sahipse MP4Box iyi çalışıyor olsa da, bazı durumlarda “Uygun hedef parça bulunamadı - yeni bir tane oluşturma” tarafından yırtılabilirim, bu durumda Totem (aka Videolar) Birleştirilmiş dosyada bu segmenti oynatmaz Bazı deneme yanılma ve daha ileri araştırmalardan sonra, videolara katılmak için şu ana kadar kabul edilebilir (bana göre) kalitede çalışan aşağıdaki yöntemi geliştirdim.

Çerçeve boyutları eşleşmiyorsa (video parçalarıyla ilgili birleştirme hataları):

Eşleşmeyen segmentler için kısıtlamalar (maksimum kodek uyumluluğu için 8'e bölünebilir) ayarlayarak sesi kesmeden (-c: bir kopya) videoyu normalleştirin

Örnek komutlar

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

Ses eşleşmiyorsa (ses parçalarıyla ilgili hataları birleştirme):

Sesi Normalleştir

Sesi videoyu kesintiye uğratmadan işleyin (c: v kopya), böylece tüm klipler istenen kodek, frekans ve bit hızını c: 48000 gibi bir kodek-ar frekansı ve b: stereo için 128k (başına 64K) kanal iyi bir hedef gibi görünüyor) veya eşleşen her şey olabilir.

Örnek: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(libmp3lame'nin mp3 sesi için bir codec bileşeni olduğuna dikkat edin) Komutu avconv -codecsvererek veya bir şeyi avconv -codecs|grep *codecname*örneğin belirli bir kodlamaya daraltarak avconv destekli kodlayıcıların bir listesini alabilirsiniz.avconv -codecs|grep mp3

Artık dosyaları normalleştirdiğimize göre onlara katılabiliriz. Bu örnekte dosyaları MP4Box ile birleştireceğim. Eğer sahip değilseniz, komutu vererek alabilirsinizsudo apt-get install gpac

MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4Komutla dosyalara katılın (ilk dosyadan önce hiçbir kedi olmadığını ve her ek dosyadan önce -cat ve hedef dosyadan önce -out geldiğini unutmayın)

Birleştirme için MP4Box (MP4 için önerilir) kullanıyorsanız, "Uygun hedef izi bulunamadı - yeni bir tane oluşturma (tip vide)" hatasını önlemek için spesifikasyonların eşleşip eşleşmediği konusunda tüm klipleri avconv ile işlemeniz gerektiğini görebilirsiniz.

Not: Avidemux'un, referans olarak B-kareleri nedeniyle H.264 / AVC (totem başına) dosyaları kullanılarak kodlanan videolarda sorun yaşadığını tespit ettim. Bu, remux olmadan hem ses hem de video kopyalamayı seçerken bile katılırken sesin senkronize olmamasına neden olur. Güvenli mod seçilmediğinde çöküyor ve güvenli mod kullanılırken senkronize değil

Kaynaklar:

/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

Not: Bildiğim kadarıyla diğer formatlar (kaplar) çerçeve boyutu ve ses hızlarını eşleştirmek için benzer kısıtlamalara sahiptir, bu nedenle video ve sesi normalleştirdikten sonra kedi veya mencoder aracılığıyla katılmaya çalışırsanız avi için de işe yarayabilir .

İsteğe bağlı: Değişken kare hızı ve 25 sabit kalite ayarıyla, istenirse birleştirilmiş dosyayı daha küçük boyutta yeniden kodlamak için El Freni'ni kullanın (önerilen ayarlar - malzeme ve kalite beklentilerinize göre ayarlayın)


1

Bunun gibi yazmalısınız:

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

Daha fazla dosya eklemek istiyorsanız:

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'ı birden fazla video dosyasına katılmak / birleştirmek için kullanabildim. VLC, Ubuntu Yazılımından indirilebilir veya Ctrl+ Alt+ tuşlarına basıp aşağıdakileri Tyazarak bir terminalden yükleyebilirsiniz :

sudo apt update
sudo apt install vlc

VLC kurulduktan sonra, video dosyalarının bulunduğu klasörde bir terminal açın ve şunu yazın:

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

Bu VLC GUI'yi açar ve dosyalar birleştirildikten / birleştirildikten sonra kapatabilirsiniz. Daha fazla bilgiyi burada bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.