用 FFMPEG 下载的直播视频,按了 Ctrl+C 之后,保存的 mp4 视频无法播放。

2020-11-03 18:22:08 +08:00
 oroKAKA

用 FFMPEG 下载的直播视频,按了 Ctrl+C 之后,保存的 mp4 视频无法播放。 文件时有数据的,应该是最后的完结程序没有正常运行。 请问有办法让他恢复正常吗?或者播放。 谢谢。

文件样本: https://25.gigafile.nu/1110-da2e1a71fe6ef6dd5df45ff69c7f5270a 点击 [ master_2000.mp4 ] 就可以下载

2862 次点击
所在节点    程序员
21 条回复
ungrown
2020-11-03 19:45:39 +08:00
链接没能成功打开,用奶牛快传吧
newmlp
2020-11-03 19:48:19 +08:00
mp4 的头部信息一般保存在文件尾部
Anig
2020-11-03 19:50:06 +08:00
用的什么系统,可以用 mediainfo 看一下视频编码? ffmpeg 什么命令?其实跟 Ctrl + C 和 按 q 结束差别不大,我猜测应该需要转一下码 ,Google:ffmpeg to 420 。不管什么格式,多半用 VLC Player 可以打开。
ETiV
2020-11-03 20:12:03 +08:00
用 ffplay 试一下,那个东西很强的
feast
2020-11-04 02:05:36 +08:00
可以修复,有个项目
oroKAKA
2020-11-04 09:24:06 +08:00
@ungrown
https://cowtransfer.com/s/4ad0bbd1d3bc40
提取码:814632
不好意思,昨晚回去忙着玩 quest2 把这事给忘了。
oroKAKA
2020-11-04 09:37:30 +08:00
@newmlp
不好意思,其实我不是程序员。
所以我不是很懂头部文件是什么。我研究一下。
- -公司的程序员甩给我一句,有点麻烦就放弃我了。

@Anig
谢谢。
VLC 打不开。我研究一下那些指令怎么用。
命令是
ffmpeg -i https://ntv2.akamaized.net/hls/live/2013923/NASA-NTV2-HLS/master_2000.m3u8 -c copy output11.mp4

@ETiV @feast
谢谢 我研究一下。
newmlp
2020-11-04 10:05:47 +08:00
看了一下,你这个文件丢掉了 MP4 中最重要的 moov 结构,这个一般是最后写入文件的,强制终止可能程序没来得及写入这个东西,可以完整录制一个相同源的 MP4 文件,让后替换 moov 结构试一下
weipt
2020-11-04 10:14:51 +08:00
文件无法下载,不能播放是指在网页上不能播放还是用任何浏览器都不能播放呢
h4de5
2020-11-04 10:37:37 +08:00
streamlink
ungrown
2020-11-04 10:41:11 +08:00
https://github.com/SuslikV/untrunc-w
你需要一个正常完整的视频作为“参考”,这个参考视频的参数应当与破损视频一致或者差不多,比如来自同一台摄影设备,同一个录屏软件,同一组输出参数设置,诸如此类的一致性方可作为参考
Anig
2020-11-04 10:46:50 +08:00
奇了怪了,我这边( Linux 系统)用完全一样的 ffmpeg 命令下载的就可以打开,是不是三个 NASA 宇航员在那接受采访?

从你牛奶快传那里下载的是损坏过的。
oroKAKA
2020-11-04 11:07:56 +08:00
@newmlp
哇,谢谢~

@weipt
都不能播放。
文件链接可以看 5L 。

@h4de5
不好意思,不太懂。
我研究一下。

@ungrown
谢谢。

@Anig
是的。但我按了 Ctrl+C 强制结束,似乎强制结束出错了。
应该是 8 楼 newmlp 说的,少了 moov 结构。
我在找修复损坏文件的方法。
ungrown
2020-11-04 11:19:03 +08:00
@oroKAKA #13
untrunc-w 就是修复工具,只不过它需要一个完整的参数一致或接近的视频文件作为参考
linux 下直接用 untrunc 就行,untrunc-w 是 Windows 中可用的版本
简单的命令行工具,除非你看不懂它的英文说明
oroKAKA
2020-11-04 14:11:27 +08:00
@ungrown 多谢回答。问了一下程序员朋友,似乎这个项目有点旧,需要自己编 ffmpeg 的库,目前打算放弃了。
ungrown
2020-11-04 14:46:28 +08:00
@oroKAKA #15 不是有编译好的.exe 文件直接下载吗
oroKAKA
2020-11-04 17:30:13 +08:00
@ungrown
[有 exe,但是是这个 exe 需要依赖的库没有,要自己编译库,还是特定版本的,他自己也有说明是 2017 年版本的。]
他这样回复我。我已经看懵了。
ungrown
2020-11-04 22:00:55 +08:00
@oroKAKA #17 这得怪我
我是从 videohelp 站上搜到这个软件的,却误以为 github 上的更值得优先选择
你试试下面这个页面提供的,应该是可用的
https://www.videohelp.com/software/MP4-Repair-untrunc-GUI
oroKAKA
2020-11-05 11:12:25 +08:00
@ungrown
哇,谢谢~确实可以用。
不过效果可能有点不如人意。
绿幕,卡顿很严重。
打算放弃了。
ungrown
2020-11-05 12:12:18 +08:00
@oroKAKA #19 视频文件其实可以看成一个个数据通道,每个通道里面塞满了大量小小的封包在跑动,视频流里面的那些封包描述了视频最最基本的记录单位,无数小包最终描述出了一幅幅画面,和其中包含的变化。
从宏观上看,这些数据包在排列上具有一定的规律性,但是凑近了看会发现有很多随机性,谁先谁后、谁大谁小,不一定的,所以需要一些额外的数据作为一个索引,一张可以查询的表格,这样解码器才能按照正确的空间顺序组装这些小封包,就跟拼图一样,要么早就知道每块的位置,要么猜出来。
所以才需要一个“参考”文件,在参数一致性较高的情况下,两个视频流中的封包排列大概率具有共性,找出这些共性,就可以猜测每一块的位置了,等于是要把那个丢失的索引表给猜出来。
那毫无疑问不可能全部猜出来的,没猜出来的部分,就会被解码器输出为卡顿丢帧、画面破碎、颜色块缺失花屏,就跟磁带光碟受损后上面的视频播放时出现的现象类似。
视频坏了就是坏了,想完全还原是不可能的,能猜出多少算多少。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/721487

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX