Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 从ffmpeg转换中排除特定流(例如teletext)_Audio_Video_Ffmpeg_Subtitle_Teletext - Fatal编程技术网

Audio 从ffmpeg转换中排除特定流(例如teletext)

Audio 从ffmpeg转换中排除特定流(例如teletext),audio,video,ffmpeg,subtitle,teletext,Audio,Video,Ffmpeg,Subtitle,Teletext,我想将几个视频文件(从电视中捕获)转换成另一种格式,但我想删除一些特定的流。例如,这是我的一个输入文件: $ ffprobe -hide_banner -i 'Easy Rider.ts' 2>&1|grep Stream Stream #0:0[0x4f6]: Unknown: none ([5][0][0][0] / 0x0005) Stream #0:1[0x4fc]: Unknown: none ([12][0][0][0] / 0x000C) St

我想将几个视频文件(从电视中捕获)转换成另一种格式,但我想删除一些特定的流。例如,这是我的一个输入文件:

$ ffprobe -hide_banner -i 'Easy Rider.ts' 2>&1|grep Stream
    Stream #0:0[0x4f6]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:1[0x4fc]: Unknown: none ([12][0][0][0] / 0x000C)
    Stream #0:2[0x13f7]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0:3[0x13f8](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:4[0x13f9](fra): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:5[0x13fa](deu): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
    Stream #0:6[0x13fb](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
    Stream #0:7[0x13fc](mul): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:8[0x13fd](mis): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s (visual impaired) (descriptions)
    Stream #0:9[0x13fe](fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
    Stream #0:10[0x13ff](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
从这个文件中,我想保留

  • 流#2(h264视频)
  • 流#3(德语mp2音频)
  • 流#10(德文dvb#U字幕)
换句话说,我想从转换中排除

  • 未知类型的所有流
  • 除德语以外的所有音频流
  • 针对视力受损或听力受损的所有流
  • 所有dvb_图文电视流
当然,我可以编写一些
awk
脚本来构造一个类似

$ ffmpeg -hide_banner -ignore_unknown -i 'Easy Rider.ts' -map 0:2 -map 0:3 -map 0:10 -vcodec copy -acodec copy -scodec copy xx.ts
但我正在寻找一种使用
ffmpeg
映射功能的解决方案。 我已经找到了,这让我

$ ffmpeg -hide_banner -ignore_unknown -i 'Easy Rider.ts' -map 0:v -map 0:m:language:deu -vcodec copy -acodec copy -scodec copy xx.ts
此命令创建一个文件,其中仍包含听力受损者的字幕和dvb_teletext

$ ffprobe -hide_banner -i xx.ts 2>&1|grep Stream
    Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0:1[0x101](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:2[0x102](deu): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006), 492x250
    Stream #0:3[0x103](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
    Stream #0:4[0x104](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)

到目前为止,我还没有找到从输出中排除这些流的方法。有什么想法吗?

ffmpeg map无法通过编解码器或配置选择流,因此您必须在Handhi Gyan之前探测该文件,感谢您的快速响应。我将为此开发一个bash脚本。