图片及文字水印叠加ffmpeg样例

# !/bin/sh

#  nvidia hevc to hevc with three output mpegts with hysmux flags:
#    logo and draw text
#  author: hybase@qq.com
#  hysmux flag: user defined flag(not ffmpeg official)

ulimit -c 9999999
date1="`date +"%Y-%m-%d %H:%M:%S"`"
echo "================== start ==================== "

INPUT_PARAMS="-loglevel info -y -fflags +genpts -c:v hevc_cuvid -gpu 0 -i /r2/vppftp/4k/4k_p50_hdr.ts"
HEVC_NVENC_PARAMS="-c:v:0 hevc_nvenc -gpu any -aud 1 -preset slow -2pass 1 -profile:v 1 -level:v 0 -tier 1 -rc cbr_hq -cbr 1 -rc-lookahead 0 -no-scenecut 1 -strict_gop 1 "
AAC_ENC_PARAMS="-c:a:0 libfdk_aac -ab:a:0 128k -ar:a:0 48000 -ac:a:0 2 -vol:a:0 256"
AC3_ENC_PARAMS="-c:a:1 ac3 -ab:a:1 192k -ar:a:1 48000 -ac:a:1 2 -vol:a:1 256"

# mpegts params
MPEGTS_PARAMS1="-muxdelay 1.5 -pcr_period 33 -pat_period 0.08 -sdt_period 1.2 -pes_payload_size 100 -mpegts_flags +hysmux -f mpegts"
MPEGTS_PARAMS2="-muxdelay 0.8 -pcr_period 33 -pat_period 0.08 -sdt_period 1.2 -pes_payload_size 100 -mpegts_flags +hysmux -f mpegts"

# filter complex params: Linux 49.65 暂未支持font
TEXT1_STR=\
",drawtext=fontfile=/r2/hys_project/proj-stranscoder/bin/fonts/mingliu.ttc:text='流媒体公司'"\
":x=400:y=400:fontsize=64:fontcolor=0xfffe00@0.7:shadowy=2"

TEXT2_STR=\
",drawtext=fontfile=/r2/hys_project/proj-stranscoder/bin/fonts/mingliu.ttc:text='版权所有,违者必究'"\
":x=400:y=500:fontsize=64:fontcolor=0xfffe00@0.7:shadowy=2"

FILTER_COMPLEX_PARAMS2=\
"[0:v]split=3[in1][in2][in3];"\
"[in1][1:v]overlay=100:100[bkg1];[bkg1][2:v]overlay=100:300"$TEXT1_STR""$TEXT2_STR"[out1];"\
"[in2][1:v]overlay=100:100[bkg1];[bkg1][2:v]overlay=100:300"$TEXT1_STR""$TEXT2_STR"[out2];"\
"[in3][1:v]overlay=100:100[bkg1];[bkg1][2:v]overlay=100:300"$TEXT1_STR""$TEXT2_STR"[out3]"

ffmpeg $INPUT_PARAMS \
 -i /r2/vppftp/image/logo/jxtv_180x180.png \
 -ignore_loop 1 -i /r2/vppftp/image/logo/xktv_180x180.gif \
 -filter_complex $FILTER_COMPLEX_PARAMS2 \
 -map "[out1]" $HEVC_NVENC_PARAMS -b:v:0 9000000 -minrate 9000000 -maxrate 9000000 -bufsize 3000000 -g 25 -bf 0 -pix_fmt yuv420p -r 25.0\
 -map 0:1 $AAC_ENC_PARAMS \
 -map 0:1 $AC3_ENC_PARAMS \
 -muxrate 12500000 \
 $MPEGTS_PARAMS1 output_watermark_nv_s2160p_bpp8_p25.ts\
 -map "[out2]" $HEVC_NVENC_PARAMS -b:v:0 3000000 -minrate 3000000 -maxrate 3000000 -bufsize 3000000 -g 25 -bf 0 -pix_fmt yuv420p -r 25.0 -s 1280x720\
 -map 0:1 $AAC_ENC_PARAMS -c:a:0 libfdk_aac -ab:a:0 64000 -ar:a:0 48000 -ac:a:0 2 -vol:a:0 256\
 -muxrate 3750000 \
 $MPEGTS_PARAMS2 output_watermark_nv_s720p_bpp8_p25.ts\
 -map "[out3]" $HEVC_NVENC_PARAMS -b:v:0 1000000 -minrate 1000000 -maxrate 1000000 -bufsize 1000000 -g 25 -bf 0 -pix_fmt yuv420p -r 25.0 -s 640x360\
 -map 0:1 $AAC_ENC_PARAMS -c:a:0 libfdk_aac -ab:a:0 64000 -ar:a:0 48000 -ac:a:0 2 -vol:a:0 256\
 -muxrate 1200000 \
 $MPEGTS_PARAMS2 output_watermark_nv_s360p_bpp8_p25.ts

date2="`date +"%Y-%m-%d %H:%M:%S"`"

time_distance=$(expr $(date +%s -d "$date2") - $(date +%s -d "$date1")) ;
hour_distance=$(expr ${time_distance} / 3600);
hour_remainder=$(expr ${time_distance} % 3600);
min_distance=$(expr ${hour_remainder} / 60);
min_remainder=$(expr ${hour_remainder} % 60);
process_fps=$(expr 432 / ${time_distance});

echo "======================= time info ================== "
echo "= start --- $date1"
echo "=   end --- $date2"
echo "="
echo "= total --- ${hour_distance}:${min_distance}:${min_remainder}  ${process_fps} fps"
echo "="
echo "======================= time info ================== "
echo "======================= end ========================= "
echo ""

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值