Jump to content
Калькуляторы

Транскодинг VLC + CUDA

Со спутника принимаю MPEG2, надо транскодировать в h264.

Временно на Винде VLC транскодит, проц отжирается неплохо.

3 канала транскодить - 10GHz занимает по процу.

Если использовать CUDA то полегче будет?

 

Какие еще варианты транскодирования в H264?

Share this post


Link to post
Share on other sites

Ни VLC, ни ffmpeg еще не научились использовать CUDA для кодирования видео, равно как и Intel Quick Sync Video.

Share this post


Link to post
Share on other sites

Энкодинг H264 к CUDA никакого отношения не имеет. Вообще. Да, у Nvidia сейчас готовятся аппаратный энкодер, но это GPU, отдельное ядро, но никак не CUDA.

 

libx264 (который в VLC) на сегодняшний день даёт лучшие результаты по качеству+битрейту при том что он бесплатный. По крайней мере ни elecard, ни mainconcept никаких результатов лучше не предоставляют.

 

Так что по факту никаких других вариантов и нет.

 

У вас же просто плохие настройки. Во-первых, выкиньте винду, поставьте более подходящую операционную систему под которой вы сможете без проблем собрать свежий VLC, во-вторых показывайте ключи запуска VLC.

Share this post


Link to post
Share on other sites

Ок, ошибся.

Значь VLC с GPU пошустрее будет транскодить в h264?

Из ОC - Линукс поставлю, как VLC под линем с GPU дружит?

Share this post


Link to post
Share on other sites

libx264 выполняет кодирование полностью на CPU.

Share this post


Link to post
Share on other sites

Ну сказали же: «у Nvidia сейчас готовится аппаратный энкодер». Не «воткнут в каждый продаваемый компьютер», а «готовится»

Share this post


Link to post
Share on other sites

libx264 выполняет кодирование полностью на CPU.

На проц нагрузка большая, чтобы перекодировать в h264 3 канала - отжирается проц на 10GHz

Share this post


Link to post
Share on other sites

Вы читаете ветку или только пишете?

 

Вам сказали уже: приводите настройки VLC. У libx264 под сотню настроек. Думаете их просто так какой-то идиот впихнул?

Share this post


Link to post
Share on other sites

maxlapshin

vlc -vvv rtp://239.10.10.5:1234 --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{dst=239.10.10.7,port=1234,mux=ts,ttl=1}"

 

Поставил убунту, vlc 2.0.3 также на транскодирование 3-х каналов - 10GHz занимает.

Share this post


Link to post
Share on other sites

Раз у вас MPEG2, значит это SD. Современный Xeon E3 нормально жмет в районе таких 10 каналов.

Share this post


Link to post
Share on other sites

Строка запуска такая:

vlc rtp://239.10.10.5:1234 --sout #transcode{vcodec=h264,venc=x264{qpmin=26,subme=4},vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100,deinterlace}:rtp{dst=239.10.10.7,port=1234,mux=ts,ttl=1}

 

нагрузка на проц упала в половину, 6GHz отъедается на 3-х каналах, это получается по 2GHz на канал примерно.

Нормально? или еще параметры менять?

Share this post


Link to post
Share on other sites

Начните с того, что просто возьмите мой пример.

 

У вас, например, vb=0. Какой битрейт то хотите?

 

Ну и всякие мелочи типа убрать ресемплинг звука. Зачем вам это делать?

Share this post


Link to post
Share on other sites

ок, спасибо.

Еще нескромный вопрос, а можно ли в влс несколько потоков с различным битрейтом сделать?

Интересует возможность адаптированного битрейта для клиента.

Share this post


Link to post
Share on other sites

Что то похожее?

 

/usr/bin/cvlc rtp://239.10.10.4:1234 --sout "#duplicate{ \

dst={transcode{vcodec=h264,venc=x264{qpmin=26,subme=4},vb=512,scale=0,acodec=mp4a,ab=64,channels=2,samplerate=44100,deinterlace}:rtp{dst=239.10.10.14,port=1234,mux=ts,t

tl=1}}, \

dst={transcode{vcodec=h264,venc=x264{qpmin=26,subme=4},vb=1024,scale=0,acodec=mp4a,ab=96,channels=2,samplerate=44100,deinterlace}:rtp{dst=239.10.10.14,port=1235,mux=ts,

ttl=1}}, \

dst={transcode{vcodec=h264,venc=x264{qpmin=26,subme=4},vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100,deinterlace}:rtp{dst=239.10.10.14,port=1236,mux=ts,tt

l=1}}}" > /dev/null 2>&1 &

Share this post


Link to post
Share on other sites

Зачем вы пишите vb=0? Что вы хотите этим получить?

 

Насчёт адаптивного битрейта: он несовместим с rtp udp. Если вы хотите адаптивный стриминг, то нужен HLS.

Share this post


Link to post
Share on other sites

vb=0 можно в принципе опустить, этот параметр я как понимаю при нуле не учитывается.

т.е. битрейт не изменять.

про мультибитрейт - vlc транскодит и отправляет в мультикаст, вовза принимает эти потоки с различными битрейтами, а там уже дело техники через flowplayer.

Edited by Macro

Share this post


Link to post
Share on other sites

Intel Quick Sync насколько понимаю даёт намного лучше результат. в той же Wowza встроена возможность транскодинга

Share this post


Link to post
Share on other sites

Intel Quick Sync насколько понимаю даёт намного лучше результат. в той же Wowza встроена возможность транскодинга

Вовзой транскодить дорого! На каждый стрим покупать надо.

Как транскодить на Intel Quick Sync?

Share this post


Link to post
Share on other sites

Для Intel Quick Sync надо покупать софт, который этим пользуется. Плюсы этой штуки я бы сказал, что неоднозначны.

 

Что вы хотите сделать, не указывая битрейт потока? Какой вообще смысл в этом? Вам всегда надо указывать целевой битрейт потока.

 

Flowplayer и адаптивный стриминг несовместимы. Забудьте и даже не пытайтесь этим заниматься.

 

Запускайте 3 потока с VLC, ставьте erlyvideo, дальше OSMF-плеер, например StrobeMediaPlayback и готово.

Share this post


Link to post
Share on other sites

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

 

Больше никакой особой разницы между ними нет, поэтому фраза «обойтись только ffmpeg» мне непонятна, потому что звучит как «vlc большой, тяжелый и медленный, а ffmpeg маленький и быстрый». Это не так.

Share this post


Link to post
Share on other sites

Добрый день, Камрады.

Подниму-ка старую темку.

Хочу транскодить мультикаст в мультикаст, из mpeg2 в h264, SD каналы, на цпу с помощью VLC, с оптимально низким битрейтом.

Со спутников в мультикаст вещает астра4.

Дел никогда с транскодингом не имел, и чувствую, что буду долго в этом разбираться, а не хочется терять время.

Поэтому если кто-то подскажет (за пиво или за кэш))) готовую оптимальную строку запуска vlc для этого - буду премного благодарен.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this