我有一个脚本可以从一个地方获取多个视频块,并将其作为单个视频流式传输到其他地方(到Kodi播放器)。
除了困扰我的一件事之外,一切似乎都运转良好,玩家似乎不知道视频有多长,因此视频播放时总持续时间会增加。
我知道xml文件中视频的持续时间,该文件包含指向所有块的链接,但我不知道如何在第一个块的元数据中写入。
视频编解码器是h264,但我不确定它是否包含在某个容器中,如mp4。
以下是第一个块的ffmpeg -i
输出:
ffmpeg version 3.1.5 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.38)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.1.5 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --disable-lzma --enable-vda
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 41.100 / 57. 41.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 47.100 / 6. 47.100
libavresample 3. 0. 0 / 3. 0. 0
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[mpegts @ 0x7fc3c6000000] start time for stream 0 is not set in estimate_timings_from_pts
Input #0, mpegts, from '/Users/ibra/Desktop/daTgXic4JOI.ts':
Duration: 00:00:17.56, start: 0.000000, bitrate: 1220 kb/s
Program 1
Stream #0:0[0x102]: Data: timed_id3 (ID3 / 0x20334449)
Stream #0:1[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:2[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 150 kb/s
这是在十六进制编辑器中打开的文件的凌乱屏幕截图: https://www.evernote.com/l/AWlILw5PcmVEl4fSFitOfS2M8Wzy1WTVSZc
有关如何在第一个块的元数据中插入视频持续时间的任何建议吗?
我无法下载所有块然后在单个文件中连接,因为这将花费太多时间并且流式传输必须立即。
答案 0 :(得分:3)
容器格式为mpegts。没有标准的方法来编码mpegts(或h.264)的持续时间。所以无论你做什么都将是专有的。您可以将其写入ID3元数据,但随后需要修改kodi来处理此问题。