Я дергал себя за волосы, пытаясь понять, как именно это сделать. У меня есть видеофайлы, которые я передаю через rtmp, используя ffmpeg, в который я пытаюсь записать встроенные (?) .Ass субтитры. У меня это отлично работает с субтитрами на основе картинок, но .ass был проклятием моего существования в последние несколько месяцев, и я почти сдался. Я очень плохо знаком с потоковым вещанием и все еще учусь, и, несмотря на все руководства и все, что я читал в Интернете, я просто не могу это сделать ..

Вот часть файла примера:

Duration: 00:24:37.51, start: 0.000000, bitrate: 1674 kb/s
Chapter #0:0: start 0.000000, end 1354.895000
Metadata:
  title           : Main
Chapter #0:1: start 0.000000, end 90.000000
Metadata:
  title           : ED
Chapter #0:2: start 1354.979000, end 1386.969000
Metadata:
  title           : Preview
Stream #0:0(eng): Video: h264 (High), yuv420p, 704x480 [SAR 1:1 DAR 22:15], SAR 10:11 DAR 4:3, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (defaul
Stream #0:1(eng): Audio: aac (LC), 44100 Hz, 5.1, fltp (default)
Metadata:
  title           : AAC 5.1
Stream #0:2(jpn): Audio: aac (LC), 44100 Hz, 5.1, fltp
Metadata:
  title           : AAC 5.1
Stream #0:3(eng): Subtitle: ass (default)
Metadata:
  title           : OP/ED
Stream #0:4(eng): Subtitle: ass
Metadata:
  title           : Full

У меня есть скрипт, который может делать субтитры на основе картинок, когда у меня есть:

-filter_complex "[0:v][0:6]overlay=(W-w)/2:H-h[v]" \
-map "[v]" \
-map 0:2 \

Затем я вернулся к предыдущему шаблону и нашел:

-vf subtitles="$i":force_style='FontName=DejaVu 
Sans':force_style='Fontsize=15' \

Тем не менее, это все еще не работает. Я пытался разместить его сразу после ввода и перед выводом. Все еще ничего не работает, как я надеялся, и все, что я получаю, это ответы вроде этого:

[Parsed_subtitles_0 @ 0x209c1a0] Unable to open [file].mkv
[AVFilterGraph @ 0x208e7c0] Error initializing filter 'subtitles' with args 
'[file].mkv:force_style=FontName=DejaVu

Если потребуется дополнительная информация, я с удовольствием предоставлю ее. Опять же, я очень новичок во всем этом и даже не знаю, предоставляю ли я нужную информацию прямо сейчас ... Это мое последнее средство, так как я пытался читать руководства, но, похоже, нет ничего конкретного для того, что я пытаюсь сделать. Мне потребовалось почти 5 месяцев, чтобы понять, как заставить работать субтитры на основе изображения ... Любая помощь приветствуется. Спасибо.

ОБНОВИТЬ

Перебрав все виды разных команд, я начал убирать

:force_style='Fontsize=15'

от линии выше. Субтитры теперь отображаются в потоке, но я не могу понять, как указать, какой поток субтитров отображать. Я пытался использовать -map, чтобы заставить его, но получить:

 Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Stream #0:2 -> #0:1 (aac (native) -> aac (libfdk_aac))
 Stream #0:4 -> #0:2 (ass (native) -> ? (?))

Я также попытался это, что я нашел после поиска

 -vf subtitles="$i":si=4

это должно было позволить мне выбрать альтернативный поток субтитров, но это также привело к ошибке

[Parsed_subtitles_0 @ 0x15720c0] Unable to locate subtitle stream in Trigun.S01E01.The.60.Billion.Double.Doll‌​ar.Man.mkv
[AVFilterGraph @ 0x14f1360] Error initializing filter 'subtitles' with args 'Trigun.S01E01.The.60.Billion.Double.Doll‌ar.Man.mkv:si=4:force_style=FontName=DejaVu Sans'

так ... угу? немного прогресса?

ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ!

Я был близко, но нуждался в некотором разъяснении, чтобы помочь решить это.

si=

Правильно, но я подумал, что мне нужно указать 4 в качестве 5-го потока в файле, когда мне фактически нужно было дать ему 1, чтобы выбрать 2-й поток субтитров ...

        -vf subtitles="$i":si=1:force_style='FontName=DejaVu Sans' 

работает просто отлично, и у меня есть правильные субтитры, которые записываются прямо в поток.

Для справки вот что я использую:

ffmpeg -re -i [file].mkv -map 0:v -map 0:2 -vf subtitles="$i":si=1:force_style='FontName=DejaVu Sans' -c:v libx264 -pix_fmt yuv420p -profile:v high -preset veryfast -crf 23 -maxrate 1.5M -bufsize 2.5M -threads 0 -c:a libfdk_aac -ac 2 -af "volume5.5" -f flv -b:v 900k -maxrate 1.5M -bufsize 2M rtmp://[server]/[mountpoint]/[key]

Я продолжаю настраивать и настраивать по мере необходимости. Например, была добавлена громкость, потому что во многих видео, которые мне попадались, звук очень тихий, возможно, потому что я конвертирую многоканальную дорожку в 2 канала. В любом случае спасибо за помощь! Я надеюсь, что это может как-то помочь кому-то еще, кто испытывает затруднения, выясняя это самостоятельно!

0