Python 怎样将视频压缩?并且尽量不会影响到清晰度 - V2EX
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
awli

Python 怎样将视频压缩?并且尽量不会影响到清晰度

  •  
  •   awli Aug 15, 2019 6978 views
    This topic created in 2467 days ago, the information mentioned may be changed or developed.

    视频压缩

    项目详情

    我目前在做一个项目,关于短视频压缩的,但是我不知道怎么可以更加良好的将视频转化为更小,但是清晰度不太多的方式,之前我了解了一些 ffmpeg 的方式压缩视频,但是,这些会对视频产生较不好的影响,或者压缩力度不太够. 现在的话,我可以获取到视频的空间复杂度,时间复杂度,及其它的参数.我应该怎样做,可以按照一定的规则.让他给我算出一个参数,让我转换呢

    30 replies    2019-09-02 22:22:27 +08:00
    rogwan
        1
    rogwan  
       Aug 15, 2019 via Android   2
    用时间换质量。时间、压缩率、清晰度之间,找到一个符合自己产品需求的就好,不如,你不需要快速完成转码,那就用高质量的压缩方式,但是很耗时;相反,如果必须很快完成,那就只能降低清晰度要求,或者加大算力,压缩视频很耗 CPU 的。
    augustheart
        2
    augustheart  
       Aug 15, 2019   1
    这个算法做出来就可以发表了……
    linhua
        3
    linhua  
       Aug 15, 2019
    hu8245
        4
    hu8245  
       Aug 15, 2019   1
    没有可能啊兄弟,你这违背力学三大定律啊 DXXX
    挑一个各方面比较均衡的 codec 比较可行
    expy
        5
    expy  
       Aug 15, 2019
    常用的编码不就是 H264/H265 么,要低码率下可看,只能调高参数拿 cpu 慢慢压缩了。

    开源的编码器有 x264/x265,计算密集型的任务应该不会拿 py 实现。
    awli
        6
    awli  
    OP
       Aug 15, 2019
    @rogwan 目前是这样的,我很清楚自己的需求,是要求清晰度.压缩率的话,压缩 30%-20%之间都可以.但是如果说我单单指定转码格式为 h264 的话,这个压缩率达不到我的预期.
    awli
        7
    awli  
    OP
       Aug 15, 2019
    不知道你们了不了解阿里云的窄带高清,我就是想实现一个类似他的程序.但是会差很多
    BlackBerry999
        8
    BlackBerry999  
       Aug 15, 2019
    @awli h265 还不满足吗?
    loveour
        9
    loveour  
       Aug 15, 2019
    各种编码的效率都是有定数的,能到到什么码率什么分辨率什么效果基本也是定的,参数可以调整,但是一种新的编码格式不是随随便便就能研发出来的。如果现有的编码格式调整参数以后满足不了你的需求,那这个问题对个人乃至小的团队应该都是无解的。
    annielong
        10
    annielong  
       Aug 15, 2019
    反正自己设置同样的画面尺寸和压缩率,压缩出来还是不如从小草下的视频
    awli
        11
    awli  
    OP
       Aug 15, 2019
    @BlackBerry999 嗯,我的团队比较小,但是他们不满足于这样,我已经可以转为 h265 了
    awli
        12
    awli  
    OP
       Aug 15, 2019
    @loveour 我就是想动态的获取这些参数,现有的 h265 其实可以满足我们的需求的.只是,数据量有些大
    msg7086
        13
    msg7086  
       Aug 15, 2019
    x264 和 x265 都可以通过更改量化来丢弃细节数据,达到减少信息熵的目的。
    不过因为不知道你原本的视频压缩程度如何,所以没办法给你确切的压缩效果。
    (而且不仅我不能,任何人都不能。)

    比如说蓝光碟一般会把视频压缩到 5.5%左右,有线电视节目一般会压缩到 4.5%左右,PT 站发布的高清视频一般压缩到 2%,在线网站一般压缩到 0.5%以下。

    如果你对 0.5%还不满足,还想着往下压缩 20-30%还不想明显影响清晰度的话,那就老老实实花大钱吧。5 倍 10 倍的时间压 AV1 去,说不定能接近你的要求。
    awli
        14
    awli  
    OP
       Aug 15, 2019
    @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,太慢了
    msg7086
        15
    msg7086  
       Aug 15, 2019   1
    顺便一提,每一次二压(二次压缩)都会导致肉眼可见的裂化。要得到最高的压缩率,你的片源需要足够好,细节丰富、噪点少,banding 少,然后用 x265 这样的最新技术配合高参数(也就是花大钱搞压片集群)去压制。

    (说个题外话,我觉得到最后你会发现你是在浪费时间。)
    msg7086
        16
    msg7086  
       Aug 15, 2019
    @awli x265 的量化可以从 0 一直到 51,你说的 18%是开了多少量化跑出来的?
    awli
        17
    awli  
    OP
       Aug 15, 2019
    @msg7086 您可不可以给我一条命令,您说的最新技术配合高参数.
    awli
        18
    awli  
    OP
       Aug 15, 2019
    @msg7086 我并不是一个视频处理工作者,对不起.我无法给您这样专业的解释.我只是单独的用 ffmpeg 直接转了一个小视频指定的为 libx265 转出来后为 5.37m>4.2M.
    msg7086     19
    msg7086  
       Aug 15, 2019
    x265 --crf 23 --preset slower --tune vcbs -o out.mp4 in.mp4

    请用我维护的 Yuuki mod x265 运行。

    crf 23 请自己调节,觉得码率高了就调大,觉得码率低了就调小。
    awli
        20
    awli  
    OP
       Aug 15, 2019
    @msg7086 谢谢指导.
    tankren
        21
    tankren  
       Aug 15, 2019
    h265 音频挑个体积小的格式然后解析率弄差一点 反正旧听个响
    lancelock
        22
    lancelock  
       Aug 15, 2019
    主流的编码器就那几个,你只能改改参数调节效果,找到一个体积和质量的平衡点。想各个方面都达到完美是不存在的,没有那黑科技。
    lastpass
        23
    lastpass  
       Aug 15, 2019 via Android
    没有记错。楼主可以看看小丸工具箱。从里面找到转码的接口。
    douglas1997
        24
    douglas1997  
       Aug 15, 2019
    Deep learning based 压缩率似乎比 H264 高了 40%,可以参考一下。
    exev2
        25
    exev2  
       Aug 16, 2019
    @awli 如果方便的话,我想要楼主的片源试试手,刚好我也一直在用 ffmpeg,看我自己能压成什么样子。
    exev2
        26
    exev2  
       Aug 16, 2019
    @awli 对了,记得把需求详细说一下,要不然没有参考。
    awli
        27
    awli  
    OP
       Aug 16, 2019
    @exev2 邮箱给我,我给你发邮件
    exev2
        28
    exev2  
       Aug 16, 2019
    @awli T0RRNU56TTBNVEkxUUhGeExtTnZiUT09 [base64 解两次]
    awli
        29
    awli  
    OP
       Aug 19, 2019
    @exev2 我取出 100 个视频给你,你看一下,有什么好的建议和想法,咱们多交流
    upday7
        30
    upday7  
       Sep 2, 2019 via iPhone
    webm 格式挺不错的
    About     Help     Advertise     Blog     API     FAQ     Solana     6236 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 61ms UTC 02:17 PVG 10:17 LAX 19:17 JFK 22:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86