【问题标题】:how to extract elementary stream from transport stream如何从传输流中提取基本流
【发布时间】:2020-03-17 21:37:03
【问题描述】:

我的 .ts 文件如下所示

Input #0, mpegts, from 'i.ts':
  Duration: 00:00:36.32, start: 28752.398067, bitrate: 57694 kb/s
  Program 50 
    Metadata:
      service_name    : aaa HD
      service_provider: 
    Stream #0:51[0x1f5]: Video: h264 ([27][0][0][0] / 0x001B), none, 90k tbr, 90k tbn, 180k tbc
    Stream #0:52[0x1f6]: Audio: mp3 ([3][0][0][0] / 0x0003), 0 channels, fltp
  Program 51 
    Metadata:
      service_name    : b Music HD
      service_provider: 
    Stream #0:16[0x1ff]: Video: h264 ([27][0][0][0] / 0x001B), none, 90k tbr, 90k tbn, 180k tbc
    Stream #0:17[0x200]: Audio: mp3 ([3][0][0][0] / 0x0003), 0 channels, fltp
  Program 52 
    Metadata:
      service_name    : c ch HD
      service_provider: 
    Stream #0:14[0x209]: Video: h264 ([27][0][0][0] / 0x001B), none, 90k tbr, 90k tbn, 180k tbc
    Stream #0:15[0x20a]: Audio: mp3 ([3][0][0][0] / 0x0003), 0 channels, fltp
  Program 1510 
    Metadata:
      service_name    : asd
      service_provider: xyz
    Stream #0:18[0x5e7]: Video: h264 ([27][0][0][0] / 0x001B), none, 90k tbr, 90k tbn, 180k tbc
    Stream #0:19[0x5e8]: Audio: mp3 ([3][0][0][0] / 0x0003), 0 channels, fltp

我需要从这个文件中提取一个视频流及其音频流,例如与我尝试过的程序 50 相关

ffmpeg -i i.ts -map 0:51 output.mp4 

但我得到了这个错误

Stream mapping:
  Stream #0:51 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
Cannot determine format of input stream 0:51 after EOF
Error marking filters as finished
Conversion failed!

【问题讨论】:

  • 共享失败命令的完整日志。
  • 问题随日志更新
  • 请完整记录。如果它太大,请将其上传到 pastebin..etc。
  • 这是完整的日志pastebin.com/Yas609Mk

标签: ffmpeg stream transport dvb-t


【解决方案1】:

我找到了解决方案here

对于整个程序的映射,语法是:

ffmpeg -i i.ts -c:v copy -c:a copy -map 0:p:51 output.mp4

我无法验证该解决方案是否确实适用于您的 .ts 文件。

我创建了以下示例,它使用两个程序构建了一个 .ts 文件,然后将每个程序提取到 .mp4 文件:

ffmpeg -y -r 10 -f lavfi -i testsrc=rate=10:size=160x120 -f lavfi -i sine=frequency=1000 -t 5 -c:v libx264 -c:a aac in1.mp4
ffmpeg -y -r 10 -f lavfi -i mandelbrot=rate=10:size=160x120 -f lavfi -i sine=frequency=300 -t 5 -c:v libx264 -c:a aac in2.mp4
ffmpeg -y -i in1.mp4 -i in2.mp4 -map 0:0 -map 0:1 -map 1:0 -map 1:1 -program title=ProgOne:st=0:st=1 -program title=ProgTwo:st=2:st=3 -c:v copy -c:a copy in.ts
ffmpeg -y -i in.ts -c:v copy -c:a copy -map 0:p:1 output1.mp4
ffmpeg -y -i in.ts -c:v copy -c:a copy -map 0:p:2 output2.mp4
  • 第一个命令建立带有高频哔声的视频测试模式(输出:in1.mp4)。
  • 第二个命令用低频蜂鸣声构建视频曼德布罗图案(输出:in2.mp4)。
  • 第三条命令用两个程序构建传输流(输出:in.ts)。
  • 第四条命令提取第一个程序(输出:output1.mp4)。
  • 第五条命令提取第二个程序(输出:output2.mp4)。

【讨论】:

  • 命令给我这个错误 [mp4 @ 0x7fc3fc01be00] 尺寸未设置无法为输出文件 #0 写入标头(编解码器参数不正确?):无效参数流映射:流 #0:16 -> #0:0 (copy) Stream #0:17 -> #0:1 (copy) 最后一条消息重复 1 次
  • 你能用VLC media player检查程序51是否可以播放吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 2023-03-06
  • 2012-02-10
  • 2017-04-15
  • 2016-05-14
  • 2013-11-12
  • 1970-01-01
  • 2017-11-02
相关资源
最近更新 更多