ไฟล์ของคุณเข้าร่วมไม่ถูกต้องเนื่องจากมีบางอย่างไม่ตรงกัน
เช่นเดียวกับคนอื่น ๆ ฉันมีปัญหาเกี่ยวกับการซิงค์เสียงอย่างถูกต้องในวิดีโอที่รวมเข้าด้วยกัน และในขณะที่ MP4Box ใช้งานได้ดีหากคลิปมีสเปคเหมือนกันในบางกรณีฉันจะได้รับผลกระทบจาก“ ไม่พบแทร็กปลายทางที่เหมาะสม - การสร้างแทร็กใหม่” ซึ่งในกรณีนี้ Totem (วิดีโออาคา) จะไม่เล่นเซ็กเมนต์นั้น หลังจากการทดลองและข้อผิดพลาดและการวิจัยเพิ่มเติมฉันได้พัฒนาวิธีการต่อไปนี้เพื่อจัดการกับการเข้าร่วมวิดีโอซึ่งป่านนี้ได้ทำงานทุกครั้งที่มีคุณภาพ (กับฉัน) ที่ยอมรับได้
หากขนาดเฟรมไม่ตรงกัน (ข้อผิดพลาดในการเข้าร่วมที่เกี่ยวข้องกับแทร็กวิดีโอ):
ทำให้ปกติวิดีโอโดยไม่รบกวนเสียง (-c: สำเนา) โดยการตั้งค่าข้อ จำกัด (หารด้วย 8 สำหรับความเข้ากันได้ของตัวแปลงสัญญาณสูงสุด) สำหรับเซ็กเมนต์ที่ไม่ตรงกัน
ตัวอย่างคำสั่ง
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: ตัวแปลงสัญญาณความถี่ -ar เช่น -ar 48000 และอัตราบิตด้วย b: a 128k สำหรับสเตอริโอ (64K ต่อ ช่องดูเหมือนจะเป็นเป้าหมายที่ดี) หรืออะไรก็ตามที่ตรงกัน
ตัวอย่าง: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4
(โปรดทราบว่า libmp3lame เป็นตัวแปลงสัญญาณสำหรับไฟล์เสียง mp3) คุณสามารถรับรายการตัวเข้ารหัส avconv ที่รองรับโดยการออกคำสั่งavconv -codecs
หรือเพื่อ จำกัด สิ่งต่าง ๆ ให้เป็นรหัสเฉพาะavconv -codecs|grep *codecname*
เช่น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 ก่อนไฟล์แรกและแต่ละไฟล์เพิ่มเติมนำหน้าด้วย -cat และไฟล์เป้าหมายนำหน้าด้วย -out)
หากใช้ MP4Box (แนะนำสำหรับ MP4) สำหรับการเข้าร่วมคุณอาจพบว่าคุณต้องประมวลผลคลิปทั้งหมดด้วย avconv ไม่ว่าสเป็คจะตรงกันหรือไม่เพื่อหลีกเลี่ยงข้อผิดพลาด“ ไม่พบแทร็กปลายทางที่เหมาะสม - การสร้างแทร็กใหม่
หมายเหตุ: ฉันพบว่า Avidemux มีปัญหากับวิดีโอที่เข้ารหัสโดยใช้ไฟล์ H.264 / AVC (ต่อโทเท็ม) เนื่องจาก B-frames เป็นข้อมูลอ้างอิง ดูเหมือนว่าจะส่งผลให้เสียงที่ไม่ซิงค์กันเมื่อเข้าร่วมแม้ว่าจะเลือกที่จะคัดลอกทั้งเสียงและวิดีโอโดยไม่ต้องใช้ 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
หมายเหตุ:เท่าที่ผมรู้รูปแบบอื่น ๆ (ภาชนะ) มีข้อ จำกัด ที่คล้ายกันสำหรับขนาดของกรอบการจับคู่และอัตราเสียงดังนั้นนี้อาจทำงาน AVI เช่นกันถ้าคุณพยายามที่เข้าร่วมผ่านแมวหรือ mencoder หลังจากวิดีโอ normalizing และเสียง
ตัวเลือก:ใช้ Handbrake เพื่อเข้ารหัสไฟล์ที่รวมใหม่สำหรับขนาดที่เล็กกว่าถ้าต้องการด้วยตัวแปรเฟรมและการตั้งค่าคุณภาพคงที่ 25 (การตั้งค่าที่แนะนำ - ปรับตามความจำเป็นสำหรับวัสดุและความคาดหวังด้านคุณภาพของคุณ)