Всем привет!
Поможет кто подскажет стартовым примером для кодирования видео потока в mp42 + x264?
Изначально поток NTSC 720x480 Ч/Б. Может как-то сразу можно это учесть и делать деинтерлейз и жать только в серых тонах?
Заранее огромное спасибо!
ЗЫ. OS Ubuntu Server без Xов
ЗЫЫ. Собрал ffmpeg с поддержкой libx264 и смог упаковать msmpeg4 avi в mp41 x264, но блин это из файла, а как "на лету!" из STDIN?
MEncoder | ffmpeg для кодирования raw потока в mp42+x264 (Поможите примером)
Модератор: Модераторы разделов
-
- Сообщения: 112
- ОС: MAC OS X
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
Завалялось вот 2 скрипта. Может поможет...
Код: Выделить всё
#!/bin/bash
if [[ "$2" == "" ]]; then
echo "Usage: $0 <inputfile> <outputname>"
echo "(<outputname> does not need an extension!)"
exit 1
fi
mencoder $1 -sws 9 -of lavf -lavfopts format=mp4 \
-vf scale=-2:320,dsize=576:320:0,harddup \
-ovc x264 \
-x264encopts bitrate=1381:vbv_maxrate=1500:vbv_bufsize=2000:nocabac:me=umh:trellis=1:level_idc=30:global_header:threads=2:pass=1:turbo \
-oac faac \
-alang en \
-faacopts mpeg=4:object=2:br=160:raw -channels 2 -srate 48000 -o $2.tmp.mp4
EXIT_CODE="$?"
if [[ "$?" != "0" ]]; then exit "$EXIT_CODE"; fi
mencoder $1 -sws 9 -of lavf -lavfopts format=mp4 \
-vf scale=-2:320,dsize=576:320:0,harddup \
-ovc x264 \
-x264encopts bitrate=1381:vbv_maxrate=1500:vbv_bufsize=2000:nocabac:me=umh:subq=6:frameref=6:trellis=1:level_idc=30:global_header:threads=2:pass=2 \
-oac faac \
-alang en \
-faacopts mpeg=4:object=2:br=160:raw -channels 2 -srate 48000 -o $2.tmp.mp4
EXIT_CODE="$?"
if [[ "$?" != "0" ]]; then exit "$EXIT_CODE"; fi
Код: Выделить всё
#!/bin/bash
[ -z $1 ] && echo "Usage $0 <input file> [output file]" && exit
if [ -z $2 ]; then
extension=`echo file.name.flv|awk -F'.' '{print $NF}'`
out="`echo $1|sed "s/\.$extension$//g"`.mp4"
fi
ffmpeg -i $1 -y -v 1 -map_chapters -1:-1 -threads 0 -f mp4 -vcodec libx264 -vpre medium -vpre baseline -g 60.0 -r 20.0 -vb 800000 -s 640x360 -aspect 1.778 -acodec libfaac -ab 74984 -ar 44100 -ac 2 $out
-
- Сообщения: 1375
- ОС: Gentoo
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
Вы бы хоть источник потока указали, а то так прям.... STDIN
Sspphheerraa
-
- Сообщения: 72
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
прога motion. Написано что типа может использовать внешний (extpipe) паковщик вместо встроенного (встроенный умеет ограниченное число и комбинацию кодеков)
там написано что поток передаётся как rawstream из STDIN. Увы более там не описано ничего.
там написано что поток передаётся как rawstream из STDIN. Увы более там не описано ничего.
-
- Сообщения: 1375
- ОС: Gentoo
-
- Сообщения: 72
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
И как это связано с mp4?
-
- Сообщения: 1375
- ОС: Gentoo
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
Мдааа, не хочет человек думать, даже когда ему готовый мануал дают
Вы motion настроили? "Live Webcam Server" параметр включили? при старте он пишет
"Started stream webcam server in port 8081" (*порт может быть другой)
Браузером изображение видите по адресу http://localhost:8081 ?
Если на все вышесказанное ответ "да", то запись должна без проблем работать
ffmpeg http://localhost:8081 -vcodec libx264 -vpre libx264-veryslow -crf 25 -r 25 -s 640x480 -an out.mp4
ps И вообще, если устройство, дающее вам поток (веб-камера?) не удаленное, а локальное, то можно обойтись без motion вообще. Запись
$ ffmpeg -i /dev/video0 -vcodec libx264 -vpre libx264-veryslow -crf 25 -r 25 -s 640x480 -an out.mp4
Sspphheerraa
-
- Сообщения: 72
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
Выражусь вашим же языком - Мдааа.
Я просил не как работать с motion + ffmpeg, а как кодировать поток подсунутый с STDIN и в частоности кодировать в mp42.
motion у меня чтобы определять движение и писать "одновременно" с 4х камер подключенных одной bt878, ffmpeg и это умеет?
использовать htttp возможность motion чтбы кодировать от туда, как бы уже не укладывается в то что я хочу, да и зачем если motion умеет сам когда надо запускать кодер и отдавать ему поток, вот тока пока не понятно мне как, но я разбираюсь уже.
Ну в общем, хотелось как лучще, а получилось как всегда. В итоге ничего по тому что я спросил, но куча воды совсем про другое.
Я просил не как работать с motion + ffmpeg, а как кодировать поток подсунутый с STDIN и в частоности кодировать в mp42.
motion у меня чтобы определять движение и писать "одновременно" с 4х камер подключенных одной bt878, ffmpeg и это умеет?
использовать htttp возможность motion чтбы кодировать от туда, как бы уже не укладывается в то что я хочу, да и зачем если motion умеет сам когда надо запускать кодер и отдавать ему поток, вот тока пока не понятно мне как, но я разбираюсь уже.
Ну в общем, хотелось как лучще, а получилось как всегда. В итоге ничего по тому что я спросил, но куча воды совсем про другое.
-
- Сообщения: 1375
- ОС: Gentoo
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
Spider, камер может быть сколько угодно и ffmpeg действительно умеет очень многое.
Если карта захвата одна (к примеру, /dev/video0), а камер несколько, то устанавливаете vloopback, он создает виртуальные видео устройства (/dev/video1, /dev/video2 и т.д.). В /etc/motion/motion.conf проверьте опцию
После чего motion использует video0 и транслирует видео в video1
video2 легко цепляется ffmpeg'ом
Или у вас проблема запуска записи (когда есть движение)?
То тогда в /etc/motion/motion.conf все настраивается.
Пример конфига камеры
target_dir для каждой камеры указываете, и все, имеете видео с движениями по каждой камере в соответствующей директории.
ps Если бы вы сразу написали, что камеры подключены не на прямую, а через карту захвата, и то, что вам надо писать только движения, то недоразумений не было бы. И обижаться не надо, вам пытаются помочь, а не унизить
Если карта захвата одна (к примеру, /dev/video0), а камер несколько, то устанавливаете vloopback, он создает виртуальные видео устройства (/dev/video1, /dev/video2 и т.д.). В /etc/motion/motion.conf проверьте опцию
Код: Выделить всё
video_pipe '-'
После чего motion использует video0 и транслирует видео в video1
video2 легко цепляется ffmpeg'ом
Или у вас проблема запуска записи (когда есть движение)?
То тогда в /etc/motion/motion.conf все настраивается.
Код: Выделить всё
ffmpeg_video_codec libx264
ffmpeg_deinterlace off #как хотите, можно и включить
ffmpeg_variable_bitrate 0
ffmpeg_bps 400000
ffmpeg_cap_new on
ffmpeg_cap_motion on
# Конфиги на каждую камеру
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf
thread /etc/motion/thread3.conf
thread /etc/motion/thread4.conf
Пример конфига камеры
Код: Выделить всё
# /etc/motion/thread1.conf
#
# This config file was generated by motion 3.2.9
# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video0
# The video input to be used (default: 8)
# Should normally be set to 1 for video/TV cards, and 8 for USB cameras
input 0
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /var/www/motion/camera1
text_left Camera 1
# The mini-http server listens to this port for requests (default: 0 = disabled)
webcam_port 8081
# Quality of the jpeg images produced (default: 50)
webcam_quality 50
# Maximum framerate for webcam streams (default: 1)
webcam_maxrate 25
# Restrict webcam connections to localhost only (default: on)
webcam_localhost off
# Limits the number of images per connection (default: 0 = unlimited)
# Number can be defined by multiplying actual webcam rate by desired number of seconds
# Actual webcam rate is the smallest of the numbers framerate and webcam_maxrate
webcam_limit 0
target_dir для каждой камеры указываете, и все, имеете видео с движениями по каждой камере в соответствующей директории.
ps Если бы вы сразу написали, что камеры подключены не на прямую, а через карту захвата, и то, что вам надо писать только движения, то недоразумений не было бы. И обижаться не надо, вам пытаются помочь, а не унизить
Sspphheerraa
-
- Сообщения: 72
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
sspphheerraa писал(а): ↑26.06.2011 12:25Или у вас проблема запуска записи (когда есть движение)?
То тогда в /etc/motion/motion.conf все настраивается.
[codeeg_vi]ffmpdeo_codec libx264
ffmpeg_deinterlace off #как хотите, можно и включить
ffmpeg_variable_bitrate 0
ffmpeg_bps 400000
ffmpeg_cap_new on
ffmpeg_cap_motion on
ffmpeg_video_codec Values: mpeg1 (ffmpeg-0.4.8 only), mpeg4, msmpeg4, swf, flv, ffv1, mov
Default: mpeg4
Что-то тут libx264 и не пахнет...
sspphheerraa писал(а): ↑26.06.2011 12:25ps Если бы вы сразу написали, что камеры подключены не на прямую, а через карту захвата, и то, что вам надо писать только движения, то недоразумений не было бы. И обижаться не надо, вам пытаются помочь, а не унизить
и всё отвлекаемся. Не хочу ничего знать про motion и всякие loopback девайсы. Хотел узнать как жать поток в mp42 из stdin. Зачем предлагать альтернативы? ЗАЧЕМ? Хочу то что хочу. Пока блин всё это вялилось, я по исходникам нашёл как хотябы из stdin брать. Но вот mp42 как буд-то не умеют. Тока mp41 получается.
-
- Сообщения: 1375
- ОС: Gentoo
Re: MEncoder | ffmpeg для кодирования raw потока в mp42+x264
Открыл в гугле mp42, первая ссылка выдала
mp42 codec's Home Page: http://www.microsoft.com/windows/windowsme...ecdownload.aspx
все, мне здесь больше советовать нечего. Удачи.
Sspphheerraa