查看完整版本: [-- [分享]direct264gui 更新110322 --]

『漫游』酷论坛 -> 『影音数码技术学习交流』 -> [分享]direct264gui 更新110322 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

<<   1   2  >>  Pages: ( 2 total )

linuxyouxia 2009-12-05 10:32

[分享]direct264gui 更新110322

http://img181.poco.cn/mypoco/myphoto/20110405/21/447686322011040521175307.jpg

direct264gui110322.7z
http://dl.dbank.com/c02ret07q8

无聊时边学边写 写得比较烂

源代码见direct264 sourceforge.net有兴趣可以自己改

配合roozhou的direct264和ffmpeg (demuxer muxer only)使用:
http://sourceforge.net/projects/direct264/files/
http://bbs.popgo.net/bbs/showthread.php?s=&threadid=494982

编码NeroAAC需要neroAacEnc.exe:
http://www.nero.com/eng/downloads-nerodigital-nero-aac-codec.php

crop&resize需要ffdshow(dshow输入时):
http://www.free-codecs.com/download/FFDshow.htm

yeyunlong 2009-12-05 13:49
........先坐下

zjhray 2009-12-05 16:30
试过了,很好用,谢谢

ciey 2009-12-06 00:21
合并还是用MP4Box和mkvmerge比较好点 我用ffmpeg咋合出来不对呢

ssnake 2009-12-06 00:43
PASCAL啊= =

顺便LS你ffmpeg咋样不对呢= =

bsgb666 2009-12-06 02:01
确实,感觉ffmpeg转封装出来似乎有点问题,可能是我不会用
测试平台是PSP(PC上播放没啥问题)
用x264直接输出mkv,然后用ffmpeg把aac合成进去建立新的mkv,用PSP的PPA软件选择该mkv就死机(当然,这很可能是PPA软件的兼容性问题,不过用mkvmerge合成mkv用PPA播放没问题)。
用x264直接输出cfr的mkv(直接输出mkv是为了能一边压制一边就能预览压制效果),用ffmpeg来加aac合成出新的mp4,但是似乎出来的是vfr,也就是好像有timestamp(我不确定是否真有),用mediainfo显示的fps不是mkv的fps了

a4840639 2009-12-06 02:39
引用
最初由 bsgb666 发布
确实,感觉ffmpeg转封装出来似乎有点问题,可能是我不会用
测试平台是PSP(PC上播放没啥问题)
用x264直接输出mkv,然后用ffmpeg把aac合成进去建立新的mkv,用PSP的PPA软件选择该mkv就死机(当然,这很可能是PPA软件的兼容性问题,不过用mkvmerge合成mkv用PPA播放没问题)。
用x264直接输出cfr的mkv(直接输出mkv是为了能一边压制一边就能预览压制效果),用ffmpeg来加aac合成出新的mp4,但是似乎出来的是vfr,也就是好像有timestamp(我不确定是否真有),用mediainfo显示的fps不是mkv的fps了

direct264的输出文件本来就带时间戳的呀

bsgb666 2009-12-06 03:26
回楼上,不是用的direct264
是我跑题了,不好意思,这主题是direct264,只是看到前面有朋友说起ffmpeg的问题,我就顺便接话了

linuxyouxia 2009-12-15 12:28
更新一下 感谢roozhou大大

264768502 2009-12-15 12:36
=.= 报BUG
点IVTC时..会同时启用另外3个选项

linuxyouxia 2009-12-15 12:40
引用
最初由 264768502 发布
=.= 报BUG
点IVTC时..会同时启用另外3个选项

写的时候就是这样写的

264768502 2009-12-15 12:52
另外...有个小建议...
用neroaac的时候..能否加个判断...大于1是比特率,小于1是Q..

linuxyouxia 2009-12-15 17:36
引用
最初由 264768502 发布
另外...有个小建议...
用neroaac的时候..能否加个判断...大于1是比特率,小于1是Q..

嗯 明天更新一下

atomicink 2009-12-15 20:48
很囧的bug:
没有选择输出文件的地址,于是转换完成后自动删除输出文件,白转了一遍

linuxyouxia 2009-12-15 21:14
引用
最初由 atomicink 发布
很囧的bug:
没有选择输出文件的地址,于是转换完成后自动删除输出文件,白转了一遍

默认输出路径(当输出目录路径无效或选择了“同输入目录”)是在原目录下原文件名后加_encoded 再加输出容器后缀

临时文件是在之前的输出路径后面加.mkv/.aac/.audio.mp4

可以保存一下bat 看看命令行有没有写错的地方

另外roozhou编译的CTAACEncoder有些输出路径似乎无效 如果遇到了这样的情况 确实无法得到最后的文件

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
libavcodec52.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)

bsgb666 2009-12-19 20:29
额,刚发现,mkv+m4a合成到mp4的错误是因为用的ffmpeg太老
刚看了下原来roozhou大已经更新过ffmpeg了,下了最新的没问题

HDvideo 2009-12-20 09:14
请问假如我自定义了命令,那么preset还有效吗?因为我不想用preset的方案

HDvideo 2009-12-20 09:25
引用
最初由 roozhou 发布
还有一个功能上的要求,有人向我提出来了,就是加入音频流copy的功能,就是不转码直接用原始音频,通过ffmpeg里的-acodec copy实现

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


可以copy了吗?假如在不用gui的情况下请问怎么用,因为我不太熟悉ffmpeg,我平时用的是mkvtoolnix,现在可以一次过直接在转换时封装了吗,假如原来的ts里面有多条音轨,又怎么copy呢?

roozhou 2009-12-20 23:56
ffmpeg对ts的支持并不好,我没法保证对ts用copy是否有效

atomicink 2009-12-21 22:02
我想转换后再和ass字幕一起封装成mkv,这个gui转换后自动用ffmpeg封装成mp4,这一步是不是多余的?有没有方法不封装?

另外,控制台日志太长的时候会闪烁,刷新的太厉害了

zjhray 2009-12-23 20:19
反映3个问题
1.一个2pass的问题,当在‘附加命令’里输入参数,1pass也会使用这些参数,1st pass速度大减。建议1pass时使用‘附加命令’中b帧数量和b-adapt的类型,2pass时自动用--b-adapt 0。
2.个人觉得文件的输入输出的界面略显繁琐,既然默认是同目录输出,那checkbox岂不鸡肋。还有最好能记忆上一次用户指定的输出文件夹,并以此为默认输出目录,checkbox才有用处。
3.一些有中文或日文的文件名在视频编码完进入音频编码时会程序终止。
最后谢谢楼主的gui。

roozhou 2009-12-24 00:30
2pass参数的问题,我觉得最好的办法是两个框,允许分别指定参数

264768502 2010-01-05 17:59
设置截取时间没效果

linuxyouxia 2010-01-05 18:11
引用
最初由 264768502 发布
设置截取时间没效果

音频编码是NeroAAC或Copy时无效

264768502 2010-01-05 18:17
测试了下,果然是这样...
做个说明档吧...不然第一次用这个GUI的人都会以为是BUG之类的...

HDvideo 2010-01-06 20:51
为什么最新版里找不到那个很多参数的高级参数设置界面了,请问隐藏在那里了?

talen 2010-01-09 14:44
不太会直接用roozhou的,所以来找GUI
有几个问题想问一下
1.有几个参数不能直接在附加命令修改,不知怎么办
keyint_min,direct
2.出现了几个不常用参数,不知如何去掉
sliced_threads,constrained_intra,wpredp

linuxyouxia 2010-01-09 15:08
x264 --fullhelp

-i, --min-keyint Minimum GOP size [2]

--direct Direct MV prediction mode ["spatial"]
- none, spatial, temporal, auto

--weightp Weighted prediction for P-frames [0]
- 0: Disabled
- 1: Blind offset
- 2: Smart analysis
--constrained-intraEnable constrained intra prediction.

--sliced-threads Low-latency but lower-efficiency threading

Dark-Red 2010-01-12 11:09
CTAAC音频编码开始
Decoding audio stream #0 via DirectShow
E:\01\CM01.avi --> E:\01\temp_923_audio.mp4
进程未响应
任务1终止

想问下这是啥原因?

第一次用这个,求教

linuxyouxia 2010-01-12 12:09
引用
最初由 Dark-Red 发布
CTAAC音频编码开始
Decoding audio stream #0 via DirectShow
E:\01\CM01.avi --> E:\01\temp_923_audio.mp4
进程未响应
任务1终止

想问下这是啥原因?

第一次用这个,求教

换一个音频解码器试试

Dark-Red 2010-01-12 12:57
谢谢解答

换了几次都一样不能

请问有推荐的解码器吗?或是可能其他原因造成的?谢谢了

linuxyouxia 2010-01-12 21:06
引用
最初由 Dark-Red 发布
谢谢解答

换了几次都一样不能

请问有推荐的解码器吗?或是可能其他原因造成的?谢谢了

也可能是DirectVobSub造成的

我测试时遇到过 具体问roozhou大大吧

Dark-Red 2010-01-13 10:17
恩,问题解决了。谢谢

zjhray 2010-01-26 13:34
能否在用ctaac编码的时候加一个功能-aid,来选择编码指定的音轨,谢谢。

linuxyouxia 2010-02-19 02:50
更新一下

部分地方没写完善 bug可能比较多

参照CTAACEncoder源码(其实是照搬) 改了个支持-T -E设置解码时间段的dshow2wav 过几天和源码一起传上来

CTAACEncoder似乎输出路径上限是65个字符?


查看完整版本: [-- [分享]direct264gui 更新110322 --] [-- top --]


Powered by phpwind v8.5 Code ©2003-2011 phpwind
Time 0.032385 second(s),query:3 Gzip disabled