ฉันจะเปลี่ยนเสียงให้เป็นวิดีโอได้ (นั่นคือแสดงรูปคลื่นในวิดีโอ)


32

ฉันต้องสร้างวิดีโอ ส่วนหนึ่งเกี่ยวข้องกับ "การแสดง" การสัมภาษณ์ทางวิทยุ แทนที่จะมีหน้าจอสีดำและฟังเสียงฉันต้องการมีรูปแบบของคลื่นที่แตกต่างกันบนหน้าจอและคำอธิบายภาพ

มีเครื่องมือฟรีหรือราคาถูกที่ฉันสามารถใช้ที่จะทำเช่นนี้?


ถ้าฉันขอให้เพื่อนทำมันมีอะไรใน Adobe Creative Suite ที่สามารถทำงานได้หรือไม่


ความกล้าควรแสดงให้คุณเห็นคลื่นเสียง คุณสามารถบันทึก - เห็น - คลื่น

เป็นมูลค่าการกล่าวขวัญว่าเครื่องมือ "visualizer" ที่คุณอาจกำลังมองหาคือออสซิลโลสโคปซึ่งอาจแจ้งการค้นหาของคุณ
Warrior Bob

คำตอบ:


52

คุณสามารถใช้ffmpegเพื่อสร้างวิดีโอจากเสียงโดยใช้ตัวกรองหลายตัว


ahistogram

แปลงสัญญาณเข้าเป็นสัญญาณวิดีโอแสดงฮิสโตแกรมระดับเสียง

ahistogram

ffmpeg

ffmpeg -i input.flac -filter_complex \
"[0:a]ahistogram,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.flac, asplit [a][out1]; [a] ahistogram [out0]"

ดูahistogramเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


aphasemeter

แปลงเสียงอินพุตเป็นเอาต์พุตวิดีโอโดยแสดงเฟสเสียง

aphasemeter

ffmpeg

ffmpeg -i input.wav -filter_complex \
"[0:a]aphasemeter=s=1280x720:mpc=cyan,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.wav, asplit [a][out1]; [a] aphasemeter=s=1280x720:mpc=cyan [out0]"

ดูaphasemeterเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


avectorscope

ตัวกรอง avectorscope

แปลงสัญญาณเสียงเข้าเป็นสัญญาณวิดีโอแทนขอบเขตเสียงเวกเตอร์

ffmpeg

ffmpeg -i input.mp3 -filter_complex \
"[0:a]avectorscope=s=1280x720,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mp3, asplit [a][out1]; \
[a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]"

ดูavectorscopeเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


showcqt

ตัวกรอง showcqt

แปลงสัญญาณเสียงเข้าเป็นสัญญาณวิดีโอที่แสดงคลื่นความถี่ด้วยสเกลดนตรี

ffmpeg

ffmpeg -i input.mp4 -filter_complex \
"[0:a]showcqt,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mp4, asplit [a][out1]; [a] showcqt [out0]"

ดูshowcqtเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


showfreqs

แปลงสัญญาณเสียงเข้าเป็นสัญญาณวิดีโอที่แสดงถึงสเปกตรัมพลังงานเสียง ความกว้างของเสียงอยู่บนแกน Y ในขณะที่ความถี่อยู่บนแกน X

showfreqs

ffmpeg

ffmpeg -i input.mp4 -filter_complex \
"[0:a]showfreqs=mode=line:fscale=log,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mp4, asplit [a][out1]; [a]  showfreqs=mode=line:fscale=log [out0]"

ดูshowfreqsเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


showspectrum

ภาพที่แสดงให้เห็น

แปลงสัญญาณเสียงเข้าเป็นสัญญาณวิดีโอแทนคลื่นความถี่เสียง

ffmpeg

ffmpeg -i input.oga -filter_complex \
"[0:a]showspectrum=s=1280x720,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.oga, asplit [a][out1]; \
[a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]"

ดูshowspectrumเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


showwaves

ตัวกรอง showwaves

แปลงสัญญาณเสียงเข้าเป็นสัญญาณวิดีโอแทนคลื่นตัวอย่าง

ffmpeg

ffmpeg -i input.m4a -filter_complex \
"[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.m4a, asplit [a][out1]; [a] showwaves [out0]"

ดูshowwavesเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


showvolume

ตัวกรอง showvolume

แปลงระดับเสียงเสียงอินพุตเป็นสัญญาณวิดีโอ

ffmpeg

ffmpeg -i input.mka -filter_complex \
"[0:a]showvolume=f=1:b=4:w=720:h=68,format=yuv420p[vid]" \
-map "[vid]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mka, asplit [a][out1]; [a] showvolume=f=255:b=4:w=720:h=68 [out0]"

ดูshowvolumeเอกสารประกอบสำหรับตัวเลือกและตัวอย่างเพิ่มเติม


หมายเหตุ

  • ดูFFmpeg Wiki: คู่มือการเข้ารหัส H.264สำหรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับคุณภาพผลผลิต

  • format=yuv420p ทำให้แน่ใจว่า libx264 ใช้รูปแบบพิกเซลที่เข้ากันได้กับผู้เล่นเส็งเคร็งเช่น QuickTime

  • แทนที่จะเข้ารหัสใหม่ตามค่าเริ่มต้นคุณสามารถใช้-c:a copyเพื่อสตรีมคัดลอกเสียงได้หากรูปแบบคอนเทนเนอร์ส่งออกของคุณรองรับรูปแบบเสียง นึกถึงการคัดลอกสตรีม (การ muxing) เหมือนการคัดลอกและวาง - ไม่มีการเข้ารหัสซ้ำ


ได้รับ ffmpeg

คุณควรใช้เวอร์ชันล่าสุดเสมอเนื่องจากการพัฒนาใช้งานได้ดีมาก ลิงค์ไปยังบิลด์ffmpegสำหรับ Windows, OS X และ Linux มีอยู่ในหน้าดาวน์โหลด FFmpeg หรือคุณสามารถทำตามขั้นตอนโดยขั้นตอนคู่มือในการรวบรวมffmpeg


OP อาจต้องการดูคำตอบอื่น ๆ ซึ่งลิงก์ไปยังบทเรียนของ After Effects แต่ตัวอย่าง ffmpeg ที่ยอดเยี่ยมเหล่านี้มีประโยชน์มากที่จะมีที่นี่ ขอบคุณ!
mivk

1
@ LordNeckbeard OP ที่นี่ ไม่นานมานี้ แต่ฉันกลับมาแล้วและนี่คือคำตอบที่ดี
ccleve

ฉันเพิ่งสร้างคำถามsuperuser.com/questions/1184922/…ฉันจะตั้งค่าภาพพื้นหลังได้อย่างไร
NineCattoRules

6

Adobe After Effects มีวิชวลไลเซอร์ให้ดู

นอกจากนี้ยังมีปลั๊กอินเช่นที่นี่สำหรับ Photoshop

โชคดีกับโครงการของคุณ.


4

ฉันเข้าใจคำถามของคุณค่อนข้างดี หากคุณพยายามสร้างรูปแบบของคลื่นที่เคลื่อนที่ไปตามระดับเสียงและเบสของเสียงคุณสามารถลองลิงค์นี้ได้

http://www.videocopilot.net/tutorial/audio_to_animation/

Adobe After effects ช่วยให้คุณทำมันได้อย่างง่ายดาย คุณสามารถเล่นพร้อมกับเอฟเฟกต์ของอนุภาคเพื่อให้ได้รูปคลื่นที่ดูแข็งขึ้น

โชคดี!


3

ผู้เล่นเพลงหลายคนมีนักสร้างภาพ เล่นเสียงในหนึ่งในนั้นและใช้ตัวจับหน้าจอเพื่อบันทึกวิดีโอ

คุณสามารถลองใช้ gstreamer ตามที่อธิบายไว้ที่http://www.vidarholen.net/contents/blog/?p=23

ตัวเลือกอื่นคือ Sonic Candle, http://sourceforge.net/projects/soniccandle/


3

หลังจากอ่านคำตอบที่ยอดเยี่ยมจาก LordNeckbeard ฉันได้สร้างสคริปต์เล็ก ๆ ขึ้นมาเพื่อสร้างภาพด้วย ffmpeg และตัวกรอง showspectrum ฉันยังเพิ่มตัวเลือกการอัปโหลดสำหรับตัวเองเพื่อเข้ารหัสโดยตรงไปยังเซิร์ฟเวอร์ระยะไกลของฉันที่มีการเชื่อมต่อที่ดีกว่าที่บ้านเพื่ออัปโหลดวิดีโอขนาดใหญ่ นอกจากนี้ยังใช้สคริปต์youtube-uploadยอดเยี่ยม!

แก้ไข:การอัปโหลดโดยตรงทำให้กระบวนการเข้ารหัสช้าลงอย่างมาก !!

ต้นฉบับ

#!/bin/bash
# ffmpeg spectrum maker

action=$1

infile=$2

outfile=$3
upload_server="sftp://cloud"

upload_location="/home/master/videos/"

remote_command="youtube-upload --title=\"Remote_upload\" --privacy=\"private\" $upload_location$outfile"

#simple spectrum
filter1="showspectrum=s=1920x1080:slide=scroll:mode=combined:color=intensity:scale=cbrt:saturation=1:win_func=hann[tmp]"

#vertical mirror
filter2="[tmp]crop=iw:ih/2:0:ih/2-3,split[up][tmp];[tmp]vflip[down];[up][down]vstack[tmp]"

#horizontal mirror
filter3="[tmp]crop=iw/2:ih:iw/2:,split[left][tmp];[tmp]hflip[right];[left][right]hstack[tmp]"

#fisheye effect VERY SLOW!!! if used make change the size of the spectrum to (1920*11/10)x(1080*11/10) and use the crop filter below
filter4="[tmp]frei0r=filter_name=defish0r:filter_params=1.5|n[tmp]"

#make sure the resolution has the desired size
filter5="[tmp]crop=1920:1080"

#pass the stream to the output for ffplay
testpass="[tmp]copy[out0]"


vcodec="-codec:v libx264 -pix_fmt yuv420p -tune grain -crf 21 -preset medium -bf 2 -flags +cgop -r 25"

acodec="-codec:a libfdk_aac -b:a 128k -movflags +faststart"

#acodec="-codec:a copy"

extraflags="-movflags +faststart "


if [ "$action" = "test" ]
then
        ffplay -f lavfi "amovie=$infile,asplit[a][out1];[a]$filter1;$filter2;$filter3;$testpass"
fi

if [ "$action" = "make" ]
then
        ffmpeg -i "$infile" -filter_complex "[0:a]$filter1;$filter2;$filter3" -map [tmp] -map 0:a $vcodec $acodec $extraflags "$outfile"
fi
if [ "$action" = "upload" ]
then
        ffmpeg -i "$infile" -filter_complex "[0:a]$filter1;$filter2;$filter3" -map [tmp] -map 0:a $vcodec $acodec $extraflags "$upload_server$upload_location$outfile"
        ssh cloud $remote_command
fi
exit


0

หากคุณสามารถเข้าถึง After Effects มีปลั๊กอินที่เรียกว่าTrapcode Keysซึ่งสามารถทำได้อย่างมีประสิทธิภาพ ผลลัพธ์ดูดีมาก - ฉันใช้มันในหลาย ๆ โครงการสำหรับสิ่งที่คุณได้อธิบายไว้ แต่ก็ไม่ถูก - - $ 150 สำหรับตัวเองหรือ $ 899 สำหรับ Trapcode Suite แบบเต็ม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.