用 FFMPEG 下载的直播视频,按了 Ctrl+C 之后,保存的 mp4 视频无法播放。 文件时有数据的,应该是最后的完结程序没有正常运行。 请问有办法让他恢复正常吗?或者播放。 谢谢。
文件样本: https://25.gigafile.nu/1110-da2e1a71fe6ef6dd5df45ff69c7f5270a 点击 [ master_2000.mp4 ] 就可以下载
1
ungrown 2020-11-03 19:45:39 +08:00
链接没能成功打开,用奶牛快传吧
|
2
newmlp 2020-11-03 19:48:19 +08:00
mp4 的头部信息一般保存在文件尾部
|
3
Anig 2020-11-03 19:50:06 +08:00 via iPhone
用的什么系统,可以用 mediainfo 看一下视频编码? ffmpeg 什么命令?其实跟 Ctrl + C 和 按 q 结束差别不大,我猜测应该需要转一下码 ,Google:ffmpeg to 420 。不管什么格式,多半用 VLC Player 可以打开。
|
4
ETiV 2020-11-03 20:12:03 +08:00 via iPhone
用 ffplay 试一下,那个东西很强的
|
5
feast 2020-11-04 02:05:36 +08:00
可以修复,有个项目
|
6
oroKAKA OP |
7
oroKAKA OP @newmlp
不好意思,其实我不是程序员。 所以我不是很懂头部文件是什么。我研究一下。 - -公司的程序员甩给我一句,有点麻烦就放弃我了。 @Anig 谢谢。 VLC 打不开。我研究一下那些指令怎么用。 命令是 ffmpeg -i https://ntv2.akamaized.net/hls/live/2013923/NASA-NTV2-HLS/master_2000.m3u8 -c copy output11.mp4 @ETiV @feast 谢谢 我研究一下。 |
8
newmlp 2020-11-04 10:05:47 +08:00
看了一下,你这个文件丢掉了 MP4 中最重要的 moov 结构,这个一般是最后写入文件的,强制终止可能程序没来得及写入这个东西,可以完整录制一个相同源的 MP4 文件,让后替换 moov 结构试一下
|
9
weipt 2020-11-04 10:14:51 +08:00
文件无法下载,不能播放是指在网页上不能播放还是用任何浏览器都不能播放呢
|
10
h4de5 2020-11-04 10:37:37 +08:00
streamlink
|
11
ungrown 2020-11-04 10:41:11 +08:00
https://github.com/SuslikV/untrunc-w
你需要一个正常完整的视频作为“参考”,这个参考视频的参数应当与破损视频一致或者差不多,比如来自同一台摄影设备,同一个录屏软件,同一组输出参数设置,诸如此类的一致性方可作为参考 |
12
Anig 2020-11-04 10:46:50 +08:00
奇了怪了,我这边( Linux 系统)用完全一样的 ffmpeg 命令下载的就可以打开,是不是三个 NASA 宇航员在那接受采访?
从你牛奶快传那里下载的是损坏过的。 |
13
oroKAKA OP |
14
ungrown 2020-11-04 11:19:03 +08:00
@oroKAKA #13
untrunc-w 就是修复工具,只不过它需要一个完整的参数一致或接近的视频文件作为参考 linux 下直接用 untrunc 就行,untrunc-w 是 Windows 中可用的版本 简单的命令行工具,除非你看不懂它的英文说明 |
17
oroKAKA OP |
18
ungrown 2020-11-04 22:00:55 +08:00
@oroKAKA #17 这得怪我
我是从 videohelp 站上搜到这个软件的,却误以为 github 上的更值得优先选择 你试试下面这个页面提供的,应该是可用的 https://www.videohelp.com/software/MP4-Repair-untrunc-GUI |
20
ungrown 2020-11-05 12:12:18 +08:00 2
@oroKAKA #19 视频文件其实可以看成一个个数据通道,每个通道里面塞满了大量小小的封包在跑动,视频流里面的那些封包描述了视频最最基本的记录单位,无数小包最终描述出了一幅幅画面,和其中包含的变化。
从宏观上看,这些数据包在排列上具有一定的规律性,但是凑近了看会发现有很多随机性,谁先谁后、谁大谁小,不一定的,所以需要一些额外的数据作为一个索引,一张可以查询的表格,这样解码器才能按照正确的空间顺序组装这些小封包,就跟拼图一样,要么早就知道每块的位置,要么猜出来。 所以才需要一个“参考”文件,在参数一致性较高的情况下,两个视频流中的封包排列大概率具有共性,找出这些共性,就可以猜测每一块的位置了,等于是要把那个丢失的索引表给猜出来。 那毫无疑问不可能全部猜出来的,没猜出来的部分,就会被解码器输出为卡顿丢帧、画面破碎、颜色块缺失花屏,就跟磁带光碟受损后上面的视频播放时出现的现象类似。 视频坏了就是坏了,想完全还原是不可能的,能猜出多少算多少。 |