- หากความยาววิดีโอสั้นกว่าความยาวเสียง
-shortest
สิ่งที่คุณต้องการคือ
- หากความยาววิดีโอยาวกว่าความยาวของเสียงจะไม่มีการตั้งค่าสถานะใด ๆ ตามที่คุณต้องการ
ไม่มีการตั้งค่าสถานะเพื่อทำการตัดสินใจนี้โดยอัตโนมัติ
แก้ไข
แรงบันดาลใจจากคำตอบของ @ deadcode ฉันต้องทำให้ชัดเจนว่า "ไม่มีการตั้งค่าสถานะเพื่อทำให้เป็นอัตโนมัติ" แน่นอนว่าไม่เป็นความจริงถ้าคุณยินดีที่จะเข้ารหัสใหม่ : ในกรณีนี้ไปด้วยapad
@deadcode ตามที่แนะนำ
หากคุณต้องการหลีกเลี่ยงการเข้ารหัสซ้ำ (เช่น-c:v copy
) คำตอบจะเป็นเช่นนั้น
มีวิธีแก้ปัญหาโดยใช้ffconcat
demuxer แต่ต้องการการทำงานเล็กน้อย:
- สร้างไฟล์ที่มีความเงียบในรูปแบบเดียวกับไฟล์เสียงของคุณ ("silence.wav")
- สร้างไฟล์ concat "audio.ffconcat" (มีสายเงียบมากเท่าที่คุณต้องการเพื่อให้แน่ใจว่าเสียงของคุณยาวพอ):
.
file 'audiofile.wav'
file 'silence.wav'
file 'silence.wav'
...
file 'silence.wav'
- วิ่ง
ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4
สิ่งนี้จะสังเคราะห์apad
ตัวกรองโดยไม่มีกราฟตัวกรองดังนั้นจึงอนุญาตให้ mux โดยไม่ต้องเข้ารหัสใหม่