我目前在做一个项目,关于短视频压缩的,但是我不知道怎么可以更加良好的将视频转化为更小,但是清晰度不太多的方式,之前我了解了一些 ffmpeg 的方式压缩视频,但是,这些会对视频产生较不好的影响,或者压缩力度不太够. 现在的话,我可以获取到视频的空间复杂度,时间复杂度,及其它的参数.我应该怎样做,可以按照一定的规则.让他给我算出一个参数,让我转换呢
1
rogwan 2019-08-15 16:17:02 +08:00 via Android 2
用时间换质量。时间、压缩率、清晰度之间,找到一个符合自己产品需求的就好,不如,你不需要快速完成转码,那就用高质量的压缩方式,但是很耗时;相反,如果必须很快完成,那就只能降低清晰度要求,或者加大算力,压缩视频很耗 CPU 的。
|
2
augustheart 2019-08-15 16:19:47 +08:00 1
这个算法做出来就可以发表了……
|
3
linhua 2019-08-15 16:22:06 +08:00
AV1 + OPUS
https://trac.ffmpeg.org/wiki/Encode/AV1 |
4
hu8245 2019-08-15 16:23:39 +08:00 1
没有可能啊兄弟,你这违背力学三大定律啊 DXXX
挑一个各方面比较均衡的 codec 比较可行 |
5
expy 2019-08-15 16:28:36 +08:00
常用的编码不就是 H264/H265 么,要低码率下可看,只能调高参数拿 cpu 慢慢压缩了。
开源的编码器有 x264/x265,计算密集型的任务应该不会拿 py 实现。 |
6
awli OP @rogwan 目前是这样的,我很清楚自己的需求,是要求清晰度.压缩率的话,压缩 30%-20%之间都可以.但是如果说我单单指定转码格式为 h264 的话,这个压缩率达不到我的预期.
|
7
awli OP 不知道你们了不了解阿里云的窄带高清,我就是想实现一个类似他的程序.但是会差很多
|
8
BlackBerry999 2019-08-15 16:34:51 +08:00
@awli h265 还不满足吗?
|
9
loveour 2019-08-15 16:38:16 +08:00
各种编码的效率都是有定数的,能到到什么码率什么分辨率什么效果基本也是定的,参数可以调整,但是一种新的编码格式不是随随便便就能研发出来的。如果现有的编码格式调整参数以后满足不了你的需求,那这个问题对个人乃至小的团队应该都是无解的。
|
10
annielong 2019-08-15 16:46:05 +08:00
反正自己设置同样的画面尺寸和压缩率,压缩出来还是不如从小草下的视频
|
11
awli OP @BlackBerry999 嗯,我的团队比较小,但是他们不满足于这样,我已经可以转为 h265 了
|
13
msg7086 2019-08-15 16:50:53 +08:00
x264 和 x265 都可以通过更改量化来丢弃细节数据,达到减少信息熵的目的。
不过因为不知道你原本的视频压缩程度如何,所以没办法给你确切的压缩效果。 (而且不仅我不能,任何人都不能。) 比如说蓝光碟一般会把视频压缩到 5.5%左右,有线电视节目一般会压缩到 4.5%左右,PT 站发布的高清视频一般压缩到 2%,在线网站一般压缩到 0.5%以下。 如果你对 0.5%还不满足,还想着往下压缩 20-30%还不想明显影响清晰度的话,那就老老实实花大钱吧。5 倍 10 倍的时间压 AV1 去,说不定能接近你的要求。 |
14
awli OP @msg7086 我本身的数据目前的数据,'{
'streams': [ { 'index': 0, 'codec_name': 'h264', 'codec_long_name': 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10', 'profile': 'High', 'codec_type': 'video', 'codec_time_base': '3/179', 'codec_tag_string': 'avc1', 'codec_tag': '0x31637661', 'width': 1088, 'height': 512, 'coded_width': 1088, 'coded_height': 512, 'has_b_frames': 2, 'pix_fmt': 'yuv420p', 'level': 31, 'chroma_location': 'left', 'refs': 1, 'is_avc': 'true', 'nal_length_size': '4', 'r_frame_rate': '179/6', 'avg_frame_rate': '179/6', 'time_base': '1/11456', 'start_pts': 0, 'start_time': '0.000000', 'duration_ts': 171648, 'duration': '14.983240', 'bit_rate': '2850063', 'bits_per_raw_sample': '8', 'nb_frames': '447', 'disposition': { 'default': 1, 'dub': 0, 'original': 0, 'comment': 0, 'lyrics': 0, 'karaoke': 0, 'forced': 0, 'hearing_impaired': 0, 'visual_impaired': 0, 'clean_effects': 0, 'attached_pic': 0, 'timed_thumbnails': 0 }, 'tags': { 'language': 'und', 'handler_name': 'VideoHandler' } }, { 'index': 1, 'codec_name': 'aac', 'codec_long_name': 'AAC (Advanced Audio Coding)', 'profile': 'LC', 'codec_type': 'audio', 'codec_time_base': '1/44100', 'codec_tag_string': 'mp4a', 'codec_tag': '0x6134706d', 'sample_fmt': 'fltp', 'sample_rate': '44100', 'channels': 2, 'channel_layout': 'stereo', 'bits_per_sample': 0, 'r_frame_rate': '0/0', 'avg_frame_rate': '0/0', 'time_base': '1/44100', 'start_pts': 0, 'start_time': '0.000000', 'duration_ts': 657399, 'duration': '14.907007', 'bit_rate': '128207', 'max_bit_rate': '128207', 'nb_frames': '644', 'disposition': { 'default': 1, 'dub': 0, 'original': 0, 'comment': 0, 'lyrics': 0, 'karaoke': 0, 'forced': 0, 'hearing_impaired': 0, 'visual_impaired': 0, 'clean_effects': 0, 'attached_pic': 0, 'timed_thumbnails': 0 }, 'tags': { 'language': 'und', 'handler_name': 'SoundHandler' } }], 'format': { 'filename': './1.mp4', 'nb_streams': 2, 'nb_programs': 0, 'format_name': 'mov,mp4,m4a,3gp,3g2,mj2', 'format_long_name': 'QuickTime / MOV', 'start_time': '0.000000', 'duration': '14.984000', 'size': '5595214', 'bit_rate': '2987300', 'probe_score': 100, 'tags': { 'minor_version': '512', 'major_brand': 'isom', 'compatible_brands': 'isomiso2avc1mp41', 'comment': 'vid:v0200fcd0000bjp56e4ttc5jlrp1hp1g', 'encoder': 'Lavf58.20.100' } } }' 但是我目前,转为 h265 压缩他的话大概是 18%左右,我希望不转 AV1,太慢了 |
15
msg7086 2019-08-15 16:54:18 +08:00 1
顺便一提,每一次二压(二次压缩)都会导致肉眼可见的裂化。要得到最高的压缩率,你的片源需要足够好,细节丰富、噪点少,banding 少,然后用 x265 这样的最新技术配合高参数(也就是花大钱搞压片集群)去压制。
(说个题外话,我觉得到最后你会发现你是在浪费时间。) |
18
awli OP @msg7086 我并不是一个视频处理工作者,对不起.我无法给您这样专业的解释.我只是单独的用 ffmpeg 直接转了一个小视频指定的为 libx265 转出来后为 5.37m>4.2M.
|
19
msg7086 2019-08-15 17:02:23 +08:00
x265 --crf 23 --preset slower --tune vcbs -o out.mp4 in.mp4
请用我维护的 Yuuki mod x265 运行。 crf 23 请自己调节,觉得码率高了就调大,觉得码率低了就调小。 |
21
tankren 2019-08-15 17:06:03 +08:00
h265 音频挑个体积小的格式然后解析率弄差一点 反正旧听个响
|
22
lancelock 2019-08-15 17:18:09 +08:00
主流的编码器就那几个,你只能改改参数调节效果,找到一个体积和质量的平衡点。想各个方面都达到完美是不存在的,没有那黑科技。
|
23
lastpass 2019-08-15 17:19:30 +08:00 via Android
没有记错。楼主可以看看小丸工具箱。从里面找到转码的接口。
|
24
douglas1997 2019-08-15 21:22:08 +08:00
Deep learning based 压缩率似乎比 H264 高了 40%,可以参考一下。
|
30
upday7 2019-09-02 22:22:27 +08:00 via iPhone
webm 格式挺不错的
|