惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
美团技术团队
P
Proofpoint News Feed
S
Schneier on Security
P
Privacy International News Feed
Last Week in AI
Last Week in AI
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
S
SegmentFault 最新的问题
Security Latest
Security Latest
月光博客
月光博客
A
About on SuperTechFans
Martin Fowler
Martin Fowler
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
腾讯CDC
Schneier on Security
Schneier on Security
H
Hacker News: Front Page
TaoSecurity Blog
TaoSecurity Blog
NISL@THU
NISL@THU
B
Blog RSS Feed
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
V2EX - 技术
V2EX - 技术
Hacker News - Newest:
Hacker News - Newest: "LLM"
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
W
WeLiveSecurity
Cisco Talos Blog
Cisco Talos Blog
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Proofpoint News Feed
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic
The Last Watchdog
The Last Watchdog
Engineering at Meta
Engineering at Meta
博客园 - 叶小钗
T
Tenable Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LINUX DO - 热门话题
Help Net Security
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog

FFmpeg

[FFmpeg 的实时性太糟糕了] 后续 - V2EX intel qsv ffmpeg 编码问题 - V2EX FFmpeg 的实时性太糟糕了 - V2EX 早就听说过 ffmpeg,但是一直不知道有多牛 - V2EX 使用 FFmpeg 和 GPU 实现最简“图片+无损音频=视频”的方法 - V2EX FFmpegKit has been officially retired. There will be no further ffmpeg-kit releases. - V2EX 有没有精通 ffmpeg 的大佬帮我看下这个视频是怎么制作的 - V2EX 使用 FFmpeg 试图做个人用的转码点播服务端, 但 mpegts 多个切片间音频偶尔不连续? - V2EX 求助大佬们, FFmpeg 指令拉实时流转推的正确姿势到底是什么? - V2EX 在几乎不损失画质的前提下,怎么用 ffmpeg 把 h.264 格式的视频转换成 h.265 格式的? - V2EX 我又来询问 ffmpeg 问题了!这次是硬件加速! - V2EX 大佬们, nodejs 和 Python 做类似 jellyfin 实时转码是不是只能用 ffmpeg 实现了 - V2EX 有大佬开发过 ffmpeg 吗?用 c++调用 ffmpeg API 解码视频流 CPU 占用率高,求解决办法 - V2EX ffmpeg 视频录制切分问题请教 - V2EX 通过 ffmpeg 压缩视频很慢 时间敏感的需求该怎么设置参数呢? - V2EX ffmpeg 处理后视频时长问题 - V2EX 请教一个关于 ffmpeg 的问题 - V2EX 如何下载官方的 ffmpeg 二进制发布 - V2EX 视频模板替换图片,有偿 - V2EX ffmpeg 过滤器 xfade 自定义动画的研究 - V2EX 关于我在 fcp 导入视频时出现的无法解决的问题,请求各位 ffmpeg 大佬的帮忙 - V2EX go + ffmpeg pipe 怎么确定当前转码操作已经结束,可以停了 - V2EX 给人声视频加入背景声音,如何做到自动调整背景的音量 - V2EX 使用 ffmpeg 用 aes 加密 m3u8 文件的疑惑 - V2EX 把歌曲压缩至 7 kbps, FFmpeg 之父发布音频压缩工具 TSAC - V2EX 求助使用 ffmpeg 压缩.mov 视频输出后丢失元数据问题如何解决 - V2EX homebrew 安装的 fmpeg 转码速度比较慢?直接编译可以提高速度吗? - V2EX 使用 nodejs 调用和在 macos 终端里直接调用 ffmpeg 转 m3u8,两者花费时间相差巨大 - V2EX FFmpeg 如何录屏时排除录制指定的某个窗口 - V2EX ffmpeg 最近大版本发布为啥这么快 - V2EX ffmpeg 如何加快解码速度?算力不变的情况下,不在乎解码质量 - V2EX FFmpeg 怎么支持 segment_size 选项? - V2EX 为什么 ffmpeg 的体积会这么大?多复杂的算法编译后也不会有几十 MB 吧? - V2EX FFmpeg 使用 debug_ts 打印全过程的 pts - V2EX ffmpeg 如何更快速的查询视频的"缺帧" - V2EX 如何将 AVS3 8KHDR 视频转码为 HEVC 8KHDR 视频? - V2EX 请教大佬们,在线网站抓到 m3u8 能播放,但是用 ffmpeg 下载的时候 “403 forbidden” 或者 “Output file #0 does not contain any stream” 应该怎么解决 - V2EX FFmpeg 使用 qsv 加速失败 - V2EX 使用 ffmepg 把图片和长音频转换为视频的时候,视频和音频的时间对不上,声音也减少了一半 - V2EX FFmpeg 解码器如何识别码流格式变了? - V2EX ffmpeg 提取音频中有声部分并单独生成文件 - V2EX ffplay 如何并行下载 m3u8 - V2EX ffmpeg 如何压缩 h.265 的视频不丢帧? - V2EX 有没有 win 下已编译好的 FLV 标准支持 H265 的 ffmpeg? - V2EX 为什么有些视频体积这么大但是画质这么差? - V2EX lalserver 流媒体(直播音视频网络传输)服务器 v0.30.1 2022.6.15 - V2EX [求助] mp4 录制,怎么才能不缓冲在内存中 - V2EX ffmpeg 怎么处理 h265 切 h264 的直播流? - V2EX 为什么 ffmpeg 加不上 rotate 旋转参数 - V2EX
如何用 ffmpeg 找到损坏的视频 50 块钱悬赏答案 - V2EX
1054850490 · 2022-09-01 · via FFmpeg
acreti

18

acreti      2022 年 9 月 5 日

@1054850490 原本多少帧,要对比完好无损的原视频。类似于一把梳子,缺了几个针,但基座还在,就是丢帧。帧数量不记录,帧数 FPS 会记录。没有帧错误这么一说,解码 B 帧时要参考后面的帧,但后面的时间戳上没有对应的视频帧,所以解码到此处时出现画面错误,既然后面时间戳上没有视频帧,就会一直显示这个错误画面。不太会解释,不知道你看懂了没有,可以先 Google 一下 I 、P 、B 帧是什么。

ungrown

20

ungrown      2022 年 9 月 5 日

@1054850490 #10 细节处理肯定不会通用的,但正确的思路、模式是能够泛用的。我实践了一下,发现还是卓有成效的,但并不是每个有问题的视频都会输出类似的错误日志、都会输出相同的关键词,需要针对不同类型的损坏添加特征集,一遍一遍地筛查。但毫无疑问,这个过程肯定是自动化的,是比人工快得多的。

首先作为演示,我们需要一个视频作为对照组,为表诚意,当然得选择“同类型”的视频啦,好在我的收藏里是有这类视频的,虽然只有唯一一个:
[직캠_Fancam] 150520 밤비노(BAMBINO) (은솔) 댄스공연 Intro @ 건양대 [nljhfXCcXlE][pharkil 2015].mp4
https://anonfiles.com/D262Hc6dy4/_Fancam_150520_BAMBINO_Intro_nljhfXCcXlE_pharkil_2015_mp4

那么,先用`ffplay -i filename`来播放它,好的,播放正常,播放过程中可以左右 seek 跳转快进快退,都没问题。不过在播放到结尾的时候,画面并没有消失,ffplay 程序也没有退出,底部状态那一行还在飞速变化,我们看看它显示的什么:
91.23 A-V: -7.910 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
91.23 是当前播放位置,其实已经是视频结束了,这个视频就这么长,所以这个数值尽管在跳动,但其实不变了。
A-V 这个数值,看字面意思,莫非是音频轨和视频轨之间的差值?好像是这样的,播放过程中,这个值是一个在 0 附近跳动的微小数值,体现了音画之间的同步差值。但等到播放结束之后,音频肯定停了,但画面还在跑(虽然只有黑屏),于是这个值开始在负轴上一路狂奔,朝着负无穷勇往直前。
这个时候,如果再按右键进行快进,那么自然是“异常”的,虽然程序不会退出,但是会打印红色的错误信息“error while seeking”,嘛,说得通,毕竟后面已经没了,播放结束了。
那么,如果是加速播放呢,用命令`ffplay -i filename -vf "setpts=0.1*PTS"`,跟刚才差不多。唯一不同是,播放过程之中,A-V 就开始往负轴跑,毕竟音画不同步了,这个命令只调快了画面。顺便,setpts=0.1*PTS 按理来说应该是 10 倍速播放,但结果显然不是,只有 2 倍多一点,我不知道为什么,先不管。
那么,如果换用 ffmpeg 转码呢,自然也是没问题的,因为这个视频本身没问题嘛,所以转码过程没任何不良消息。顺便一提,我这台笔记本显卡是 RTX 3050 Ti ,30 系显卡的硬件转码真的是又好又快啊,我用 ffmpeg 自带的 nvenc 编码器,转码倍速能到 20x ,即使不缩小输出画面尺寸也能有 18x 。

好了,对照组完毕,现在来看看实验组样品。

220708 #뮤직뱅크 퇴근길 #비비지 #VIVIZ (#은하 #신비 #엄지) Fancam-宽度 1920-码率 4445.735-编码 avc1.640028-频道名(전람회)-网页地址 olOzlESoEh0.[origin].mkv
出门口的这个视频。
这个视频问题明显,所以输出日志中的错误消息也很明显,一大串的类似下面截取的消息:
[NULL @ 000002e318718d40] missing picture in access unit with size 276
[h264 @ 000002e318771000] Invalid NAL unit size (0 > 5688).
[h264 @ 000002e318771000] Error splitting the input into NAL units.
[NULL @ 000002e318718d40] Invalid NAL unit size (0 > 36089).
[NULL @ 000002e318718d40] missing picture in access unit with size 36093
[h264 @ 000002e3187aec00] Invalid NAL unit size (0 > 7954).
[h264 @ 000002e3187aec00] Error splitting the input into NAL units.
[NULL @ 000002e318718d40] Invalid NAL unit size (0 > 5930).
[NULL @ 000002e318718d40] missing picture in access unit with size 5934
[h264 @ 000002e3187af0c0] Invalid NAL unit size (0 > 21100).
[h264 @ 000002e3187af0c0] Error splitting the input into NAL units.
[NULL @ 000002e318718d40] Invalid NAL unit size (0 > 19469).
[NULL @ 000002e318718d40] missing picture in access unit with size 19473
真的是一大串,不停地刷屏。你看,这种特征明显,关键字固定的错误最好找了对不对? ffplay 和 ffmpeg 跑都是这样的错误,好了,这个类型的损坏视频算是搞定了。

우주소녀 루다 부탁해-宽度 720-码率 897.992-编码 vp9-频道名(지구젤리)-网页地址 flh-q3MpgVg.[origin].mkv
舞台上白色短裙的这个视频。
这个视频特征不明显。ffmpeg 转码(目标容器格式维持原格式,mkv )的时候,一共蹦出来三行警告:
[matroska @ 000001745e3eae40] Invalid DTS: 15100 PTS: 10133 in output stream 0:0, replacing by guess
[matroska @ 000001745e3eae40] Invalid DTS: 25233 PTS: 17700 in output stream 0:0, replacing by guess
[matroska @ 000001745e3eae40] Invalid DTS: 45500 PTS: 35267 in output stream 0:0, replacing by guess
但如果转成 mp4 的话,则完全没提示任何错误警告,仿佛没事一样。
那么如果用 ffplay 来播放呢,也没输出错误警告。
好吧,这种缺帧的视频我们就认怂换个思路,老老实实比对实际帧数和理论帧数吧。

1054850490

29

1054850490      2022 年 9 月 8 日

@ungrown 这倒是,但是还有很多只是缺少 3 帧左右的,一般一个 m3u8 也不止这几帧,我还很纳闷这到底是怎么丢的,
我现在是用 yt-dlp+arid2+ffmpeg 合成来下载的,至于损坏视频是近些时间才发现的,但是用了上面老兄的方法排除的视频,我发现从年初开始就有了,六月初进行了一次系统重装,ffmpeg 又更新到最新版本了,但是六月之后也出现了损坏视频的情况,我还是得发帖到 yt-dlp 社区看看有没有人类似的情况

ungrown

30

ungrown      2022 年 9 月 9 日

@1054850490 #29
我没有用 yt-dlp ,我用的 youtube-dl ,我其实有点想用 dlp 的,但是我已经在原版的基础上魔改了几个提取器的 class ,比如 iwara 的,我又严重依赖这些改动,用着又没啥毛病,我又懒,所以我就没换 dlp 。

我的 youtube-dl 的配置文件:
--cookies ~/.config/youtube-dl/cookies.youtube.txt
-o "%(title)s [%(extractor)s %(id)s][%(uploader)s].%(ext)s"
--yes-playlist
--fragment-retries infinite
-icw
--external-downloader aria2c
--external-downloader-args "-x10 -s10 -k 1M"
-f (299/137)[height<=?1080][fps<=60]+(m4a/aac)/bestvideo+bestaudio/best
#--socket-timeout 30
#-R infinite

我用自己写的 tg bot 辅助下载,把 url 往 bot 聊天里面一扔就不管了,所以那一大堆下载的视频我并没有挨个仔细检查过。但就我确实打开观看过的那些视频来说,我没有发现肉眼可见的损坏,也许也少了几帧,那这种我肯定是不在乎的。
然后我从油管下载的时候,从来没走过 hls 协议,没看到 m3u8 相关的信息,基本全是 dash mp4 流,一个视频流一个音频流,全是 aria2c 下载的,可能跟我限定了媒体格式有关,就是这行配置`-f (299/137)[height<=?1080][fps<=60]+(m4a/aac)/bestvideo+bestaudio/best`。
从 p 站下的视频倒是经常走 hls ,然后偏偏 aria2 不支持 hls 嘛,然后它就分段下载,哎哟我去那个龟速我就日了,前几天我刚刚研究了这个事情,给 p 站 url 开了一个处理分支加了一点参数,`-f [format_id!*=hls]`,把带 hls 标记的媒体流给排除掉了,终于又可以通过 aria2c 秒速下载了。
hls 真的是坏东西,对下载而言,我个人觉得。

1054850490

31

1054850490      2022 年 10 月 13 日

@ungrown 我算是研究清楚了,我那个视频损坏常发生于磁盘满的情况下,因为 arin2 是分段下载,不是 ts ,是私有的后缀,列如这里有 1 、2 、3 、4 、5 ,五个片段,aria2 下载完成了其中的 1245 ,虽然 3 也创建了,但是因为中间磁盘满了,下载并不完全,但是依旧发生了合成,就会出现中间缺少帧数的情况,如同下图中的情况

中间缺失的就是因为下载过程中下载不完全,却依旧发生了合成导致的结果,我目前还在开着日志尝试捕捉更多信息,但是目前也不知道怎么会发生合成的,我不知道你了不了解 m3u8 ,我不知道如果其中一个 ts ,直接用一个“毫无意义”的程序,比如用一个 exe 程序,改名为其中一个 ts 片段不知道会不会依旧合成