ใช้ concat demuxer (เพิ่มความเงียบในการเริ่มต้นและ / หรือสิ้นสุด)
ใช้ concat demuxer หากคุณต้องการหลีกเลี่ยงการเข้ารหัสเซกเมนต์หลักอีกครั้ง วิธีนี้ใช้ได้กับการเพิ่มความเงียบไปที่จุดเริ่มต้นหรือจุดสิ้นสุด (หรือทั้งสองอย่าง)
ใช้ตัวกรองสัญญาณเสียงanullsrcเพื่อสร้างเสียงเงียบ คุณจะต้องจับคู่รูปแบบเค้าโครงช่องสัญญาณและอัตราตัวอย่างของไฟล์เสียงหลัก ตัวอย่างการสร้าง 5.1 แชนเนลอัตราตัวอย่าง 48000 เฮิร์ตซ์ไฟล์เสียงเงียบ AC3 1 วินาที (เช่นนี้เป็นรูปแบบของคำถาม):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
ตอนนี้ให้ตั้งชื่อไฟล์ข้อความinput.txt
ที่แสดงรายการไฟล์ที่จะต่อกัน:
file 'silent.ac3'
file 'main.ac3'
input.txt
หากคุณต้องการความเงียบในตอนท้ายแทนเพียงแค่เปลี่ยนคำสั่งของไฟล์ใน
ตอนนี้คุณสามารถต่อไฟล์เข้าด้วยกันโดยใช้concat demuxer :
ffmpeg -f concat -i input.txt -codec copy output.ac3
การใช้ตัวกรอง concat (เพิ่มความเงียบในการเริ่มต้นและ / หรือสิ้นสุด)
ใช้ตัวกรอง concat หากคุณต้องการทำทุกอย่างในหนึ่งคำสั่งหรือถ้าคุณต้องการส่งออกไปยังรูปแบบที่แตกต่างจากอินพุต (ตั้งแต่วิธีนี้เข้ารหัสอีกครั้ง) วิธีนี้ใช้ได้กับการเพิ่มความเงียบไปที่จุดเริ่มต้นหรือจุดสิ้นสุดหรือทั้งสองอย่าง
ตัวอย่างการเพิ่มความเงียบ 1 วินาทีไปยังจุดเริ่มต้นของสเตอริโออินพุตอัตราตัวอย่าง 44100 Hz:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
การกรองจะส่งผลให้มีการเข้ารหัสอีกครั้งในขณะที่ตัวถอดรหัส demat จะไม่ทำงาน
ใน anullsrc ขอแนะนำให้จับคู่เค้าโครงของช่องและอัตราตัวอย่างของอินพุต
หากคุณต้องการที่จะเพิ่มความเงียบไปยังจุดสิ้นสุดแทนเพียงแค่เปลี่ยนคำสั่งของปัจจัยการผลิตให้กับตัวกรอง concat [1:a][0:a]concat=n=2:v=0:a=1
นี้:
การใช้ตัวกรอง adelay (เพิ่มความเงียบไปที่จุดเริ่มต้น)
ใช้ตัวกรองเสียงadelayหากคุณต้องการทำทุกอย่างในคำสั่งเดียวหรือถ้าคุณต้องการส่งออกไปยังรูปแบบที่แตกต่างจากอินพุต (ตั้งแต่วิธีนี้เข้ารหัสอีกครั้ง) ใช้งานได้เฉพาะเพื่อเพิ่มความเงียบไปที่จุดเริ่มต้นของไฟล์
ตัวอย่างนี้จะเพิ่มความเงียบ 1 วินาทีไปที่จุดเริ่มต้นของอินพุตสเตอริโอ:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
- การกรองจะส่งผลให้มีการเข้ารหัสอีกครั้งในขณะที่ตัวถอดรหัส demat จะไม่ทำงาน
- ค่าเป็นมิลลิวินาที ผู้ใช้เวอร์ชันล่าสุด (ปัจจุบัน git master หรืออะไรที่ใหม่กว่า FFmpeg 4.1) สามารถใช้แทนได้
1s
หนึ่งวินาที
- แต่ละช่องต้องการความล่าช้าของตนเอง ยกตัวอย่างเช่นการป้อนข้อมูลขาวดำจะใช้
adelay=1000
ในขณะที่ 5.1 adelay=1000|1000|1000|1000|1000|1000
การป้อนข้อมูลจะใช้
การใช้ตัวกรอง apad (เพิ่มความเงียบไปยังจุดสิ้นสุด)
ใช้ตัวกรองเสียงของapadหากคุณต้องการทำทุกอย่างในหนึ่งคำสั่งหรือถ้าคุณต้องการส่งออกไปยังรูปแบบที่แตกต่างจากอินพุต (เนื่องจากวิธีนี้เข้ารหัสอีกครั้ง) ใช้งานได้เฉพาะเพื่อเพิ่มความเงียบในตอนท้ายของไฟล์
ตัวอย่างนี้จะเพิ่มความเงียบ 1 วินาทีไปยังจุดสิ้นสุด:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
การกรองจะส่งผลให้มีการเข้ารหัสอีกครั้งในขณะที่ตัวถอดรหัส demat จะไม่ทำงาน
pad_dur
ตัวเลือกที่ถูกเพิ่มเข้ามาหลังจากการเปิดตัวของ FFmpeg 4.1 ดังนั้นคุณจะต้องใช้การสร้างล่าสุดจากสาขาต้นแบบคอมไพล์หรือรอให้ FFmpeg 4.2