V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
banxi1988
V2EX  ›  程序员

记一件好事: "帮我把这个视频发到微信群里"

  •  
  •   banxi1988 ·
    banxi1988 · Apr 5, 2017 · 8095 views
    This topic created in 3313 days ago, the information mentioned may be changed or developed.

    2 号下午,老婆拿着一台手机跑过来跟我说,"为什么这个视频发不了微信? " 在她演示给我看的时候,我知道了可能的原因.微信提示"导入失败", 但是实际原因是可能视频过大. 找到要发送的文件一看大小,居然有: 2.48G, 虽然只有 19 分钟左右的长度. 然后我就有了把这个视频发送到微信群上的任务. 不过还好不是修电脑,我想我应该可以搞定.

    1. 先把视频传输到电脑上 开始尝试使用蓝牙来传,但是半天没有响应. 然后还是打开开发者模式(用完之后记得关闭) 使用 adb 来传. adb pull /storage/emulated/0/DCIM/Camera/20170402_151526.mp4 (其实 adb pull 也不怎么快)

    2. 初尝 ffmpeg 压缩 用手机拍的原始视频,由于没有压缩过体积都很大. 首先我想到用 ffmpeg 来压缩一下. ffmpeg -i 20170402_151526.mp4 -vcodec libx264 -preset slower -crf 28 -acodec libmp3lame -ab 128k 15151.mp4 执行这条命令大概过了一个小时压缩完成,压缩到了 500 多 M,我看了下效果,肉眼看起来没什么差别. 但是还是太大了.然后想着,换用其他参数再试,感觉太慢了, 我想直接在 15151.mp4 这个结果之上再压缩. 首先原来的分辩率是 1920 x1080 发微信用不了这么大,发 480p 的就差不多了. 但是试了几个参数都差强人意.

    3. 换用 QuickTime Player 导出有惊喜 这个时候我想起,好像 QuickTime Player 好像也支持将视频导出成小格式. 于是试了下, 选择导出成 480p, 令我很意外的是,从原来的 2.48 G 的视频导出成 480p 的视频,只花了 1 分钟左右的时间 , 最后导出的大小是 大概 500 多 M mov 格式视频.,比 ffmpeg 快多了.

    4. 使用 ffmpeg 再压缩 然后再将 QuickTime Player 导出的 mov 格式的视频用 ffmpeg 再压缩一下. ffmpeg -i 20170402_151526.mov -vcodec libx264 -preset slow 15153.mp4 这个压缩之后只有 100 M 左右了. 查了下微信的限制大概是 25M. 但是再压的话也压不到 25M 以下,毕竟有 19 分钟的长度. 然后我想着把这个视频分 5 段输出.

    5. 视频旋转 分段之前先将原来横屏的视频,翻转 90 度. ffmpeg -i 15153.mp4 -vf rotate=PI/2 15153_r.mp4

    6. 使用 ffmpeg 分段. for ((i=0;i<5;i++)); do ffmpeg -ss $((i * 230)) -i 15153_r2.mp4 -c copy -t 230 vp$i.mp4; done; 我这里使用了一个 for 循环,其实也可以不用循环,多执行几次就 OK 了. 比如第一段: -ss 0 参数后面表示偏移时间为 0(秒), -t 230 表示时长 230 秒. ffmpeg -ss 0 -i 15153_r2.mp4 -c copy -t 230 vp1.mp4

    7. 将各分段视频推送到手机上 adb push vp{0,1,2,3,4}.mp4 /sdcard/

    推送到手机上是因为没有 WiFi, 需要使用手机流量来发送.(还好我流量够用)

    32 replies    2017-06-07 15:22:29 +08:00
    chanssl
        1
    chanssl  
       Apr 5, 2017
    为什么要用 adb 来拉文件。。。 MTP 不好么
    ys0290
        2
    ys0290  
       Apr 5, 2017 via iPhone
    USB 插到电脑上看不到存储盘吗?
    Arrowing
        3
    Arrowing  
       Apr 5, 2017   ❤️ 1
    我上次也遇到类似的问题,结果我发了个在线视频地址过去就完事了。。。
    2333333333333
    如果是本地视频,可以上传到第三方视频平台吧。
    Athrob
        4
    Athrob  
       Apr 5, 2017 via iPhone
    为什么不传到腾讯视频再分享?
    xspoco
        5
    xspoco  
       Apr 5, 2017
    微信视频的时长最长是多少。。
    orzfly
        6
    orzfly  
       Apr 5, 2017
    @chanssl #1
    1. OS X 并不支持 MTP ,虽然可以装 Google 官方的 https://www.android.com/filetransfer/ 应用来传输 MTP
    2. MTP (对我而言)很不稳定(——看个人使用情况,不用讨论)
    hundan
        7
    hundan  
       Apr 5, 2017 via Android
    其实,能不能 ffmpeg 再 quicktime 再 ffmpeg 再 q 再 f …重复执行
    manhere
        8
    manhere  
       Apr 5, 2017
    安卓手机的话可以弄个 ES 文件管理器,用 FTP 方式管理文件
    nicevar
        9
    nicevar  
       Apr 5, 2017   ❤️ 26
    那天下午,老婆跟几个闺蜜在家看综艺节目,突然跑过来跟我说,“ xxtv 这个要会员才能看呢”,我一看是有预览时间的,应该可以搞定
    1.直接 adb connect 192.168.2.105:5555 连上电视
    2.接着 adb shell tcpdump -p -vv -s 0 -w /sdcard/video.pcap 进行抓包,切换一下视频清晰度之后中断
    3.然后 adb pull /sdcard/video.pcap ,用 wireshark 打开过滤 http 协议竟然直接找到几个 m3u8 地址
    4.打开一个原来的 DLNA 测试工程,代码中写死播放地址,然后运行选择电视直接 push 过去让她们先看着,但是这样每个视频搞一次不是累死?
    5.趁她们看电视的时候直接从系统找到那个 apk ,发现除了混淆外没做什么安全防护,反编译之, java 和 smali 各一份
    6.在 java 代码中分析播放器模块播放进度逻辑部分,很快找到一个 progress 的回调跳转判定
    7.再到 smali 文件定位这个地方,修改跳转逻辑重新打包安装测试没发现问题,速替换掉电视上的包,真是神不知鬼不觉,但是 who care?
    速速回到书房发现世界之树已经被拆了,竟然扣了 14 分!!!冲了一个月的分啊
    ichubei
        10
    ichubei  
       Apr 5, 2017 via iPhone
    上传到优酷 发视频链接最简单
    banxi1988
        11
    banxi1988  
    OP
       Apr 5, 2017
    @Arrowing
    @Athrob
    @ichubei
    考虑到是一个比较私密的视频,不方便放到这些视频网站.
    helixzz
        12
    helixzz  
       Apr 5, 2017
    @nicevar 这个才是最强的……
    kassadin
        13
    kassadin  
       Apr 6, 2017
    我可能做的是假 Android 开发
    ryd994
        14
    ryd994  
       Apr 6, 2017   ❤️ 1
    你这个参数当然慢了
    ffmpeg -i 20170402_151526.mp4 -vcodec libx264 -preset slower -crf 28 -acodec libmp3lame -ab 128k 15151.mp4
    faster 以下压缩效果都差不太多,时间就要爆炸了
    而且你这里也没降分辨率啊, 480p 没多少的
    crf28 也有点过了,默认 23 ,其实 20 都能看的
    音频不要 mp3 , aac 才是标准
    NoAnyLove
        15
    NoAnyLove  
       Apr 6, 2017
    adb pull 虽然慢,但是稳定啊
    msg7086
        16
    msg7086  
       Apr 6, 2017   ❤️ 1
    压片不用 Handbrake ?
    Valyrian
        17
    Valyrian  
       Apr 6, 2017
    @ryd994 crf 是数字越小画质越好。。
    ryd994
        18
    ryd994  
       Apr 6, 2017
    @Valyrian 是我记错了……
    我就是记得比默认设置更差的 crf 其实编码出来也不是不能看而已
    xeis
        19
    xeis  
       Apr 6, 2017 via Android
    这是顺手破解了 xxtv 的会员啊。。。
    21grams
        20
    21grams  
       Apr 6, 2017 via Android
    一个格式工厂就能搞定的事。。。
    bearqq
        21
    bearqq  
       Apr 6, 2017
    @nicevar 谁说的 who care ?
    这都能找到老婆,我才是日了狗
    (╯‵□′)╯︵┻━┻
    frank418
        22
    frank418  
       Apr 6, 2017
    @nicevar 666
    21grams
        23
    21grams  
       Apr 6, 2017 via Android
    @nicevar 难道不应该是赶紧给老婆充上会员吗?你这脑回路清奇啊。
    xcssum
        24
    xcssum  
       Apr 6, 2017
    @nicevar 我选择开个会员……
    Chaos11
        25
    Chaos11  
       Apr 6, 2017
    9L 信仰不纯阿
    zzcchh
        26
    zzcchh  
       Apr 6, 2017 via Android
    @nicevar 如果老婆大人让你破解一下小米视频的会员呢?
    immrwk
        27
    immrwk  
       Apr 6, 2017
    原来我的关注点
    差强人意的意思是勉强使人满意
    为什么总有人乱用,不是高考重点词汇吗
    immrwk
        28
    immrwk  
       Apr 6, 2017
    @immrwk #28 原谅
    everhythm
        29
    everhythm  
       Apr 6, 2017
    额,是不是可以开个 gif 录制下视频,然后发上去

    虽然时间长点。。
    Smirn0ff
        30
    Smirn0ff  
       Apr 6, 2017
    大哥 安卓 xposed + 微信视频转发插件!不好用吗?
    msg7086
        31
    msg7086  
       Apr 7, 2017
    @ryd994 默认 23 ,其实 28 已经接近不能看了,高频噪点满天飞,低频各种大色块。
    nicevar
        32
    nicevar  
       Jun 7, 2017
    @zzcchh 不用,小米的盒子里有一亿你信么? auth 换成测试环境就行了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   838 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 136ms · UTC 19:50 · PVG 03:50 · LAX 12:50 · JFK 15:50
    ♥ Do have faith in what you're doing.