ffmpeg连个报错信息上google都搜不到,怎么学习?硬刚全部文档吗

油糕
  • 143

报错信息,官方文档 =》 使我绝望

如题,当我作为新手,想合并视频的,并且加水印的时候,各种搜吧,反正就是能搜到的教材看了一些。官方文档太乱了。
当我使用命令报错的时候,我使用报错信息上google搜的时候,炸了。居然都搜不到同样错误的相关信息网页。这怎么学???猜吗

我想合并、加水印,切片三合一命令,我使用如下命令,然后就是报错google搜不到相关的报错。
ffmpeg官方文档那叫做一个一言难尽。全部看完也未必能懂那些滤镜细节

ffmpeg -i a.mp4 -r 30 -vf "movie=logo.jpg[logo];[in][logo]overlay=x='if(gte(((t-2)*80)-w\,W)\,0\,((t-2)*80)-w)':y=0"  -i 1.mp4 -r 30 -filter_complex "[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]" -map '[v]' -map '[a]' -c:v h264_nvenc as.mp4
Option vf (set video filters) cannot be applied to input url 1.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.
Error parsing options for input file 1.mp4.
Error opening input files: Invalid argument

我使用报错信息-vf/-af/-filter and -filter_complex cannot be used together for the same stream.上google搜,啥都搜不到。

我想学点复杂流处理。结果一个教程都搜不到,这么困难的吗

回复
阅读 300
1 个回答
✓ 已被采纳

淡定,ffmpeg的文档看不懂是正常的,因为它不是一个“傻瓜式”的软件,你看那些参数不明白是因为ffmpeg本身就期望使用者具有多媒体基础知识,包括流、轨道、编码、采样率、帧率等等不一而足,它几乎每个地方都可以修改,而这些东西都需要用户自己处理,比如你的报错就是轨道合并处理的问题。如果你对这些知识一点都不了解的话啃ffmpeg官方文档也是懵逼——它本来就不是面向新手的教程,不会给你一一解释这些专有名词的,这些本来就是用户自己的知识储备。恰好本人大学期间学院限选课就有多媒体概论,所以对于ffmpeg的使用还算是得心应手。

国内对于这些基础知识比较专业的论坛是nmm-hd.org: https://nmm-hd.org/newbbs/ ,国外不用说,大名鼎鼎的doom9: https://forum.doom9.org/ 各种编码器开发者就混迹这个论坛,比如ffmpeg和x264的核心开发者就常年出没这个论坛,在这些论坛的知识库和讨论帖可以学到很多专业的知识储备,平时多看看这些论坛的内容,以后对于什么样的视频处理就都有心得了。

你的问题其实相当好处理,拆分解决分而治之就完事。

第一步合并视频:

假定你的视频是相同分辨率,但是帧率和编码都不同,采用cancat滤镜解决(如果你的视频满足分辨率相同编码也相同,可以直接不转码无损合并,性能更高,质量更好,参考官方文档说明:https://trac.ffmpeg.org/wiki/...

# 重新编码合并视频,以下两个样本分辨率相同,编码不同,帧率不同,不使用VFR,改为CFR,因此用较低帧率,丢帧方式统一合并视频
$ ffmpeg -y -i 1.mkv -i 2.mkv -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" -r 23.976 -vsync 1 out.mp4

第二步加水印:

这个也没什么难度,基本上用overlay滤镜就可以了

$ fmpeg -y -i out.mp4 -i favicon.png -filter_complex "[1]colorchannelmixer=aa=0.5[logo];[0][logo]overlay=main_w-overlay_w-5:5:format=auto,format=yuv420p" out_watermark.mp4

二次编码质量损失严重,因此可以一步到位,合并上述两个命令即可:

$ fmpeg -y -i 1.mkv -i 2.mkv -i favicon.png -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa];[2]colorchannelmixer=aa=0.5[logo];[outv][logo]overlay=main_w-overlay_w-5:5:format=auto,format=yuv420p[wv]" -map "[wv]" -map "[outa]" -r 23.976 -vsync 1 out.mp4

至此合并视频统一加水印搞定,后面你可以继续搞了,至于输出编码什么的这里为了简便就用了ffmpeg默参,你可以根据需要自己调整,切片也是output部分的编码参数配置,后面你自己拼接你的输出参数就行了

你知道吗?

宣传栏