『漫游』酷论坛>『影音数码技术学习交流』>[分享]direct264gui 更新11 ..

roozhou@2009-12-15 23:36

几个问题说明一下:

1)IVTC开启后deldup的确会默认打开,但是使用的是不同的默认值,手动指定的话会覆盖这些不同的默认值,所以请不要自动打开
2)关于CTAACEncoder输出路径无效,这个是我的bug。因为输出mp4格式时那个插件要求有文件名,而且不支持unicode,所以我把unicode转成utf8给它,然后就悲剧了(控制台的文件名也是乱码)。下个版本会改成转当前代码页,经测试没有问题。

另外还有几个建议
1)2pass模式使用crf+bitrate,当然需要把crf和bitrate的框分成单独的两个。
2)窗口可以大一点,太拥挤了
3)preset默认slow?难道不是medium?
4)--versioninfo永远开启?加个checkbox吧。
5)不要用tskill终止进程,一是进程不能正常退出,编码到一半的文件不可用,二是滥杀无辜,不用gui启动的x264进程也会被kacha。建议用GenerateConsoleCtrlEvent向进程发送Ctrl+C事件,x264和CTAACEncoder都能正确处理并自动退出。
6)控制台日志刚满了一屏后会闪(scrollbar 出现<->消失),而且CPU占用率过高,特别是CTAACEncoder跑的时候(我的机器上5%~10%),可能会影响编码速度,请适当改进,比如不要过频繁的刷新控件。
7)不要用upx打包,这样会增大7z压缩包的体积。不过不清楚为什么这个exe会这么大,你用的debug?

其他更高级的建议和代码上的事情...下次再说吧
引用

linuxyouxia@2009-12-16 09:48

引用
最初由 roozhou 发布
几个问题说明一下:

1)IVTC开启后deldup的确会默认打开,但是使用的是不同的默认值,手动指定的话会覆盖这些不同的默认值,所以请不要自动打开
2)关于CTAACEncoder输出路径无效,这个是我的bug。因为输出mp4格式时那个插件要求有文件名,而且不支持unicode,所以我把unicode转成utf8给它,然后就悲剧了(控制台的文件名也是乱码)。下个版本会改成转当前代码页,经测试没有问题。

另外还有几个建议
1)2pass模式使用crf+bitrate,当然需要把crf和bitrate的框分成单独的两个。
2)窗口可以大一点,太拥挤了
3)preset默认slow?难道不是medium?
4)--versioninfo永远开启?加个checkbox吧。
5)不要用tskill终止进程,一是进程不能正常退出,编码到一半的文件不可用,二是滥杀无辜,不用gui启动的x264进程也会被kacha。建议用GenerateConsoleCtrlEvent向进程发送Ctrl+C事件,x264和CTAACEncoder都能正确处理并自动退出。
6)控制台日志刚满了一屏后会闪(scrollbar 出现<->消失),而且CPU占用率过高,特别是CTAACEncoder跑的时候(我的机器上5%~10%),可能会影响编码速度,请适当改进,比如不要过频繁的刷新控件。
7)不要用upx打包,这样会增大7z压缩包的体积。不过不清楚为什么这个exe会这么大,你用的debug?

其他更高级的建议和代码上的事情...下次再说吧

谢谢roozhou大的建议

(不过lazarus出来的exe确实有点大
引用

roozhou@2009-12-16 13:48

还有一个功能上的要求,有人向我提出来了,就是加入音频流copy的功能,就是不转码直接用原始音频,通过ffmpeg里的-acodec copy实现

另外如果ffmpeg mux时出错了,请不要删除已经编码好的临时文件
引用

linuxyouxia@2009-12-16 20:55

更新091216

简单改了一下

原本用tskill终止的neroaacenc dshow2wav改为根据进程路径终止
(只要不是在程序路径下的neroaacenc dshow2wav均不会被误杀)

音频临时文件名取输入文件名(当取输入文件名大于8个字符时取前8个字符)+_audio.mp4

可以copy音频流

控制台日志改为750ms更新一次

能简单识别一点控制台输出的错误信息,当某一个任务输出错误信息时自动跳过该任务后续操作 若存在下一个任务,则继续进行后面的任务

自动关机会在程序目录下自动保存控制台日志

可以简单的进行1st pass crf + 2nd pass bitrate(crf值和bitrate值均需要事先指定)

发现bug请汇报(不敢保证及时修复
引用

o97o8l@2009-12-17 17:15

希望输出MP4时能改用MP4BOX封装。。。。。。
用X264直接输出的超过10分钟PSP直接不认。。。。

讨论贴 我自己也验证过
http://popgo.net/bbs/showthread.php?s=&threadid=522465
引用

bsgb666@2009-12-17 22:00

引用
最初由 o97o8l 发布
希望输出MP4时能改用MP4BOX封装。。。。。。
用X264直接输出的超过10分钟PSP直接不认。。。。

讨论贴 我自己也验证过
http://popgo.net/bbs/showthread.php?s=&threadid=522465

当direct264的输入是avs的时候,输出的也是cfr的mp4
那么你的问题的解决办法是给avs加个assumefps(xxxxx,xxxx)
比如片子是23.976fps就用assumefps(24000,1001),29.976fps的则用assumefps(30000,1001),也就是这个分母不要超过60000(roozhou大那听来的),而你如果不指定的话,x264会自己来决定分子分母,当分母超过60000,psp播放就会有问题,这样指定后,x264输出的timescale就会用avs里的那两个值,就不会有问题了,我亲测过,能解决你说的问题。
如果是已经编码好了的mp4,那么要修复也简单,分离出264和aac,然后用mp4box重新封装一次,一般mp4box指定的分母不会很大,你可以用mp4box -info inputfile来看看那个分母

哦,对了,roozhou大的direct264有个能限制分母最大值的参数,你可以去direct264的发布贴看看roozhou大说的
引用

bsgb666@2009-12-17 22:39

楼主,能否在处理完后把ffdshow的注册表项都恢复回来
看了下,rawv没有被恢复回来呵
还有一个问题,direct264如果deldup的话需要宽是16的倍数,高是2的倍数,如果resize输入的不是16的倍数,能否取相近的16的倍数
又发现一个问题,用ffmpeg来把mkv+m4a输出成mp4会报错
但是用ffmpeg来把mkv+m4a输出成mkv却是正确的,ffmpeg是roozhou大编译的那个,这估计是ffmpeg的问题,楼主能否把x264编码输出mp4,然后用mp4box来合成最终mp4

ffmpeg的出错信息:
C:\Users\Administrator\Desktop\test>ffmpeg -i "C:\Users\Administrator\Desktop\[B
TPIG][OPFANS][One_Piece][064][DVDrip][600k]_encoded.mp4.mkv" -vcodec copy -i "C:
\Users\Administrator\Desktop\[BTPIG][_audio.mp4" -acodec copy -y "C:\Users\Admi
nistrator\Desktop\[BTPIG][OPFANS][One_Piece][064][DVDrip][600k]_encoded.mp4"
FFmpeg version SVN-r20373, Copyright (c) 2000-2009 Fabrice Bellard, et al.
built on Oct 27 2009 00:32:00 with gcc 4.4.1
configuration:
libavutil 50. 3. 0 / 50. 3. 0
libavcodec 52.37. 1 / 52.37. 1
libavformat 52.39. 2 / 52.39. 2
libavdevice 52. 2. 0 / 52. 2. 0
libswscale 0. 7. 1 / 0. 7. 1

Seems stream 0 codec frame rate differs from container frame rate: 60.00 (60/1)
-> 10000.00 (10000/1)
Input #0, matroska, from 'C:\Users\Administrator\Desktop\[BTPIG][OPFANS][One_Pie
ce][064][DVDrip][600k]_encoded.mp4.mkv':
Duration: 00:24:35.30, start: 0.000000, bitrate: N/A
Stream #0.0(eng): Video: h264, yuv420p, 160x120, PAR 1:1 DAR 4:3, 10k tbr, 2
0k tbn, 60 tbc
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\Administrator\Desktop\[BTPIG][
_audio.mp4':
Duration: 00:24:36.77, start: 0.000000, bitrate: 28 kb/s
Stream #1.0(und): Audio: aac, 44100 Hz, stereo, s16, 27 kb/s
Metadata
major_brand : mp42
minor_version : 0
compatible_brands: M4A mp42isomndia
muxer : Nero AAC codec / 1.3.3.0
Output #0, mp4, to 'C:\Users\Administrator\Desktop\[BTPIG][OPFANS][One_Piece][06
4][DVDrip][600k]_encoded.mp4':
Stream #0.0(eng): Video: 0x0021, yuv420p, 160x120 [PAR 1:1 DAR 4:3], q=2-31,
60 tbn, 30 tbc
Stream #0.1(und): Audio: 0x0040, 44100 Hz, stereo, s16, 27 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #1.0 -> #0.1
Press [q] to stop encoding
[NULL @ 0xd60260]error, non monotone timestamps 2 >= 2
av_interleaved_write_frame(): Error while opening file
引用

roozhou@2009-12-17 22:59

ffdshow注册表项可以在编码开始后就恢复
引用

ciey@2009-12-18 18:53

roozhou可以自己做个gui的嘛 特别是在CLI比较稳定没啥更新的情况下
不用avs直接x264确实是很强大,不过使用上如果有gui就好了 省得每次自己写批处理了
LZ的这个我还是比较支持的,希望能好好改进下去~把direct264得强大功能好好发挥出来,我也纳闷为啥界面不搞大点,虽然不需要太花哨的界面,但控件也不能太过拥挤了,还有编译出来的exe有点大,努力优化下吧。
引用

asoon@2009-12-19 05:22

选择出1.MP4,但出的还是1.MP4.MKV,出完MKV程序自动转MP4过程出错。
引用
Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (30000/1001) Input #0, matroska, from 'D:\KSRA54388\3.mp4.mkv': Duration: 00:28:47.55, start: 0.000000, bitrate: N/A Stream #0.0(eng): Video: h264, yuv420p, 700x480, PAR 1:1 DAR 35:24, 29.97 tbr, 20k tbn, 59.94 tbc Output #0, mp4, to 'D:\KSRA54388\3.mp4': Stream #0.0(eng): Video: libx264, yuv420p, 700x480 [PAR 1:1 DAR 35:24], q=2-31, 90k tbn, 29.97 tbc Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop encoding [NULL @ 0x10fd880]error, non monotone timestamps 10008 >= 2001 av_interleaved_write_frame(): Error while opening file
引用

linuxyouxia@2009-12-19 09:10

暂时把临时文件改成和输出容器一致好了

之前临时文件输出mkv是因为mkv输出不必等转换结束就可以播放预览
引用

roozhou@2009-12-19 10:22

引用
最初由 asoon 发布
选择出1.MP4,但出的还是1.MP4.MKV,出完MKV程序自动转MP4过程出错。


你用的是什么版本的ffmpeg,怎么还有non-monotone timestamp的错?
引用

ciey@2009-12-19 10:31

roozhou牛人,刚看到ffmpeg上的激烈讨论,而且还发现QQPlayer违反FFmpeg's license是你创建的~

这里合并输出还是MP4Box好吧,为啥在这个gui下用ffmpeg我没成功合成过。还得仔细去看看,回来再上报什么错误吧。
引用

asoon@2009-12-19 17:14

引用
最初由 roozhou 发布


你用的是什么版本的ffmpeg,怎么还有non-monotone timestamp的错?

http://www.videohelp.com/download/ffmpeg-0.5.7z
我从这里下的= =
应该在哪下?
引用

linuxyouxia@2009-12-19 17:31

引用
最初由 asoon 发布

http://www.videohelp.com/download/ffmpeg-0.5.7z
我从这里下的= =
应该在哪下?

http://sourceforge.net/projects/direct264/files/

Related Programs --> ffmpeg (demuxer_muxer only)
引用

«12345»共5页

| TOP