2 号下午,老婆拿着一台手机跑过来跟我说,"为什么这个视频发不了微信? " 在她演示给我看的时候,我知道了可能的原因.微信提示"导入失败", 但是实际原因是可能视频过大. 找到要发送的文件一看大小,居然有: 2.48G, 虽然只有 19 分钟左右的长度. 然后我就有了把这个视频发送到微信群上的任务. 不过还好不是修电脑,我想我应该可以搞定.
先把视频传输到电脑上
开始尝试使用蓝牙来传,但是半天没有响应. 然后还是打开开发者模式(用完之后记得关闭) 使用 adb 来传.
adb pull /storage/emulated/0/DCIM/Camera/20170402_151526.mp4
(其实 adb pull 也不怎么快)
初尝 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 的就差不多了. 但是试了几个参数都差强人意.
换用 QuickTime Player 导出有惊喜 这个时候我想起,好像 QuickTime Player 好像也支持将视频导出成小格式. 于是试了下, 选择导出成 480p, 令我很意外的是,从原来的 2.48 G 的视频导出成 480p 的视频,只花了 1 分钟左右的时间 , 最后导出的大小是 大概 500 多 M mov 格式视频.,比 ffmpeg 快多了.
使用 ffmpeg 再压缩
然后再将 QuickTime Player 导出的 mov 格式的视频用 ffmpeg 再压缩一下.
ffmpeg -i 20170402_151526.mov -vcodec libx264 -preset slow 15153.mp4
这个压缩之后只有 100 M 左右了. 查了下微信的限制大概是 25M. 但是再压的话也压不到 25M 以下,毕竟有 19 分钟的长度. 然后我想着把这个视频分 5 段输出.
视频旋转
分段之前先将原来横屏的视频,翻转 90 度. ffmpeg -i 15153.mp4 -vf rotate=PI/2 15153_r.mp4
使用 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
将各分段视频推送到手机上
adb push vp{0,1,2,3,4}.mp4 /sdcard/
推送到手机上是因为没有 WiFi, 需要使用手机流量来发送.(还好我流量够用)
1
chanssl 2017-04-05 22:10:13 +08:00
为什么要用 adb 来拉文件。。。 MTP 不好么
|
2
ys0290 2017-04-05 22:42:26 +08:00 via iPhone
USB 插到电脑上看不到存储盘吗?
|
3
Arrowing 2017-04-05 22:45:34 +08:00 1
我上次也遇到类似的问题,结果我发了个在线视频地址过去就完事了。。。
2333333333333 如果是本地视频,可以上传到第三方视频平台吧。 |
4
Athrob 2017-04-05 22:46:07 +08:00 via iPhone
为什么不传到腾讯视频再分享?
|
5
xspoco 2017-04-05 22:47:41 +08:00
微信视频的时长最长是多少。。
|
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 (对我而言)很不稳定(——看个人使用情况,不用讨论) |
7
hundan 2017-04-05 22:49:50 +08:00 via Android
其实,能不能 ffmpeg 再 quicktime 再 ffmpeg 再 q 再 f …重复执行
|
8
manhere 2017-04-05 22:51:44 +08:00
安卓手机的话可以弄个 ES 文件管理器,用 FTP 方式管理文件
|
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 分!!!冲了一个月的分啊 |
10
ichubei 2017-04-05 22:53:17 +08:00 via iPhone
上传到优酷 发视频链接最简单
|
13
kassadin 2017-04-06 00:18:49 +08:00
我可能做的是假 Android 开发
|
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 才是标准 |
15
NoAnyLove 2017-04-06 04:19:34 +08:00
adb pull 虽然慢,但是稳定啊
|
16
msg7086 2017-04-06 04:52:27 +08:00 1
压片不用 Handbrake ?
|
19
xeis 2017-04-06 07:38:50 +08:00 via Android
这是顺手破解了 xxtv 的会员啊。。。
|
20
21grams 2017-04-06 08:42:16 +08:00 via Android
一个格式工厂就能搞定的事。。。
|
25
Chaos11 2017-04-06 10:16:08 +08:00
9L 信仰不纯阿
|
27
immrwk 2017-04-06 10:30:11 +08:00
原来我的关注点
差强人意的意思是勉强使人满意 为什么总有人乱用,不是高考重点词汇吗 |
29
everhythm 2017-04-06 11:20:31 +08:00
额,是不是可以开个 gif 录制下视频,然后发上去
虽然时间长点。。 |
30
Smirn0ff 2017-04-06 12:42:49 +08:00
大哥 安卓 xposed + 微信视频转发插件!不好用吗?
|