Tek bir tane oluşturmak için iki mp4 dosyasına katılmak istiyorum. Video akışları h264'te ve sesler aac olarak kodlanmıştır. Hesaplamalı sebeplerden dolayı videoları tekrar başka bir formatta kodlayamıyorum. Ayrıca, herhangi bir GUI programı kullanamıyorum, tüm işlemler Linux komut satırı yardımcı programları ile yapılmalıdır. FFmpeg bunu mpeg4 dosyaları için yapamaz, bu yüzden MP4Box kullandım:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Maalesef ses tamamen karışıyor. Sorunun sesin aac olduğunu sanıyordum, bu yüzden mp3 olarak kodladım ve tekrar MP4Box kullandım. Bu durumda ses newvideo.mp4
( yarısına karşılık gelen video1.mp4
) ilk yarısı için gayet iyi ancak sonra ses yok ve videoda da gezinemiyorum.
Bir sonraki düşüncem, ses ve video akışlarının, uzunluklarında düzeltmem gereken bazı küçük tutarsızlıklar olduğu idi. Böylece her giriş videosu için video ve ses akışlarını böldüm ve sonra FFmpeg'deki -shortest seçeneğiyle birleştirdim.
Böylece koştuğum ilk video için:
avconv -y -i video1.mp4 -c copy -map 0:0 videostream1.mp4
avconv -y -i video1.mp4 -c copy -map 0:1 audiostream1.m4a
avconv -y -i videostream1.mp4 -i audiostream1.m4a -c copy -shortest video1_aligned.mp4
Benzer şekilde ikinci video için ve daha önce olduğu gibi MP4Box kullanılmış. Ne yazık ki bu da işe yaramadı. Elimdeki tek başarı, video akışlarına ayrı ayrı (yani videostream1.mp4 ve videostream2.mp4) ve ses akışlarına (yani audiostream1.m4a ve audiostream2.m4a) katıldığımda ve ardından video ve sese son bir dosyada katıldı. Ancak, videonun ikinci yarısında senkronizasyon kaybedilir. Somut olarak, 1 saniyelik bir ses ve video gecikmesi var. Herhangi bir öneriniz gerçekten bekliyoruz.