各位大神好: 从网上下载一个电影,发现全是视频是很多个部分,如下的文本:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.629500,
9d1641c081d000000.ts
#EXTINF:4.170000,
9d1641c081d000001.ts
#EXTINF:3.210900,
9d1641c081d000002.ts
#EXTINF:6.421800,
9d1641c081d000003.ts
#EXTINF:0.583800,
9d1641c081d000004.ts
#EXTINF:4.170000,
9d1641c081d000005.ts
我现在已经把各个 ts 文件下载到了本地,单独播放也可以,我使用 ffmpeg 将 ts 转换成了 MP4 文件,然后使用 java 程序将转换的 MP4 文件合并成一个 mp4 文件,发现,合成后的文件只能播放第一个 ts 分片的内容,求解,怎么才能合成正常播放的 MP4 文件。
其实问这个问题的背景是我现在在做一个 java 播放器,由于 javafx 自带的媒体播放器播放的格式支持有限,我想先把网上抓取下来的 ts 文件转成 MP4,然后将多个 MP4 合成一个 MP4,实现边下边播效果。
现在求教各位大神还有什么好的方案。
非常感谢!!!
1
flame90 OP 怎么才能让各位大神看到呢
|
2
InternetExplorer 2019-05-10 10:39:05 +08:00 1
|
3
flame90 OP @InternetExplorer 非常感谢
|
4
berumotto 2019-05-10 12:17:47 +08:00
用 ffmpeg 不能把多个文件合成一个吗 我记得应该能吧
|
5
flame90 OP @berumotto 我的意思不是直接使用 ffmpeg 合成一个,我现在是使用的 java 直接将多个 MP4 文件合成一个会出现问题,你知道这个问题吗
|
6
Lax 2019-05-10 12:51:47 +08:00
ffmpeg -i xxx/xx/xxx/xxx.m3u8 /path/to/xxx.mp4
原始 m3u8 限制的话,也可以参考原来的格式手工写一个。 |
7
0x3f3f 2019-05-10 12:53:15 +08:00 via iPhone
ffmpeg -i "concat:01.ts|02.ts" -f mp4 -strict -2 demo.mp4
|
8
flame90 OP |
9
c4f36e5766583218 2019-05-10 13:46:38 +08:00
下载视频: ffmpeg -i "input.m3u8" -c copy "output.mp4"
裁剪视频: ffmpeg -ss 00:04:31 -to 00:05:01 -i "input.mp4" -c copy "output.mp4" 合并视频: https://trac.ffmpeg.org/wiki/Concatenate#demuxer |
10
goreliu 2019-05-10 13:50:54 +08:00 via iPhone
先合并再转换。
|
11
Lax 2019-05-10 14:08:17 +08:00
"使用 java 合成一个文件" ----??? 你是直接把 mp4 文件首尾相连合并起来的吗?
|
12
flame90 OP |
14
goreliu 2019-05-10 14:30:46 +08:00 via iPhone
@flame90 主流的视频格式一般都支持随下随播(比如把完整的视频文件从中间截断,前边的部分还是能正常播放),所以一边下载一边播放就可以了,如果播放得比下载快就要暂停缓冲了。
|
15
zhs227 2019-05-10 14:33:29 +08:00
容器不一样。TS 文件和 MP4 文件格式不是一样的,要转封装。
|
17
flame90 OP @zhs227 我没有直接把 ts 放到 MP4 文件中,我只是将 ts 转换成 MP4 文件之后,将多个 MP4 文件合成一个出现了播放问题
|
18
ETiV 2019-05-10 14:49:12 +08:00 via iPhone
捂脸🤦♂️,视频处理跟 Java 没关系……
至少不是 concat 文件的关系…… 不是文本文件不要直接 concat 文件内容… #6 就是你想要的: 你先把你看到的文本文件保存下来,存成 xxx.m3u8 ffmpeg -i xxx.m3u8 -c copy video.mp4 这一行就够了,输出的是 video.mp4 就是上面众多 ts 合并后的文件 |
19
flame90 OP |
20
zhs227 2019-05-10 14:58:56 +08:00
两个 mp4 文件 concat 并不能生成一个更大的 mp4 文件
|
21
hws8033856 2019-05-10 15:24:48 +08:00
@flame90 我觉得你要先对音视频文件的格式和编解码处理有一些基础的认识后才来做这个功能……你应该没有文件头和编码数据段的概念吧?
|
22
Lax 2019-05-10 19:13:07 +08:00
这个文档提到 javafx 支持 HLS,你是遇到什么问题了吗?
最好解决一下原始的问题,没必要再搞出一下新的问题。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/media/package-summary.html |
23
mxalbert1996 2019-05-10 21:13:02 +08:00 via Android
我很想问问楼主如果把两张 jpg 图片的内容首尾相连写入同一个文件中的话两张图片的排列是左右还是上下。。。
|
24
flame90 OP @mxalbert1996 肯定打不开,因为两个图片本身不支持分割
|
27
mxalbert1996 2019-05-11 23:42:00 +08:00 via Android
@flame90 你既然知道图片不能直接切两半,那你为什么会觉得视频可以。。。
|
28
flame90 OP @mxalbert1996 我错了,求放过(🤣🤣)
|