처음 올리는 글이니 양해 부탁드립니다 :)
짧은 역사. 저는 tvheadend를 사용하고 있는데 내장된 트랜스코더가 CPU를 먹고 평균 품질의 출력(ffmpeg 기반)을 제공합니다. ffmpeg를 통해 tvheadend에서 출력을 스트리밍하면 CPU 사용량이 낮아지고 품질이 향상됩니다(이상하지만 사실입니다). (플레이어 용량이 제한되어 있어서 트랜스코딩을 해야 했습니다)
따라서 tvheadend에서 http 링크는 다음과 같은 것에서 나옵니다.
도착하다
pipe:///usr/bin/ffmpeg -loglevel fatal -i http://avideostream -tune zerolatency -vcodec libx264 -preset veryfast -crf 28 -maxrate 1200k -bufsize 3500k -vf "scale='min(1280,iw)':'min(720,ih)'" -acodec aac -b:a 128K -f mpegts pipe:1
보시다시피, 그 차이는 엄청납니다.
모두 작동하지만 위 파이프라인의 설정을 변경하려면 모든 링크에 대한 설정을 변경해야 합니다(스크립트를 통해 수행함). 이는 tvheadend
모든 링크를 다시 가져오고 테스트하는 것을 의미합니다(표시되는 대로). ) 변경된 링크로 충분합니다).
그래서 제가 하고 싶은 것은 ffmpeg를 무언가로 감싸서 래퍼를 변경할 수 있도록 하는 것입니다. (이 모든 것은 최신 Ubuntu 서버에서 발생합니다).
이제 나는 몇 년 동안 내 홈 서버를 운영해 왔지만 Ubuntu 전문가는 아니라고 말할 수 있어 기쁩니다. 그래서 나는 "파이프라인"의 모든 측면을 완전히 이해하지 못합니다.
위에서 볼 수 있는 세 가지 옵션은 다음과 같습니다(지금까지 이상한 빌드에 들어가지 않고 tvheadend에 대한 외부 트랜스코더 옵션을 선택하는 방법을 찾지 못했습니다. 이를 피하고 싶습니다).
ffmpeg용 외부 옵션 파일 사용(콘솔에서 작동하게 할 수 있지만 파이프라인의 일부로는 작동하지 않습니다.
sudo ffmpeg -i amovie.mp4 $(cat ffmpegoptions.txt) convertedmovie.mp4
파일 액세스 권한처럼 간단할 수도 있지만 디버깅을 많이 해본 적은 없습니다.)
ffmpeg의 내용을 .sh
파일에 넣습니다(하지만 파이프가 끊어지는 것 같아서 어디서부터 시작해야 할지 모르겠습니다).
ffmpeg를 일종의 Python 스크립트에 넣습니다. (저는 아직 조사를 시작하지도 않았습니다. 제게는 너무 멀고, Python을 작성할 수 있지만 현재로서는 제 범위를 벗어납니다.)
짧은 버전으로 시작하고 싶습니다.
tvheadend >> piped to ffmpeg >> back to tvheadend >> off to player
아무에게나
tvheadend >> piped to .sh or script wrapper >> piped to ffmpeg >> back to tvheadend >> off to player
또는
tvheadend >> piped to ffmpeg (controlled by an external options file) >> back to tvheadend >> off to player
어떤 조언이나 도움이라도 대단히 감사하겠습니다. 중요한 정보를 놓친 경우 알려주시기 바랍니다.
답변1
나는 실제 답변을 찾지 못했고 더 많은 해결 방법을 찾지 못했습니다. 이는 더 큰 플렉스의 일부이므로 ffmpeg 트랜스코딩을 포함하는 프록시(xteve)를 찾았으며 ffmpeg에 대한 옵션을 설정할 수 있습니다. 내가 하고 싶은 일에는 이 정도면 충분하다.
이것이 다른 사람들의 시간을 조금 절약해주기를 바랍니다.