博文

目前显示的是 六月, 2023的博文

FFmpeg连接两个视频后没有声音

视频1: 无声音,由图片生成的视频 视频2: 有声音 使用 anullsrc过滤器 制作无声音频流。滤波器允许您选择所需的通道布局(单声道,立体声,5.1等)和采样率 ffmpeg -y -r 30 -f image2 -loop 1 -i %input% -pix_fmt yuvj420p -t %duration%  -vcodec libx264 %output_tmp% ffmpeg -y -i %output_tmp% -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -c:v copy -shortest %output%

FFmpeg剪辑视频

图片
 原视频: 视频1,时长1分钟 视频2,时长2分钟10秒 片头 片尾 水印,.jpg 封面,.jpg 标题,.jpg 剪辑思路: 将视频1下半部分3/5区域模糊 将模糊后的视频尺寸缩放到和视频2一致 将视频2从中间裁剪出一半宽尺寸的视频 将裁剪的视频提取出关键帧图片 将第一张和最后一张关键帧图片转为5秒视频 将两个5秒视频拼接到裁剪视频的前后 将拼接的视频再与拼接的视频再次拼接,使时长与视频1一致 将模糊后的视频1与拼接后的视频2按左右并列的方式拼接,可同时播放 将左右拼接后的视频添加动态水印,水印随着播放时间移动 将添加水印后的视频与标题拼接 将添加标题后的视频再与片头片尾拼接 将添加片头片尾的视频再添加上封面 使用命令: 模糊 ffmpeg -y -i %input% -filter_complex "[0:v]crop=iw:ih*2/5:0:0[top];[0:v]crop=iw:ih*3/5:0:ih*2/5,boxblur=30[bottom];[top][bottom]vstack" -c:a copy %output% 尺寸 set scale=1920:2160 set input=%1 set output=%~dp1%~n1_%~n0%~x1  ffmpeg -y -i %input% -vf scale=%scale% %output% 中间裁剪 关键帧 set iframe=%~dp1%~n1_%~n0 set input=%1 set output=%~dp1%~n1_%~n0\%~n1_%%03d.jpg md %iframe% ffmpeg -y -i %input% -vf "select='eq(pict_type\,I)'" -vsync vfr %output%  图片转视频 set duration=5 set input=%1 set output=%~dp1%~n1_%~n0.mp4 :-loop 1 :因为只有一张图片所以必须加入这个参数(循环这张图片) :-pix_fmt:指定图片输入格式(有yuv420,yuv444等各种格式) :-t :图片转换成视频的持续时长,单位是秒(S),必须指定该值,否则会无限制生成视频 :-vcodec libx264:生成视频的...

FFmpeg录制视频

  指定的窗口、不包含声音、不包含鼠标 ffmpeg -f gdigrab -draw_mouse 0 -i title=Spectrum out.mpg -y 指定的窗口:title=Spectrum,窗口标题 不包含鼠标:-draw_mouse 0, 默认1 不包含声音:gdigrab 无法录制声音

Youtube视频链接rr4升级rr5

图片
rr4版本的视频链接 ['streamingData']['adaptiveFormats'][0]['url'] rr5版本的视频链接 ['streamingData']['adaptiveFormats'][0][' signatureCipher '] rr4 与 rr5 对比 rr5 暂时无法下载

Twitter视频下载地址分析

图片
 选择(最后一个)码流(比特率 bitrate)大的, 会更清晰 下面对比两个不同比特流下载的视频, 可以看出一个是 1280 * 720, 一个是 640 * 360 转为 2560 * 1440,YouTube频道中推荐的尺寸和长宽比,2560 x 1440像素。 ffmpeg -i D:\迅雷下载\Nt8NMZkS77NWzggL.mp4 -vf "scale=2560:1440" D:\迅雷下载\Nt8NMZkS77NWzggL-2560x1440.mp4

BiliBili如何获取高清视频链接

图片
  只能看 480P 记录一下 有待进一步研究

Youtube上传多视频流测试

图片
 有个大胆的想法 将本地视频, 复制一份,其中一份做模糊处理, 另一份保留原始视频不处理, 将这两个视频合并为一个多轨道(多视频流)视频,时间长度不变,大小翻倍, 默认播放做了模糊处理之后的视频,通过ffplay命令加特殊参数可以播放原始视频, 将此视频上传 Youtube,再下载下来播放,看能否播放原始视频。 下面开始测试: 生成一份模糊视频 ffmpeg -i dbc11.mp4 -filter_complex "[0:v]crop=iw:ih*2/5:0:0[top];[0:v]crop=iw:ih*3/5:0:ih*2/5,boxblur=18[bottom];[top][bottom]vstack" -c:a copy dbc12.mp4 生成多视频流视频 ffmpeg -i dcb11.mp4 -i dbc12.mp4 -map 0:v:0 -map 1:v -map 0:a -map 1:a -c copy -y mixdbc.mp4 播放多视频流视频,默认播放“最佳”的视频 ffplay mixdbc.mp4 指定视频流参数播放 ffplay -vst 0 -i mixdbc.mp4 -fs ffplay -vst 1 -i mixdbc.mp4 -fs 注: 设置多视频流的默认视频流 ffmpeg -i mix5.mp4 -map 0:v:1 -map 0:v:0 -map 0:a -c:v copy -c:a copy -y mix7.mp4 将视频上传到 Youtube https://www.youtube.com/watch?v=JO5CFCaT0Sc 上传完成 将视频下载下来 很遗憾被油管处理了,变成了单个视频流视频 很明显,这个骚操作失败,另寻他法。

FFmpeg 多轨道视频裁剪

图片
多轨道视频裁剪之后变成单轨道 ? ffmpeg -ss 00:00:00 -i mix.mp4 -t 00:01:28 -c copy mix1.mp4 ffplay -vst 0 -i mix1.mp4 -fs ffplay -vst 1 -i mix1.mp4 -fs, Stream specifier 1 does not match any video stream 裁剪命令增加 map 参数,  -map 轨道 0:v 所有 ffmpeg -ss 00:00:00 -i mix.mp4 -t 00:01:28 -map 0:v -vcodec copy mix2.mp4 有两个视频了, 但是没有声音,map 中增加音频参数,两个音频一样,这里只加上第一个音频,播放两个轨道的视频时都会有声音 ffmpeg -ss 00:00:00 -i mix.mp4 -t 00:01:28 -map 0:v -vcodec copy -map 0:a:0 -acodec copy mix3.mp4 如果要保留两个音频,可以这么改 ffmpeg -ss 00:00:00 -i mix.mp4 -t 00:01:28 -map 0:v -vcodec copy -map 0:a -acodec copy mix4.mp4

FFmpeg 多视频轨和多音频轨合并与播放

图片
 将两个视频文件合并成一个视频文件,一个为无码清晰文件,一个为有码模糊文件,默认播放有码视频,通过对播放器 ffplay 特殊设置可以播放无码视频。 ffmpeg -i input_y.mp4 -i input_n.mp4 -map 0:v:0 -map 1:v -map 0:a -map 1:a -c copy -y mix.mp4 ffplay -vst 1 -ast 2 mix.mp4 选择播放视频文件中的哪个视频轨道和音频轨道。 ffprobe mix.mp4 ffplay -i mix.mp4 -fs -vst video_stream_specifier 使用给定的流说明符选择所需的视频流。流说明符在流说明符章节中进行了描述。如果未指定此选项,则选择“最佳”视频流。 ffplay -vst 0 -i mix.mp4 -fs ffplay -vst 1 -i mix.mp4 -fs

FFmpeg去除视频静态水印

图片
截取关键帧图片 ffmpeg -i input.mp4 -vf "select='eq(pict_type\,I)'" -vsync vfr output_%03d.jpg 定位水印位置 使用工具:https://imagej.nih.gov/ij/download.html 预览去水印后的视频 ffplay -f lavfi -i "movie= input .mp4,delogo=x=69:y=108:w=522:h=81:show=1" ffplay -f lavfi -i "movie= input .mp4,delogo=x=609:y=66:w=306:h=141:show=1" 执行去水印 ffmpeg -i input.mp4, -vf " delogo=x=69:y=108:w=522:h=81 " -c:a copy output.mp4 ffmpeg -i input.mp4, -vf "delogo=x=609:y=66:w=306:h=141" -c:a copy output.mp4

FFmpeg裁剪视频及局部模糊

图片
 查看视频信息:  ffprobe '.\咬一口兔娘 - 极乐净土.mp4' 视频裁剪 左右裁剪, 视频的画面部分宽度裁剪为原始宽度的一半,同时调整视频的尺寸 对比不同 crf 压片后的大小和码率,crf默认23, 值越小,码率越大,文件越大 使用 h265 压片,码率最小,文件最小,但是压片时间也最长 ffmpeg -i input.mp4 -filter:v "crop=in_w/2:in_h:0:0,scale=1280:1440" -crf 22 -c:a copy output.mp4 ffmpeg -i input.mp4 -filter:v "crop=in_w/2:in_h:0:0,scale=1280:1440" -crf 22 -c:v libx265 -c:a copy output.mp4 ffmpeg -i input.mp4 -filter:v "crop=in_w/2:in_h:0:0,scale=1280:1440" output.mp4 视频关键帧的位置 如何通过关键帧获取视频时间点 ? ffprobe -select_streams v -show_frames -show_entries frame=pict_type,coded_picture_number -of csv output.mp4 | findstr I 生成截图 本想通过视频关键帧截图,应该截图会更清新? 但是没找方法。 保存关键帧方法, 但看起来图像也不是很清晰,暂不知道原因 ffmpeg -i input.mp4 -vf "select='eq(pict_type\,I)'" -vsync vfr output_%03d.jpg [libx264 @ 000002bd28157380] frame I:348   Avg QP:20.40  size: 46658 [libx264 @ 000002bd28157380] frame P:3842  Avg QP:24.06  size: 22554 [libx264 @ 000002bd28157380] frame B:10708 Avg QP:24.77  size:  2929 图片清晰度...