V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
banxi1988
V2EX  ›  程序员

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

  •  
  •   banxi1988 ·
    banxi1988 · 2017-04-05 21:50:47 +08:00 · 7279 次点击
    这是一个创建于 2795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条回复    2017-06-07 15:22:29 +08:00
    chanssl
        1
    chanssl  
       2017-04-05 22:10:13 +08:00
    为什么要用 adb 来拉文件。。。 MTP 不好么
    ys0290
        2
    ys0290  
       2017-04-05 22:42:26 +08:00 via iPhone
    USB 插到电脑上看不到存储盘吗?
    Arrowing
        3
    Arrowing  
       2017-04-05 22:45:34 +08:00   ❤️ 1
    我上次也遇到类似的问题,结果我发了个在线视频地址过去就完事了。。。
    2333333333333
    如果是本地视频,可以上传到第三方视频平台吧。
    Athrob
        4
    Athrob  
       2017-04-05 22:46:07 +08:00 via iPhone
    为什么不传到腾讯视频再分享?
    xspoco
        5
    xspoco  
       2017-04-05 22:47:41 +08:00
    微信视频的时长最长是多少。。
    orzfly
        6
    orzfly  
       2017-04-05 22:48:39 +08:00
    @chanssl #1
    1. OS X 并不支持 MTP ,虽然可以装 Google 官方的 https://www.android.com/filetransfer/ 应用来传输 MTP
    2. MTP (对我而言)很不稳定(——看个人使用情况,不用讨论)
    hundan
        7
    hundan  
       2017-04-05 22:49:50 +08:00 via Android
    其实,能不能 ffmpeg 再 quicktime 再 ffmpeg 再 q 再 f …重复执行
    manhere
        8
    manhere  
       2017-04-05 22:51:44 +08:00
    安卓手机的话可以弄个 ES 文件管理器,用 FTP 方式管理文件
    nicevar
        9
    nicevar  
       2017-04-05 22:51:54 +08:00   ❤️ 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  
       2017-04-05 22:53:17 +08:00 via iPhone
    上传到优酷 发视频链接最简单
    banxi1988
        11
    banxi1988  
    OP
       2017-04-05 23:00:22 +08:00
    @Arrowing
    @Athrob
    @ichubei
    考虑到是一个比较私密的视频,不方便放到这些视频网站.
    helixzz
        12
    helixzz  
       2017-04-05 23:04:05 +08:00
    @nicevar 这个才是最强的……
    kassadin
        13
    kassadin  
       2017-04-06 00:18:49 +08:00
    我可能做的是假 Android 开发
    ryd994
        14
    ryd994  
       2017-04-06 02:10:43 +08:00   ❤️ 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  
       2017-04-06 04:19:34 +08:00
    adb pull 虽然慢,但是稳定啊
    msg7086
        16
    msg7086  
       2017-04-06 04:52:27 +08:00   ❤️ 1
    压片不用 Handbrake ?
    Valyrian
        17
    Valyrian  
       2017-04-06 06:10:51 +08:00
    @ryd994 crf 是数字越小画质越好。。
    ryd994
        18
    ryd994  
       2017-04-06 06:43:48 +08:00
    @Valyrian 是我记错了……
    我就是记得比默认设置更差的 crf 其实编码出来也不是不能看而已
    xeis
        19
    xeis  
       2017-04-06 07:38:50 +08:00 via Android
    这是顺手破解了 xxtv 的会员啊。。。
    21grams
        20
    21grams  
       2017-04-06 08:42:16 +08:00 via Android
    一个格式工厂就能搞定的事。。。
    bearqq
        21
    bearqq  
       2017-04-06 09:03:33 +08:00
    @nicevar 谁说的 who care ?
    这都能找到老婆,我才是日了狗
    (╯‵□′)╯︵┻━┻
    frank418
        22
    frank418  
       2017-04-06 09:35:56 +08:00
    @nicevar 666
    21grams
        23
    21grams  
       2017-04-06 09:38:08 +08:00 via Android
    @nicevar 难道不应该是赶紧给老婆充上会员吗?你这脑回路清奇啊。
    xcssum
        24
    xcssum  
       2017-04-06 09:38:20 +08:00
    @nicevar 我选择开个会员……
    Chaos11
        25
    Chaos11  
       2017-04-06 10:16:08 +08:00
    9L 信仰不纯阿
    zzcchh
        26
    zzcchh  
       2017-04-06 10:22:53 +08:00 via Android
    @nicevar 如果老婆大人让你破解一下小米视频的会员呢?
    immrwk
        27
    immrwk  
       2017-04-06 10:30:11 +08:00
    原来我的关注点
    差强人意的意思是勉强使人满意
    为什么总有人乱用,不是高考重点词汇吗
    immrwk
        28
    immrwk  
       2017-04-06 10:30:43 +08:00
    @immrwk #28 原谅
    everhythm
        29
    everhythm  
       2017-04-06 11:20:31 +08:00
    额,是不是可以开个 gif 录制下视频,然后发上去

    虽然时间长点。。
    Smirn0ff
        30
    Smirn0ff  
       2017-04-06 12:42:49 +08:00
    大哥 安卓 xposed + 微信视频转发插件!不好用吗?
    msg7086
        31
    msg7086  
       2017-04-07 01:05:52 +08:00
    @ryd994 默认 23 ,其实 28 已经接近不能看了,高频噪点满天飞,低频各种大色块。
    nicevar
        32
    nicevar  
       2017-06-07 15:22:29 +08:00
    @zzcchh 不用,小米的盒子里有一亿你信么? auth 换成测试环境就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2100 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.