(只是水贴)原来mp4容器能容纳其他编码格式以及其他内容
dwing吧
全部回复
仅看楼主
level 7
wangdl_100a 楼主
先结论,再过程。
我以前只是知道mp4容器能放x264/avc+aac音频。
现在看起来可以放mpeg系列的视频和其他音频,比如mp3。
推论:某些源是avi容器,喂给编码软件但不吃,用ffmpeg封装为mp4或可解决问题。
我以前只知道用mkvtoolnix-gui封装为mkv。用什么容器封装,取决于最终期望保存的容器
以下是 整个事件的过程,“太长不看”党可以略过了。视频的信息我贴在2楼。
================================================
我得到个 源是avi容器的视频,打算 弄成mp4 或者 mkv,顺便减小体积,便于流转。
这是一段游戏录像。别人发给我看的,我只是随手尝试一下压制,没想到这竟是麻烦的开端
avs里用的L-SMASH,视频部分x264成功编码。
音频喂给qaac,结果不好使,根据过去经验,用mkvtoolnix-gui封装mkv,再喂给qaac,成功编码。
混流后发现,音画不同步,声音晚一秒。
更新播放器(mpc-hc),然后再检查源视频,发现源视频播放是正常的。再次重新封装,延迟改为-1000ms。这样之后,前面播放是正常,但结尾好几秒没声音,再次检查源视频,结尾正常,有声音。而且 源视频 整个都是正常的,没有音画不同步的情况。
2017年02月25日 09点02分 1
level 7
wangdl_100a 楼主
之后折腾了许久,我拖动了混流后视频的进度条,发现5分钟处明显的表现出 声音晚了一秒,12分钟左右就几乎同步了,之后基本上一直同步。
这一段时间不同步,然后慢慢同步的诡异情况我是没辙了。
我之后又检查了一下源视频的信息。我觉得我一开始就不该开始压制。
源视频 视频和音频的时间就不同,我折腾个什么劲儿啊。。。。
2017年02月25日 09点02分 2
level 13
楼主实在太可爱了。的确有些时候遇到的问题深究之后可能令人更加无语。
2017年02月25日 12点02分 3
如果一开始发现音画长度不同,那这视频根本没处理的必要,直接扔的。一开始并没发现,才有之后的一系列的事儿。所以标题写了,只是水贴。
2017年02月25日 17点02分
@wangdl_100a 的确如此,不过有时候没认真确定又压制一次,然后依然老问题。这个时候一般都会对比源的。话说这类源还是遇到过一些的。唉
2017年02月27日 04点02分
@神之幻想乡 这种源 大概对于高手 是小菜一碟吧。像我这样只会抄抄avs用别人参数的渣渣,遇到这种源真的是 直接放弃好。
2017年02月27日 05点02分
@wangdl_100a 应该是自己能力不足吧。某些达人都有修复损坏源的能力。自己最多对比下别人的参数,自己有空琢磨下,再不行再看看相关资料,术业有专攻啊。
2017年02月27日 09点02分
level 13
mp4box的格式支持信息:
Supported raw formats and file extensions:
NHNT .media .nhnt .info
NHML .nhml (opt: .media .info)
MPEG-1-2 Video .m1v .m2v
MPEG-4 Video .cmp .m4v
H263 Video .263 .h263
AVC/H264 Video .h264 .h26L .264 .26L .x264 .svc
HEVC Video .hevc .h265 .265 .hvc .shvc .lhvc .mhvc
JPEG Images .jpg .jpeg
JPEG-2000 Images .jp2
PNG Images .png
MPEG 1-2 Audio .mp3, .mp2, .m1a, .m2a
ADTS-AAC Audio .aac
Dolby (e)AC-3 Audio .ac3 .ec3
AMR(WB) Audio .amr .awb
EVRC Audio .evc
SMV Audio .smv
Supported containers and file extensions:
AVI .avi
MPEG-2 PS .mpg .mpeg .vob .vcd .svcd
MPEG-2 TS .ts .m2t
QCP .qcp
OGG .ogg
ISO-Media files no extension checking
Supported text formats:
SRT Subtitles .srt
SUB Subtitles .sub
VobSub .idx
GPAC Timed Text .ttxt
VTT .vtt
TTML .ttml
QuickTime TeXML Text .xml (cf QT documentation)
Supported Scene formats:
MPEG-4 XMT-A .xmt .xmta .xmt.gz .xmta.gz
MPEG-4 BT .bt .bt.gz
MPEG-4 SAF .saf .lsr
VRML .wrl .wrl.gz
X3D-XML .x3d .x3d.gz
X3D-VRML .x3dv .x3dv.gz
MacroMedia Flash .swf (very limited import support only)
Supported chapter formats:
Nero chapters .txt .chap
2017年02月25日 14点02分 4
没有real,没有微软的wmv vc1,更没有谷歌的vp9,更不会支持多音轨和多字幕,反正人人字幕组都不需要,所以现在取代mkv是人人的菜
2017年02月26日 10点02分
@i990049 支持多音轨和多字幕,关键的不足之处是不支持ass字幕。
2017年02月26日 10点02分
@dwing 那怎么有文章说mp4可以加ass字幕?何况人人现在都是用ass字幕还有简单特效字幕 http://g.pconline.com.cn/x/884/8848439.html
2017年02月26日 16点02分
@i990049 这个是指压到视频里的吧
2017年02月26日 16点02分
level 5
isom(mp42)能塞的东西多着呢……哪怕FLAC现在也能塞进isom里面,FLAC1.3.2新附带了FLAC在isom封装的定义文件,虽然现在mp4封装器还没有跟上……
2017年02月26日 17点02分 5
level 7
wangdl_100a 楼主
有了新发现。
我后来找了一个时间 看起来正常的视频重新压制。
我发现 源视频中,28~31秒的画面。
在压制产物中的26~29秒出现。
我换了旧版的x264重新压制,结果问题依旧。
LoadPlugin("D:\Program Files\megui_dev\tools\lsmash\LSMASHSource.dll")
LWLibavVideoSource("英雄时刻_20170227-00点47分08s.avi")
--preset veryslow --crf 33 --deblock 1:1 --keyint 720 --min-keyint 1 --bframes 6 --ref 6 --aq-strength 0.6 --psy-rd 0.40:0 --opencl --output "%~dpn1_v.mp4" "%~1"
2017年02月27日 06点02分 6
level 7
wangdl_100a 楼主
承接楼上,发现了明确的情况
14秒之前是正常的。
14~16秒是一样的画面,实际过程中是游戏卡住了,画面一直不动,所以录下来是完全相同的画面,持续了2秒左右。
我把视频用megui打开,里面的步骤其实和我之前做的是一样的,用了LSMASHSource.dll。
在预览的过程中,LSMASHSource.dll把那2秒的停顿给弄没了。预览时候,那个停顿就没了。
LSMASHSource.dll居然能吞吃播放时间
2017年02月27日 07点02分 8
level 7
wangdl_100a 楼主
继续 探索,改用FFVideoSource,依旧少了2秒。
最后用了 DirectShowSource.
喂到播放器播放,在14秒的停顿没了,一直播放下去,会始终差2秒。
但把进度条拖动到14秒~16秒之后,基本上就同步了。
难道那2秒,出现了什么特殊情况,以至于这些都不能正常处理啊
2017年02月27日 08点02分 9
如果实在不行,直接发到网上看看他们怎么处理吧。
2017年02月27日 10点02分
这样看的话,有可能是可变帧率,源里面15fps加上又是录屏,可能电脑卡的时候游戏帧率和录制帧率都低了,所以当恒定帧率来压明显就快了,体现就在你说的提前了
2017年02月27日 22点02分
level 11
法1:mkvtoolnix封成mkv,看播放是否正常,如果正常用gmkvextract提取timecodes
法2:avs的源滤镜如果支持写出timecode,则方便直接用它们导出tc文件
压制时x264 --tcfile-in 加timecodes文件地址
2017年02月27日 22点02分 10
ps:如果裸压应该没必要上avs,直接找个打了ffms等patch的mod版x264压(例如小丸内的那只),或者...直接原版x264其实也能压
2017年02月27日 22点02分
level 9
哎 我试过加2个aac
2017年02月28日 03点02分 11
level 7
wangdl_100a 楼主
先把源视频封装为mkv,播放正常,同步。
给出封装后的文件信息:
然后提取 时间码:
得到视频轨道的时间码文件:oritc.txt
写avs如下:
LoadPlugin("D:\Program Files\megui_dev\tools\lsmash\LSMASHSource.dll")
LWLibavVideoSource("英雄时刻_20170227-00点47分08s.mkv",threads=1)
也换用过FFVideoSource
结果大概是这样:
没有顺利开始,这就不知道该咋办了。
@zhuangyzj
2017年02月28日 14点02分 12
level 11
http://komisar.gin.by/old/2744/x264.2744kMod.x86_64.exe
x264直接输入文件和tc,不用过avs
(Syntax: x264 [options] -o outfile infile
输出 -o ,输入放最后,即未指定的第一个就是默认当作输入)
2017年02月28日 23点02分 13
level 7
wangdl_100a 楼主
源视频封装为英雄时刻_20170227-00点47分08s.mkv
结果是这样的:
直接把源文件英雄时刻_20170227-00点47分08s.avi喂给x264,结果如下:
我感觉好像和12楼没啥区别?
你看看方便留个qq。把文件收过去仔细看看?
@zhuangyzj
2017年03月02日 09点03分 14
直接用x264可以输入,不用中间avs4x264
2017年03月02日 10点03分
level 7
wangdl_100a 楼主
真是喜讯,居然开始走了。
现在还不知道结果,等压制完看看 是否正常。
不过 为什么 去掉了avs4x26x.exe -L 能 成功运行了呢?
有这一句失败的原因是啥?
2017年03月02日 11点03分 15
level 5
你又没用avs……上avs4x264干嘛……
2017年03月02日 19点03分 16
1 2 尾页