(转载)直播带货系统中的短视频素材捕获方式

主要需求:

1. 采集摄像头和麦克风,并生成文件

2. 为录制的视频添加字幕

3. 为录制的视频背景音乐,背景音的音量要能调节

4. 添加片头和片尾

5. 最终生成的文件体积要小,方便上传

技术分析

  1. 首先是音视频捕获

  2. 因为需要到要上传,所以需要对采集后的视频文件做编码处理,直接调用ffmpeg即可,可以把你几百MB的采集视频压缩为1MB。这里不采用mencoder,因为它似乎对avi文件的处理有问题。考虑到之后要添加背景音,为了保证背景音和麦克风同时存在,需要抽取音频单独处理,同样是调用ffmpeg,这里把代码列上,相信你在其他地方也能用的上:

  3. 音频处理,就是调用sox了。它是个好东西啊,不仅可以做音频的合并、分割,也能做混音和音量调节,这就是选择它的原因。注意,音量调节是针对原始音乐的,-v 传入的参数,指的是针对原始音量的调整幅值。大于1为增大音量,小于1减小音量,负数表示还需要对音频进行反相变换。sox还能做其他的声音处理效果,大家可以自己Google之。

  4. 添加字幕。需要调用mencoder,因为我对它进行了封装,这里不方便展示,只把字幕相关的参数列出来,以供参考。其中-subfont-text-scale后面的参数是字体的大小,-subfont参数输入的是字体文件的绝对路径,一般是C:\WINDOWS\Fonts\中的文件。

-subcp cp936 -sub-fuzziness 1 -subfont-autoscale 3 -subfont-text-scale %d -subfont-blur 2 -subfont-outline 2 -subfont %s

  5. 添加片头片尾,也就是视频合并了。合并的前提是它们的编码要一致,所以有必要对它们进行重新编码,按照录制后视频的处理方式进行处理。我把它们都转换成了mp4文件,然后就可以很方便的合并了。mp4合并是我之前就已经写好的程序,直接拿来用了。如果你没有,可以调用mp4box来做这件事情。参数我直接贴上了,大家就不用再找了。顺便说一句,如果你发现你的mp4文件存在同一时刻的音频帧和视频帧相距较远,导致网络播放时无法快起的问题,也可以用mp4box来解决:

mp4box.exe -cat input_1.mp4 -cat input_2.mp4 out.mp4

猜你喜欢

转载自blog.csdn.net/q3557873521/article/details/107791531