littlepox
帖子: 116
注册时间: 2012-08-26 16:56

【已解决】求一个命令行语句,将一个24bit的双声道flac转换为aac

工具:ffmpeg+neroaacenc
输入:audio.flac,双声道24bit
输出:NeroAAC编码的LC-AAC音频audio.m4a,-q 0.4

求命令行写法,谢谢(不知道如何处理24bit)
上次由 littlepox 在 2012-11-04 8:47,总共编辑 3 次。
头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 求一个命令行语句,将一个24bit的双声道flac转换为aac

ffmpeg對aac默認使用的解碼是16bit而不是float,得手動指定解碼精度,然後默認輸出的pcm仍然是s16的,還得手動加上轉為s24的參數…
其實flac->nero aac最簡單的方法就是eac3to:
[syntax lang="winbatch"]eac3to.exe "input.flac" "output.m4a" -quality=0.4[/syntax]
只要把eac3to.exe, libFLAC.dll和neroAacEnc.exe放在同一個文件夾下就行了。
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。
littlepox
帖子: 116
注册时间: 2012-08-26 16:56

Re: 求一个命令行语句,将一个24bit的双声道flac转换为aac

06_taro 写了:ffmpeg對aac默認使用的解碼是16bit而不是float,得手動指定解碼精度,然後默認輸出的pcm仍然是s16的,還得手動加上轉為s24的參數…
其實flac->nero aac最簡單的方法就是eac3to:
[syntax lang="winbatch"]eac3to.exe "input.flac" "output.m4a" -quality=0.4[/syntax]
只要把eac3to.exe, libFLAC.dll和neroAacEnc.exe放在同一個文件夾下就行了。
非常感谢。。完成了。。。
littlepox
帖子: 116
注册时间: 2012-08-26 16:56

Re: 求一个命令行语句,将一个24bit的双声道flac转换为aac

06_taro 写了:ffmpeg對aac默認使用的解碼是16bit而不是float,得手動指定解碼精度,然後默認輸出的pcm仍然是s16的,還得手動加上轉為s24的參數…
其實flac->nero aac最簡單的方法就是eac3to:
[syntax lang="winbatch"]eac3to.exe "input.flac" "output.m4a" -quality=0.4[/syntax]
只要把eac3to.exe, libFLAC.dll和neroAacEnc.exe放在同一個文件夾下就行了。
另外再请教一下,其实这个工作我是将一个封装了1个avc和3个flac的mkv,分离出视频流和第一个音频流,音频转为无损,然后再封装成mp4(3个flac实在是太占地方了)


mkvextract tracks 1.mkv 0:video.264 1:audio.flac
eac3to "audio.flac" "audio.m4a" -quality=0.4
MP4Box -add "video.264:fps=23.976" -cat "audio.m4a:lang=ja" -v -new "1.mp4"

我觉得eac3to也能分离mkv视频吧,如果前两行直接用eac3to分离出264流,和已经转换的音频流,该怎么写呢?
头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 求一个命令行语句,将一个24bit的双声道flac转换为aac

音频转为无损
如果沒誤解的話,這裡應該是轉為有損?

[syntax lang="winbatch"]eac3to "input.mkv" 2:"audio.m4a" -quality=0.4 || ( echo fail to encode audio & goto exit )
ffmpeg -i "input.mkv" -i "audio.m4a" -c copy -map 0:v -map 1:a "output.mp4" || ( echo fail to mux & goto exit )
del "audio.m4a"
:exit
pause[/syntax]中間文件只有audio.m4a,成功自動刪除

當然這樣的話最好ffmpeg出output.mkv而不是output.mp4,不然因為mkv的timestamp低精度問題,生成的mp4是有fps jitter的,還是需要用timelineeditor之類修正一下,或者需要在第一步出一個.264的中間文件來muxer混流時指定fps,反正都是mkv->mp4過程必要的東西,和這個主題沒關係就不在這裡贅述了…
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。
littlepox
帖子: 116
注册时间: 2012-08-26 16:56

Re: 求一个命令行语句,将一个24bit的双声道flac转换为aac

06_taro 写了:
音频转为无损
如果沒誤解的話,這裡應該是轉為有損?

[syntax lang="winbatch"]eac3to "input.mkv" 2:"audio.m4a" -quality=0.4 || ( echo fail to encode audio & goto exit )
ffmpeg -i "input.mkv" -i "audio.m4a" -c copy -map 0:v -map 1:a "output.mp4" || ( echo fail to mux & goto exit )
del "audio.m4a"
:exit
pause[/syntax]中間文件只有audio.m4a,成功自動刪除

當然這樣的話最好ffmpeg出output.mkv而不是output.mp4,不然因為mkv的timestamp低精度問題,生成的mp4是有fps jitter的,還是需要用timelineeditor之類修正一下,或者需要在第一步出一個.264的中間文件來muxer混流時指定fps,反正都是mkv->mp4過程必要的東西,和這個主題沒關係就不在這裡贅述了…
之所以偏爱mp4是因为它在IOS上较好的兼容性(虽然IOS的AVPlayer能硬解mkv了,但是拖动时候略蛋疼)
谢谢指点了。
头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 【已解决】求一个命令行语句,将一个24bit的双声道flac转换为aac

個人喜好而言我也更偏好mp4,不過mkv->mp4是個很麻煩的過程,主要就是因為mp4將timeline記錄在頭部或者尾部的box內,只對entry point list的timeline按section進行記錄,實際每一幀的timestamp是在播放時由分離器臨時計算出來的,所以不存在精度問題(雖然也產生了分離器計算錯誤時會導致無法精確到幀的風險,譬如Haali和Gabest分離帶B幀的mp4時因為B幀的re-order不準確而出現的DTS->PTS conversion錯誤及1~2幀偏差);而mkv則不在頭部保留timecodes信息,而是在每一幀裡記錄幀長,為了壓縮體積採用了砍timestamp精度的方式,導致如果拿mkv轉成其他格式的話會出現jitter,所以每次看到沒有對這個問題進行修正直接mkv->mp4出來的timecodes就各種蛋疼,像這樣:

代码: 全选

# timecode format v1
Assume 24.390244
0,0,23.809524
1,1,24.390244
2,4,23.809524
5,5,24.390244
6,7,23.809524
8,8,24.390244
9,11,23.809524
一般來說這東西不怎麼影響播放,除非正好有60/1.001fps的幀,然後jitter導致maximum fps超過60fps引起PSP之類的播放不能問題,或者其他比較低劣的對這種timeline不斷變化的情況處理有問題的分離器…

雖然之前閒的時候自己寫了個tctool(原fixtc)來對付這種東西,不過要對轉出來的mp4多一個timelineeditor步驟,或者在不直接轉而是抽raw h264然後mux,都是各種不爽…

而且這個原因導致mp4抽取tc只要讀取頭部box部分,然後轉成tc,瞬間就可以完成;而mkv抽tc必須將整個文件完全讀取一遍以根據每一幀的duration來計算,所以理論上判定mp4是否是vfr只要讀取header就行了,而mkv判定是否為vfr必須對整個文件進行一次parsing,像MediaInfo經過無數次修正之後現在對mp4的vfr判定已經比以前靠譜一些了,但是mkv沒有任何辦法,只能靠取開頭部分數幀(可能的話還可以抽樣取中間數幀來輔助判斷一下)來計算然後猜測…如果沒這個問題的話mkv確實沒有明顯缺點…

話說iOS的播放器一般都比較推薦XBMC?雖然我沒用過水果的移動設備不知道具體如何…
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。
littlepox
帖子: 116
注册时间: 2012-08-26 16:56

Re: 【已解决】求一个命令行语句,将一个24bit的双声道flac转换为aac

这。。看着就头疼了。。。表示一般MP4/MKV互转什么的,基本都是cfr片源,只要指定帧率就没问题了。。。

关于IOS的播放器目前是这么个情况:(xmbc是老早之前的东西了,bug漫天,又要越狱什么的很烦)

1、IOS自带quicktime硬解可以硬解MP4/MOV格式的H.264,最高可以硬解8bit 1080p ref=15(IOS不支持任意分辨率的ref=16),不支持10bit硬解,可预见时间内也没有支持的可能性;

2、之前不支持mkv等容器的硬解,但是最近AVPlayer支持了,能够用quicktime硬解mkv封装的H.264流,并且AVPlayer是为数不多硬解同时能显示字幕的(外挂内嵌都可以,能支持ass格式,虽然高级特效(例如同时间多个字幕条)支持捉襟见肘)

3、MP4/MOV硬解播放时候拉动进度条没问题,但是要当心MP4的封装容器不能太新。之前用megui自动更新的mp4box封装MP4,拖动之后视频总是黑屏,百方研究最后发现用yamb MP4 tools自带的2007年的mp4box就没问题。

4、用AVPlayer 硬解 MKV时候,视频流调用系统硬解,音频流反正flac/vorbis等我试了都没问题。AVplayer并不算昂贵,越狱了想装破解版也是轻而易举,所以基本可以认为IOS目前可以通过第三方软件支持mkv/mp4带字幕硬解了。但是放mkv时候目前拖动会很卡,得卡好几秒钟才能正常播放,而且貌似还没有其他软件跟进。所以现在兼容IOS的视频还是尽量用mp4好。
头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 【已解决】求一个命令行语句,将一个24bit的双声道flac转换为aac

不是mp4格式太新的問題,mp4v2的兼容性很高幾乎沒啥不支持的,mp4box自己有bug罷了…
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。
littlepox
帖子: 116
注册时间: 2012-08-26 16:56

Re: 【已解决】求一个命令行语句,将一个24bit的双声道flac转换为aac

06_taro 写了:不是mp4格式太新的問題,mp4v2的兼容性很高幾乎沒啥不支持的,mp4box自己有bug罷了…
竟然是这个问题。。。我一直以为是IOS太老。。。

话说有时间求帮忙看看avs版块的问题。。按您说的操作了一遍,还是没用。。。另外轻音那种画面如何处理,求建议,求模板。

回到 “音频编码器 / Audio encoder”