[{"data":1,"prerenderedAt":339},["ShallowReactive",2],{"content:\u002F2021\u002Fffmpeg_marquee_ads_processing":3,"surround:\u002F2021\u002Fffmpeg_marquee_ads_processing":328},{"id":4,"title":5,"body":6,"categories":305,"date":307,"description":308,"draft":309,"extension":310,"image":311,"meta":312,"navigation":314,"path":315,"permalink":311,"published":311,"readingTime":316,"recommend":311,"references":311,"seo":321,"sitemap":322,"stem":323,"tags":324,"type":326,"updated":311,"__hash__":327},"content\u002Fposts\u002F2021\u002Fffmpeg_marquee_ads_processing.md","移除跑马灯广告",{"type":7,"value":8,"toc":284},"minimark",[9,14,18,22,26,34,42,49,52,59,63,95,99,102,105,116,119,122,127,141,144,147,150,155,161,164,169,175,178,183,189,192,195,200,203,206,211,215,220,223,228,234,237,242,248,251,256,262,266,277,281],[10,11,13],"h2",{"id":12},"背景","背景 🎨",[15,16,17],"p",{},"通过爬虫获取到的电视剧，在顶部往往存在跑马灯广告。相同播放域名存在一定的规律，可以对特定时间进行水印覆盖，但是通过人工去寻找这个规律，仅只能抽样，存在极大的不确定性。并且水印覆盖存在对视频编码与解码的行为，时间与空间复杂度都是较高的。",[10,19,21],{"id":20},"预期","预期 🔭",[23,24,25],"h3",{"id":25},"处理速度",[15,27,28,29,33],{},"1 个小时的视频，处理时间为 ",[30,31,32],"strong",{},"10 ~ 15"," 分钟",[15,35,36,37],{},"视频裁剪前：\n",[38,39],"img",{"alt":40,"src":41},"1109X574\u002FCutVideo-01.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002FrJlP\u002F1109X574\u002FCutVideo-01.png",[15,43,44,45],{},"视频裁剪后：\n",[38,46],{"alt":47,"src":48},"1109X560\u002FCutVideo-02.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002F1B89\u002F1109X560\u002FCutVideo-02.png",[15,50,51],{},"补充说明",[15,53,54,55],{},"预估时间为 10~15 分钟，不是很准确的原因是目前服务器负责了其他任务，占用的内存较大\n解析过程速度截图如下：\n",[38,56],{"alt":57,"src":58},"929X152\u002FCutDetail-01.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002F2lOO\u002F929X152\u002FCutDetail-01.png",[10,60,62],{"id":61},"特征-️","特征 🍽️",[64,65,66,78],"ul",{},[67,68,69,70],"li",{},"缺点",[64,71,72,75],{},[67,73,74],{},"不执行就地编辑；",[67,76,77],{},"水印覆盖存在解码与编码过程，非常慢。",[67,79,80,81],{},"优势",[64,82,83,86,89,92],{},[67,84,85],{},"转换视频格式；",[67,87,88],{},"支持主流视频格式，例如 ts、mp4、avi、m3u8；",[67,90,91],{},"跨平台使用，支持 masOS、linux、ubuntu、windows；",[67,93,94],{},"视频处理之前，就能通过内置命令查看处理后的结果，提供了预览功能。",[10,96,98],{"id":97},"正文","正文 💻",[23,100,101],{"id":101},"安装",[15,103,104],{},"masOS：",[106,107,113],"pre",{"className":108,"code":110,"language":111,"meta":112},[109],"language-shell","brew install ffmpeg\n","shell","",[114,115,110],"code",{"__ignoreMap":112},[23,117,118],{"id":118},"裁剪",[15,120,121],{},"让我们从基础开始。要使用FFmpeg修剪视频的一部分，命令为：",[15,123,124],{},[114,125,126],{"code":126},"ffmpeg -i input.mp4 -filter:v \"crop=w:h:x:y\" output.mp4",[64,128,129,132,135,138],{},[67,130,131],{},"w 输出视频宽度（修剪区域的宽度）。默认值为输入视频宽度（输入视频宽度= iw）",[67,133,134],{},"h 输出视频高度（裁剪区域的高度）。默认值为输入视频高度（输入视频高度= ih）",[67,136,137],{},"x 从修剪开始的水平位置。从左边开始（绝对左边距为 0）",[67,139,140],{},"y 从视频顶部开始，从此处开始修剪的垂直位置（绝对顶部为 0）",[23,142,143],{"id":143},"入门",[15,145,146],{},"让我们看一个基本的 FFmpeg 修剪的例子。",[15,148,149],{},"从中心开始裁剪一个 100 像素的正方形 (默认情况下 FFmpeg 设置为居中，因此 x 和 y 未指定任何值)。",[15,151,152],{},[114,153,154],{"code":154},"ffmpeg -i input.mp4 -filter:v \"crop=100:100\" output.mp4",[15,156,157],{},[38,158],{"alt":159,"src":160},"500X470\u002FDemo-01.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002FDl0N\u002F500X470\u002FDemo-01.png",[15,162,163],{},"从左上方开始裁剪一个 100 像素的正方形。",[15,165,166],{},[114,167,168],{"code":168},"ffmpeg -i input.mp4 -filter:v \"crop=100:100:0:0\" output.mp4",[15,170,171],{},[38,172],{"alt":173,"src":174},"500X470\u002FDemo-02.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002F9zPD\u002F500X470\u002FDemo-02.png",[15,176,177],{},"从右上方开始裁剪一个 100 像素的正方形。",[15,179,180],{},[114,181,182],{"code":182},"ffmpeg -i input.mp4 -filter:v \"crop=100:100:iw-100:0\" output.mp4",[15,184,185],{},[38,186],{"alt":187,"src":188},"500X469\u002FDemo-03.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002FaLEm\u002F500X469\u002FDemo-03.png",[23,190,191],{"id":191},"裁剪视频边界",[15,193,194],{},"要使用 FFmpeg 修剪视频边界（顶部，底部，左侧，右侧边界），请使用：",[15,196,197],{},[114,198,199],{"code":199},"ffmpeg -i input.mp4 filter:v \"crop=iw-n:ih-n\" output.mp4",[15,201,202],{},"iw：输入视频的宽度\nih：输入视频的高度\nn：裁剪像素数（输入预期视频宽度）\nm：裁剪像素数（输入预期视频高度）",[15,204,205],{},"强烈建议使用以下命令，预览（播放）裁剪后的视频，有益于快速检查裁剪区域是否正确。",[15,207,208],{},[114,209,210],{"code":210},"ffplay -filter:v \"crop=w:h:x:y\" input.mp4",[23,212,214],{"id":213},"裁剪视频顶部底部左右边框","裁剪视频顶部、底部、左右边框",[15,216,217],{},[114,218,219],{"code":219},"ffmpeg -i input.mp4 filter:v \"crop=iw-100:ih-200\" output.mp4",[15,221,222],{},"假设您知道输入视频的高度和宽度(500 x 300 在此示例中)，以上命令也可以编写为：",[15,224,225],{},[114,226,227],{"code":227},"ffmpeg -i input.mp4 filter:v \"crop=500-100:300-200\" output.mp4",[15,229,230],{},[38,231],{"alt":232,"src":233},"500X472\u002FDemo-04.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002Fv9ua\u002F500X472\u002FDemo-04.png",[23,235,236],{"id":236},"仅裁剪左右边框",[15,238,239],{},[114,240,241],{"code":241},"ffmpeg -i input.mp4 filter:v \"crop=iw-200\" output.mp4",[15,243,244],{},[38,245],{"alt":246,"src":247},"500X663\u002FDemo-05.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002FDVjq\u002F500X663\u002FDemo-05.png",[23,249,250],{"id":250},"仅裁剪顶部和底部边框",[15,252,253],{},[114,254,255],{"code":255},"ffmpeg -i input.mp4 filter:v \"crop=iw:ih-200\" output.mp4",[15,257,258],{},[38,259],{"alt":260,"src":261},"500X470\u002FDemo-06.png","https:\u002F\u002Fimg.51shazhu.com\u002Fautoupload\u002FZ3wg1auvHGH_fxQcOFgj2SfNcKcqEnRmcljopnyJoMs\u002F20250731\u002Frz8s\u002F500X470\u002FDemo-06.png",[10,263,265],{"id":264},"参考文献","参考文献 🎒",[64,267,268],{},[67,269,270],{},[271,272,276],"a",{"href":273,"rel":274},"https:\u002F\u002Fffmpeg.org\u002Fffmpeg-all.html#crop",[275],"nofollow","FFMpeg-crop 官方文档",[10,278,280],{"id":279},"结语","结语 🎉",[15,282,283],{},"FFmpeg 裁剪后的视频是对视频原尺寸有影响的，分辨率没有影响。对于视频跑马灯广告的处理方式，还有前端对播放器进行遮挡等方法，不过使用该方法从片源的角度解决了问题，同时巧妙的避开了大量的解码与转码的过程，虽然观影体验降低，但是不能有敏感的广告才是优先级最高的。",{"title":112,"searchDepth":285,"depth":285,"links":286},4,[287,289,293,294,303,304],{"id":12,"depth":288,"text":13},2,{"id":20,"depth":288,"text":21,"children":290},[291],{"id":25,"depth":292,"text":25},3,{"id":61,"depth":288,"text":62},{"id":97,"depth":288,"text":98,"children":295},[296,297,298,299,300,301,302],{"id":101,"depth":292,"text":101},{"id":118,"depth":292,"text":118},{"id":143,"depth":292,"text":143},{"id":191,"depth":292,"text":191},{"id":213,"depth":292,"text":214},{"id":236,"depth":292,"text":236},{"id":250,"depth":292,"text":250},{"id":264,"depth":288,"text":265},{"id":279,"depth":288,"text":280},[306],"技术","2021-02-23 19:53:37","通过 FFmpeg 批量修剪多个视频的指定位置。",false,"md",null,{"slots":313},{},true,"\u002F2021\u002Fffmpeg_marquee_ads_processing",{"text":317,"minutes":318,"time":319,"words":320},"5 min read",4.035,242100,807,{"title":5,"description":308},{"loc":315},"posts\u002F2021\u002Fffmpeg_marquee_ads_processing",[325],"FFmpeg","story","UIz3VE9kzW680Aghw67rYedUNJaQjnw7xSYQhrMCKr8",[329,334],{"title":330,"path":331,"stem":332,"date":333,"type":326,"children":-1},"做猪呢，最重要的是开心","\u002F2020\u002Fhashfun_first_month_reflection","posts\u002F2020\u002Fhashfun_first_month_reflection","2020-04-01 19:53:37",{"title":335,"path":336,"stem":337,"date":338,"type":326,"children":-1},"为什么抽不到 SSR，原来是这段代码在作祟","\u002F2022\u002Fweight-random","posts\u002F2022\u002Fweight-random","2022-02-16 18:34:07",1781779103066]