.srt 자막 및 .ts 비디오에서 dvb_subtitles가있는 .ts 비디오로 이동하는 방법은 무엇입니까?
.srt 자막 파일 + .ts 비디오 파일 => dvb_subtitle이있는 .ts 비디오 파일에서 가져 오려고합니다.
내 .srt :
1
00:00:00,000 --> 00:00:05,000
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel hendrerit massa.
2
00:00:05,000 --> 00:00:10,000
Aliquam dolor sapien, molestie ac sagittis eu, tempus nec est.
3
00:00:10,000 --> 00:00:28,000
Morbi id sem eu sapien consectetur imperdiet. Morbi sed purus et sapien interdum placerat vitae quis orci.
내 .ts : sample_1920x1080.ts from https://filesamples.com/formats/ts
SubtitleEdit 명령 : .\SubtitleEdit.exe /convert 'test_subtitles.srt' Blu-raysup /resolution:1920x1080 /overwrite
. 예상대로 test_subtitles.sup 파일이 생성됩니다.
그런 다음 다음 ffmpeg
과 같이 .sup 자막을 포함하는 데 사용 합니다 .\ffmpeg.exe -y -i 'sample_1920x1080.ts' -fix_sub_duration -i 'test_subtitles.sup' -map 0:v -map 1:s -vcodec copy -acodec copy -scodec dvbsub -copyts -muxdelay 0 -max_delay 0 'output.ts'
.. 이것은 작동하지만 결과는 때때로 읽기 어렵습니다. 다음은 스크린 샷입니다.

여기에 다른 옵션이 있습니까? 또는 subtitleedit / ffmpeg 내의 옵션에서 f.ex로. 자막을 더 크게 만들까요?
(저는 이것을 SubtitleEdit Github 저장소에도 게시했습니다. https://github.com/SubtitleEdit/subtitleedit/issues/4539.)
최신 정보:
SubtitleEdit의 작성자로부터 SubtitleEdit의 그래픽 사용자 인터페이스를 사용하면 실제로 글꼴 크기를 늘릴 수 있다는 것을 배웠습니다 ( 여기를 참조 하십시오 . 그러나 명령 줄 도구를 사용하여이 작업을 수행하고 싶습니다.
답변
불행히도 다음과 같이 ffmpeg를 사용하여 수행해야합니다.
ffmpeg -i ./sample_1280x720.ts -i ./sample.srt -map 0 -map 1 -c copy -c:s dvd_subtitle ./out.ts
그러나 ffmpeg는 다음 오류로 수락하지 않습니다.
현재 텍스트에서 텍스트로 또는 비트 맵에서 비트 맵으로 만 가능한 자막 인코딩
.srt
형식은 텍스트 기반이고 .sup
형식은 이미지 기반입니다.
ffmpeg가 자막을 비디오로 인코딩하는 것을 거부 하는 한.
우리가 사용하는 수 -vf
(비디오 필터) 하드 코딩 (SRT) 자막 비디오로를 :
ffmpeg -i ./sample_1280x720.ts -vf subtitles=sample.srt:force_style='Fontsize=24' ./out.ts
Fontsize
옵션으로 글꼴 크기를 정의 할 수 있습니다.

그러나가 있고 sup
비디오로 구우려면 다음을 사용할 수 있습니다.
ffmpeg -i ./sample_1280x720.ts -i ./sample.sup -filter_complex "[0:v][1:s]overlay" ./out.ts
19.12.2020 수정 :
내 마지막 댓글의 아이디어-SubtitleEdit의 Settings.xml에서 글꼴 크기를 대체하는 Python 스크립트로 스크립트 전에 호출됩니다.
https://github.com/Twenkid/Python-Various/blob/main/Exercise/SubtitleEdit/sub.py
python sub.py C:\SE3518\Settings.xml 44
기타
...
dvb 트랙의 크기를 조정 해 보셨습니까? 그 스레드는 가능하다고 제안합니다 : ffmpeg 및 dvb 자막 스케일링
Maknol의 그 부분 (
나는 그것을 시도하지 않았습니다
) :
-filter_complex "[0 : s : 0] scale = -1 : 2400 [sub], [0 : v] [sub] overlay = x = 150 : y = -80"
어디:
scale-자막 크기
오버레이 x =-수직
오버레이 y =-수평
편집 : ffmpeg로 .sup 자막을 확장했지만 지금까지 두 단계로 작동했습니다. 아래를 참조하십시오.
내 순서는 다음과 같습니다.
- 명령, 자막이있는 스트림 생성 :
ffmpeg -i sample_1920x1080.ts -fix_sub_duration -i test_subtitles.sup -map 0 : v -map 1 : s -vcodec copy -acodec copy -scodec dvbsub -copyts -muxdelay 0 -max_delay 0 outputA.ts
- 자막 크기 조정 및 위치 조정 (그러나 filter_complex로 인해 다시 코딩해야 함)
ffmpeg -i outputA.ts -metadata title = "Scale"-filter_complex "[0 : s : 0] scale = -1 : 1400 [sub], [0 : v] [sub] overlay = x = -250 : y = -300 "-c : v libx264 -b : v 5M -preset fast -aspect 16 : 9 -c : a copy output_Scaled.ts
초기 크기 :

내 초기 자막은 더 컸고 (글꼴 크기 25) 여기의 배율 계수는 작습니다 = 1400/1080
배율 :

...
한 번에 시도하면 구문이 기본 크기를 렌더링하고 배율 조정 된 크기를 오버레이했습니다 (전체가 아닌 하나의 항목 만 표시).
이것이 한 번의 패스 시도입니다.
# 한 번에 오버레이 ... ffmpeg -i sample_1920x1080.ts -fix_sub_duration -i test_subtitles.sup -scodec dvbsub -map 0 : v -map 1 : s -metadata title = "Scale"-filter_complex "[1 : s] scale = -1 : 1400 [sub], [0 : v] [sub] overlay = x = -250 : y = -300 "-c : v libx264 -crf 20 -preset veryfast -aspect 16 : 9 -c : a aac -엄격한 실험 -b : a 192k outputSTACK_SUP.ts
다음과 같이 생성됩니다.
