请教:ts文件转成mp4格式,体积小了很多,是参数有问题吗?
828 15
[1 楼] springbell [资深泡菜]
22-4-24 12:35
昨天尝试用ffmpeg程序把一个ts格式的视频转换成mp4格式的,结果原本32.7GB的ts文件,转换后得到的mp4文件才16.8GB,感觉明显不对,是命令行参数没设置正确?命令行如下,我是不想改动任何编码信息的,只是想转换格式:

ffmpeg -i sfg.ts sfg-1.mp4

转换过程中有出错信息见图片:

[16 楼] Trompette [泡菜]
22-4-24 20:56
gar2000 发表于 2022-4-24 19:59
试试mediacoder 免费版
视频 复制
音频 复制


mediacoder ※※上曾经进过 ffmpeg 的耻辱厅(hall of shame)
因为它在底层使用 ffmpeg,但又违反 GPL 协议(不公布更改后的源码,而且把最终产品拿来卖钱,还装作没使用过一样)

为了同行们的面子,ffmpeg 后来关闭了耻辱厅,并且提供了 LGPL 的版本(仍然不要钱)
允许商用闭源软件也链接到 ffmpeg 的运行库
如果商用闭源软件修改了 ffmpeg 的源码,所有修改的部分需要遵守 LGPL 协议的规定,主软件不受影响
[15 楼] gar2000 [老坛泡菜]
22-4-24 19:59
试试mediacoder 免费版
视频 复制
音频 复制
[14 楼] Trompette [泡菜]
22-4-24 18:49
springbell 发表于 2022-4-24 17:35
请教一下,用了 ffmpeg -i sfg.ts -c copy sfg-1.mkv 命令,有出错提示,是下载的源文件有问题吗?


ffmpeg 会自动探测CPU核心并且选择合适的线程。除非核心非常多的情况才会偏离最优的线程数。

中间warning,然后继续的大概率是源有问题,不过通常都可以忽略。

如果只要截取其中一段,用 -ss 开始秒数 -t 时长 就可以了

多媒体的转码分流切割只要有ffmpeg就可以,很多软件本质都是在ffmpeg上套了个图形界面。

[13 楼] 暗淡の月 [泡菜]
22-4-24 17:43
springbell 发表于 2022-4-24 17:37
我是看了网上一个帖子照做的。我的目的是从原视频中截取其中一段视频(一首歌),按那个帖子的说法,ts不能直接截取,要转换到mkv或mp4才能截取,于是我就尝试转换到mp4了。

无损截取ts,用tsMuxer就行,就像Mkvmerge GUI(或MKVToolNix)可无损截取mkv一样 本帖最后由 暗淡の月 于 2022-4-24 17:44 编辑
[12 楼] springbell [资深泡菜]
22-4-24 17:37
等待 发表于 2022-4-24 17:32
HEVC是265的格式,压缩比要比264高,这转码损失大大地啊,还花了时间,划不来。


我是看了网上一个帖子照做的。我的目的是从原视频中截取其中一段视频(一首歌),按那个帖子的说法,ts不能直接截取,要转换到mkv或mp4才能截取,于是我就尝试转换到mp4了。
[11 楼] springbell [资深泡菜]
22-4-24 17:35
Trompette 发表于 2022-4-24 16:29
不注明编码器为 copy (复制源码不变) 的话,ffmpeg 优先根据扩展名匹配默认编码器的默认设置

所以,理论上应该这样写

ffmpeg -i sfg.ts -c copy sfg-1.mp4

看到楼下兄弟提醒,mp4 封装不支持源码中的 DTS,所以没有办法全部复制源码

只能这样写(保留全部源码,只能封装成matroska):

ffmpeg -i sfg.ts -c copy sfg-1.mkv

或者这样写(保留视频源码,用aac重编音频,封装成mp4):

ffmpeg -i sfg.ts -c:v copy -c:a aac sfg-1.mp4


请教一下,用了 ffmpeg -i sfg.ts -c copy sfg-1.mkv 命令,有出错提示,是下载的源文件有问题吗?
[10 楼] 等待 [老坛泡菜]
22-4-24 17:32
springbell 发表于 2022-4-24 17:07
网上下载的视频文件,看文件名,应该是4K.UHDTV.HDR.HEVC格式。


HEVC是265的格式,压缩比要比264高,这转码损失大大地啊,还花了时间,划不来。
[9 楼] springbell [资深泡菜]
22-4-24 17:08
Trompette 发表于 2022-4-24 16:29
不注明编码器为 copy (复制源码不变) 的话,ffmpeg 优先根据扩展名匹配默认编码器的默认设置

所以,理论上应该这样写

ffmpeg -i sfg.ts -c copy sfg-1.mp4

看到楼下兄弟提醒,mp4 封装不支持源码中的 DTS,所以没有办法全部复制源码

只能这样写(保留全部源码,只能封装成matroska):

ffmpeg -i sfg.ts -c copy sfg-1.mkv

或者这样写(保留视频源码,用aac重编音频,封装成mp4):

ffmpeg -i sfg.ts -c:v copy -c:a aac sfg-1.mp4


非常感谢,我去试试。 转换一次要近2小时,真废时间。还想请教:ffmpeg支持多线程吗?
[8 楼] springbell [资深泡菜]
22-4-24 17:07
等待 发表于 2022-4-24 15:38
ts文件是啥压缩格式?印象中好像是MPEG-2。
mp4至少用到H.264。

这个压缩比例我觉得还不够理想,应该可以再小一点。


网上下载的视频文件,看文件名,应该是4K.UHDTV.HDR.HEVC格式。
[7 楼] springbell [资深泡菜]
22-4-24 17:05
Bohnenkaffee 发表于 2022-4-24 15:30
可以试一下封装成mkv,mp4好像一般都要转码。不确定,不过印象中mp4都不是特别大,基本上都是硬字幕。

试试MKVToolNix,我曾经用来整理mkv,可以抽取视频及音轨,看看能不能封装成mp4。


谢谢
[6 楼] springbell [资深泡菜]
22-4-24 17:05
暗淡の月 发表于 2022-4-24 15:04
 楼主说"不想改动任何编码信息的,只是想转换格式",这句话我理解的意思是重新封装视频而不是重新编码视频,用Mkvmerge GUI重新封装为mkv,或者tsMuxer封装为m2ts就好了,这样相比原视频文件来说是无损的,就像ape转为flac那样.
 但楼主的截图显示的是重编码了,编码参数为x264质量很低的默认参数(看截图末尾的i帧p帧avg qp值就可知,即使是10bit要减去10,i帧的23.15,p帧的26.15也太低得厉害了,按我个人的转码要求,别说i,p帧这么低,8bit下的b帧avg qp值低于24我都不愿意),编码方式为crf23,而mp4封装的视频不支持dts音轨,所以音频也被转码为394k的aac,错误提示即与此相关,不过只要播放时声音正常就可以忽略.


原来如此。我是刚刚接触视频转换,还是新手,谢谢了。
[5 楼] Trompette [泡菜]
22-4-24 16:29
不注明编码器为 copy (复制源码不变) 的话,ffmpeg 优先根据扩展名匹配默认编码器的默认设置

所以,理论上应该这样写

ffmpeg -i sfg.ts -c copy sfg-1.mp4

看到楼下兄弟提醒,mp4 封装不支持源码中的 DTS,所以没有办法全部复制源码

只能这样写(保留全部源码,只能封装成matroska):

ffmpeg -i sfg.ts -c copy sfg-1.mkv

或者这样写(保留视频源码,用aac重编音频,封装成mp4):

ffmpeg -i sfg.ts -c:v copy -c:a aac sfg-1.mp4

本帖最后由 Trompette 于 2022-4-24 16:42 编辑
以下内容由 Trompette 于 2022-4-24 17:04 补充
纠误:试过 mp4 封装竟然可以支持 dts

[4 楼] 等待 [老坛泡菜]
22-4-24 15:38
ts文件是啥压缩格式?印象中好像是MPEG-2。
mp4至少用到H.264。

这个压缩比例我觉得还不够理想,应该可以再小一点。
[3 楼] Bohnenkaffee [陈年泡菜]
22-4-24 15:30
可以试一下封装成mkv,mp4好像一般都要转码。不确定,不过印象中mp4都不是特别大,基本上都是硬字幕。

试试MKVToolNix,我曾经用来整理mkv,可以抽取视频及音轨,看看能不能封装成mp4。 本帖最后由 Bohnenkaffee 于 2022-4-24 15:38 编辑
[2 楼] 暗淡の月 [泡菜]
22-4-24 15:04
 楼主说"不想改动任何编码信息的,只是想转换格式",这句话我理解的意思是重新封装视频而不是重新编码视频,用Mkvmerge GUI重新封装为mkv,或者tsMuxer封装为m2ts就好了,这样相比原视频文件来说是无损的,就像ape转为flac那样.
 但楼主的截图显示的是重编码了,编码参数为x264质量很低的默认参数(看截图末尾的i帧p帧avg qp值就可知,即使是10bit要减去10,i帧的23.15,p帧的26.15也太低得厉害了,按我个人的转码要求,别说i,p帧这么低,8bit下的b帧avg qp值低于24我都不愿意),编码方式为crf23,而mp4封装的视频不支持dts音轨,所以音频也被转码为394k的aac,错误提示即与此相关,不过只要播放时声音正常就可以忽略.