搜索 社区服务 统计排行 帮助
  • 12944阅读
  • 51回复

怎么用MediaCoder混流视频和音频?

楼层直达
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 15楼 发表于: 2010-07-27
请教一下应当如何开启libass功能?我这全压到画面底下实在是……


确实,刚才真的忘记了呵呵……走direct264的话就没必要拆MKV了,那确实是直接ffmpeg更好
附上命令,希望对LZ能有所帮助吧 X:\……\ffmpeg -i X:\input.mp4 -vcodec copy -i X:\input.mkv -acodec copy X:\output.mp4

级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 16楼 发表于: 2010-07-27
引用
最初由 ivly 发布


为什么不用MKV主要是因为,如果同时有注释字幕和剧情字幕的话
我的MP4只显示注释字幕在画面的下方....


现在已经确定了确实是要二压把字幕渲进去做硬字幕,字幕已经成为了画面的一部分,不再存在显示不出来的问题了呵
(其实显示不出来跟封装是没关系的,即使把字幕提取出来外挂着看,还是在底下的……这是MP4解码芯片本身的局限)

级别: 新手上路
注册时间:
2010-05-19
在线时间:
0小时
发帖:
26
只看该作者 17楼 发表于: 2010-07-27
引用
最初由 辉耀 发布
请教一下应当如何开启libass功能?我这全压到画面底下实在是……


确实,刚才真的忘记了呵呵……走direct264的话就没必要拆MKV了,那确实是直接ffmpeg更好
附上命令,希望对LZ能有所帮助吧 X:\……\ffmpeg -i X:\input.mp4 -vcodec copy -i X:\input.mkv -acodec copy X:\output.mp4


这个命令怎么用?是用direct264这个工具?还是另外要下ffmpeg?
刚才从网上搜到一章帖子是关于direct264的简单用法的(应该是你的方法):
http://popgo.net/bbs/printthread.php?threadid=534856&perpage=19

1pass
D:\direct264\x264.exe --pass 1 --bitrate x --stats "E:\input.stats" --no-cabac --ref 1 --subme 0 --me dia --output NUL E:\input.mkv

2pass
D:\direct264\x264.exe --pass 2 --bitrate x --stats "input.stats" --b-adapt 0 --output E:\1.mp4 E:\input.mkv


我直接把这个复制下来试了一次,除了目录改了一下,X改成800,
第一行命令还弄得出来
出来两个文件:input.stats input.stats.mbtree
第二行命令一闪而过
(在看第一行命令运行的时候,看到有error产生)
ps:我是WIN7系统,有什么影响吗?
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 18楼 发表于: 2010-07-27
ffmpeg要另外下的,这个roozhou大也编译过(我手里就是roozhou大的版本)


抱歉那里是我写漏了,2pass的stats文件没写盘符结果程序找不到……把2pass中间改成--stats "E:\input.stats"(总之就是指向1pass生成的那个)就行了

级别: 新手上路
注册时间:
2010-05-19
在线时间:
0小时
发帖:
26
只看该作者 19楼 发表于: 2010-07-27
最近找教程的时候找到了ffmpeg_svn_r22636.7z
应该就是roozhou大编译的

不过,这单单只是个EXE文件,那难道直接放在D:\
然后打命令
D:\ffmpeg -i D:\input.mp4 -vcodec copy -i D:\input.mkv -acodec copy D:\output.mp4

再运行,就OK了?
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 20楼 发表于: 2010-07-27
D:\ffmpeg -i D:\input.mp4 -vcodec copy -i D:\input.mkv -acodec copy D:\output.mp4

其实想一下就明白了的,整个命令的意思是说:启动D盘根目录下的ffmpeg,输入文件D:\input.mp4并复制视频流(这个视频流就是刚用direct264压好了的),再次输入文件D:\input.mkv并复制音频流(这个是原始的MKV文件),音视频合并输出到D盘根目录,文件名为output.mp4

过程中使用到的文件名&路径自己根据需要更改就行(不过貌似ffmpeg对路径、文件名识别要求比较多……经常会找不到……为了省事还是改成个简单名字在根目录弄吧)

级别: 新手上路
注册时间:
2010-05-19
在线时间:
0小时
发帖:
26
只看该作者 21楼 发表于: 2010-07-27
恩,我试了一下,运行起来了,之后就看怎么自己调试

现在是这个:

1pass
D:\direct264\x264.exe --pass 1 --crf 60 --stats "D:\input.stats" --no-cabac --ref 1 --subme 0 --me dia --output NUL D:\input.mkv

2pass
D:\direct264\x264.exe --pass 2 --crf 60 --stats "D:\input.stats" --b-adapt 0 --output D:\1.mp4 D:\input.mkv

我用的命令行,如上,除了加入盘符以外,我把码率改成质量,不过还是不行

然后,就是ffmpeg的问题了,因为还没有用direct264弄过视频
所以我干脆这样打

D:\ffmpeg -i D:\input.mkv -vcodec copy -i D:\input.mkv -acodec copy D:\output.mp4

视频是出来了,不过音频没出来
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 22楼 发表于: 2010-07-27
我猜一下……LZ拿来实验的那个MKV是ogg或者flac音轨的吧?MP4封装不支持的呃

crf是有范围的,随身设备的话我觉得一般使用20-22附近比较合适(数值越小质量越好);LZ用60大概是想成RMVB或者MediaCoder的“质量”数值了吧……

级别: 新手上路
注册时间:
2010-05-19
在线时间:
0小时
发帖:
26
只看该作者 23楼 发表于: 2010-07-27
引用
最初由 辉耀 发布
我猜一下……LZ拿来实验的那个MKV是ogg或者flac音轨的吧?MP4封装不支持的呃

crf是有范围的,随身设备的话我觉得一般使用20-22附近比较合适(数值越小质量越好);LZ用60大概是想成RMVB或者MediaCoder的“质量”数值了吧……


恩,的确,那个MKV的音轨是OGG的,不过我弄了个LC-AAC音轨,用mediacoder转的,另外,MKV的视频是h264的

D:\ffmpeg -i D:\input.mkv -vcodec copy -i D:\input.m4a -acodec copy D:\output.mp4
还是只出视频,不出声音


至于质量那里,我的确是以为是mediacoder的质量那里了
:rolleyes::o
级别: 新手上路
注册时间:
2010-05-19
在线时间:
0小时
发帖:
26
只看该作者 24楼 发表于: 2010-07-27
恩,自己又试了一次,直接用

D:\ffmpeg -i D:\input.h264 -vcodec copy -i D:\input.m4a -acodec copy D:\output.mp4

成功地弄出来了

另外想问一下,这个命令行可以直接加SRT字幕吗?
还是说另外还要自己压进MP4里面去?


恩...
对于那个1pass和2pass的命令行...
受伤啊...怎么弄都不行
可能是源文件跟命令行有冲突?
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 25楼 发表于: 2010-07-27
呃解决了么……那就好……编辑掉刚才的内容


另外,硬字幕封装到底是MP4还是MKV确实无所谓的,还是mkvtoolnix出MKV吧……毕竟有个GUI总是好的,方便快捷……

级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 26楼 发表于: 2010-07-27
引用
最初由 ivly 发布
恩,自己又试了一次,直接用
D:\ffmpeg -i D:\input.h264 -vcodec copy -i D:\input.m4a -acodec copy D:\output.mp4

尽量避免直接导入h264文件,这样出来的mp4可能会有问题(当然也有可能没有问题)。可能的话导入已经封装为mkv/mp4/flv的h264文件。

如果你需要原视频中的视频轨 + 一条单独的音频轨,需要在ffmpeg的命令行里加上-map命令指定需要的轨道,不然会rp(默认的对应规则我也搞不清)

比如原始mkv里是H264+vorbis,然后有个单独的m4a

ffmpeg -i video.mkv -i audio.m4a -vcodec copy -acodec copy -map 0:0 -map 1:0 output.mp4

这里-map 0:0 表示第一个文件里的第一条轨道(h264视频),-map 1:0表示第二个文件里的第一条轨道(aac音频)。如果输入是视频+音频的mp4,有可能第一条轨道是音频,所以第一个-map 0:0要改成-map 0:1,这个会比较郁闷。
为什么第一从0开始?因为C程序员都喜欢从0开始计数。
级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 27楼 发表于: 2010-07-27
发了两遍
级别: 新手上路
注册时间:
2010-05-19
在线时间:
0小时
发帖:
26
只看该作者 28楼 发表于: 2010-07-28
现在弄出来的MP4有视频,有声音,没字幕
AVS+ffmpeg的办法也加不进字幕
有什么办法或者工具硬压字幕进MP4又不损画质的?
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 29楼 发表于: 2010-07-28
开FFDshow的字幕功能走direct264、direct264命令里加入--sub或者AVS用textsub都行啊

快速回复

限150 字节
上一个 下一个