Начните потоковую передачу простого mp4 с помощью ffserver

Я хочу транслировать mp4, и для этого я прочитал о ffserver.
Итак, я ищу и читаю документацию по ffserver, но все еще не могу транслировать простой файл.
Для этого я сделал следующее:
1-A win 8 и последний установленный VLC.
2-A Ubuntu 13 с последним пакетом ffmpeg.
3-Файл ffserver.conf сохранен в /etc/ и скопирован с http://ffmpeg.org/sample.html (я просто копирую текст в новый файл).
4-Выполните эту команду: ffserver -f /etc/ffconfig.conf и вот результат:

avserver version 0.8.13-6:0.8.13-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 15 2014 13:53:49 with gcc 4.8.1
Tue Feb 10 07:29:07 2015 AVserver started.

5-Проверьте http://localhost:8090/stat.html, и состояние сервера в порядке. мне 4 потока: test1.mpg, test.asf, stat.html, index.html.
6-Выполните эту команду: ffmpeg -i test.mp4 http://localhost:8090/feed1.ffm и вот результат:

ffmpeg version 0.8.13-6:0.8.13-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 15 2014 13:53:49 with gcc 4.8.1
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'big.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2015-02-05 20:35:09
  Duration: 00:21:36.12, start: 0.000000, bitrate: 788 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 720x404, 677 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 2015-02-05 17:05:45
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 106 kb/s
    Metadata:
      creation_time   : 2015-02-05 20:35:12
Incompatible sample format '(null)' for codec 'mp2', auto-selecting format 's16'
    Last message repeated 1 times
Incompatible sample format '(null)' for codec 'libmp3lame', auto-selecting format 's16'
[buffer @ 0x900f0c0] w:720 h:404 pixfmt:yuv420p
[scale @ 0x8ea5080] w:720 h:404 fmt:yuv420p -> w:160 h:128 fmt:yuv420p flags:0x4
[buffer @ 0x8ea34a0] Invalid pixel format string '-1'
Error opening filters!

7-я смотрю на ошибку и не могу найти почему так происходит и где я ошибаюсь!

До сих пор я читал много примеров и руководств по ffserver, но большинство из них посвящено прямой трансляции, но я просто хочу транслировать некоторые файлы mp4.

ИЗМЕНИТЬ:

Я установил настоящий ffmpeg по этой ссылке: https://askubuntu.com/questions/373322/how-to-replace-avconv-with-the-real-ffmpeg-and-have-it-work-right, но та же ошибка (просто измените ppa до ppa:mc3man/trusty-media для последнего выпуска):

pp@ubuntu:~$ ffmpeg -i big.mp4 http://localhost:8090/feed1.ffm
ffmpeg version 0.8.13-6:0.8.13-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 15 2014 13:53:49 with gcc 4.8.1
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'big.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2015-02-05 20:35:09
  Duration: 00:21:36.12, start: 0.000000, bitrate: 788 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 720x404, 677 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 2015-02-05 17:05:45
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 106 kb/s
    Metadata:
      creation_time   : 2015-02-05 20:35:12
Incompatible sample format '(null)' for codec 'mp2', auto-selecting format 's16'
    Last message repeated 1 times
Incompatible sample format '(null)' for codec 'libmp3lame', auto-selecting format 's16'
[buffer @ 0xa04e0c0] w:720 h:404 pixfmt:yuv420p
[scale @ 0x9ee4080] w:720 h:404 fmt:yuv420p -> w:160 h:128 fmt:yuv420p flags:0x4
[buffer @ 0x9ee24a0] Invalid pixel format string '-1'
Error opening filters!

Может ли кто-нибудь дать мне точные команды, которые я должен запустить для теста?
(Я знаю, что это похоже на проблему для начинающих, но я читаю документ и тестирую все, что могу, но все равно не повезло)


person Ara Deonas    schedule 10.02.2015    source источник
comment
Как упоминается в выводе, вы используете не FFmpeg, а avconv, поскольку Ubuntu устанавливает avconv вместо FFmpeg. Я не знаю, является ли это причиной вашей проблемы.   -  person audionuma    schedule 10.02.2015
comment
Я установил настоящий ffmpeg по этой ссылке: askubuntu.com/questions/373322/ но та же ошибка   -  person Ara Deonas    schedule 10.02.2015
comment
Пожалуйста, покажите вывод командной строки из последнего файла ffmpeg.   -  person slhck    schedule 11.02.2015
comment
Ваш второй вывод консоли также из древней разветвленной версии.   -  person llogan    schedule 13.02.2015
comment
! Как я уже сказал, я сделал это как askubuntu.com/questions/373322/ и протестировать его 3 раза. Знаете ли вы лучший способ получить настоящий ffmpeg?   -  person Ara Deonas    schedule 13.02.2015
comment
Возможный дубликат Возможен ли поток mp4 с ffserver?   -  person gbjbaanb    schedule 12.11.2015


Ответы (1)


Вы не можете транслировать mp4 видео с помощью ffserver, потому что он содержит глобальные метаданные в заголовке файла, что делает невозможным произвольный доступ к потоку. Вы можете выбрать другой формат, например webm, или использовать транспортные потоки MPEG-2 (Apple HLS). См. https://superuser.com/questions/563591/streaming-mp4-with-ffmpeg

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 100000
CustomLog -
<Feed streamwebm.ffm>
  File /tmp/streamwebm.ffm
  FileMaxSize 50M
  ACL allow localhost
  ACL allow 128.199.149.46
  #ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.0.255
</Feed>
<Stream streamwebm>
#in command line run : ffmpeg -i yourvideo.mp4 -c:v libvpx -cpu-used 4 -threads 8    http://localhost:8090/streamwebm.ffm
Feed streamwebm.ffm
Format webm

# Video Settings
VideoFrameRate 30
VideoSize 624x368

# Audio settings
AudioCodec libvorbis
AudioSampleRate 48000
AVOptionAudio flags +global_header

MaxTime 0
AVOptionVideo me_range 16
AVOptionVideo qdiff 4
AVOptionVideo qmin 4
AVOptionVideo qmax 40
#AVOptionVideo good
AVOptionVideo flags +global_header

# Streaming settings
PreRoll 10
StartSendOnKey

Metadata author "author"
Metadata copyright "copyright"
Metadata title "Web app name"
Metadata comment "comment"

</Stream>

#stream for flv format
<Feed streamflv.ffm>
  File /tmp/streamflv.ffm
  FileMaxSize 50M
  ACL allow localhost
  ACL allow 192.168.88.89
  #ACL allow 127.0.0.1
  ACL allow 192.168.0.0 192.168.255.255
</Feed>

<Stream streamflv>
  Feed streamflv.ffm
  Format flv
  #Video Settings

  VideoCodec libx264
  VideoFrameRate 30
  VideoSize 640x360
  VideoBitRate 1000

  # Audio settings
  AudioCodec libfaac
  AudioSampleRate 22050
  AudioChannels 2 #this is creating problem
  AVOptionAudio flags +global_header

  MaxTime 0
  AVOptionVideo me_range 16
  AVOptionVideo qdiff 4
  AVOptionVideo qmin 4
  AVOptionVideo qmax 40
  #AVOptionVideo good
  AVOptionVideo flags +global_header

  # Streaming settings
  PreRoll 10
  StartSendOnKey

</Stream>

<Stream stat.html>
  Format status
  ACL allow localhost
  ACL allow 192.168.0.0 192.168.255.255
</Stream>

# Redirect index.html to the appropriate site

<Redirect index.html>
  URL http://yoururl.com
</Redirect>

внутри тега видео <video> <source src="http://localhost:8090/streamwebm"> </video>

вы можете редактировать параметры в соответствии с вашими потребностями

person budthapa    schedule 13.02.2015
comment
Я в замешательстве. На этот вопрос нет ответа, и я читаю комментарии, но не могу понять, как это сделать. Можете ли вы отредактировать свой ответ и объяснить больше или рабочую демонстрацию? - person Ara Deonas; 13.02.2015
comment
Спасибо! Я проверил это, и я должен удалить HTTP из HTTPPort HTTPBindAddress и удалить метаданные, потому что ffserver сказал, что они неизвестны, и удалить часть потока flv, потому что libfaac неизвестен (почему?). - person Ara Deonas; 19.02.2015
comment
Также я тестирую его и перехожу к http://localhost:8090/streamwebm, и проигрыватель будет отображаться, но изображение предварительного просмотра находится в середине видео (кажется, видео воспроизводится, когда я запускаю команду, но я хочу, чтобы каждый пользователь воспроизводил свое видео с самого начала), а также я нажимаю кнопку воспроизведения, но буферизация, буферизация, буферизация и отсутствие воспроизведения. Я должен сказать, что тестировал его со здоровым mp4, новой Fedora и Ubuntu с последним ffmpeg. Я что-то пропустил? - person Ara Deonas; 19.02.2015
comment
Также запуск в Ubuntu сказал о Failed to set value ''libvx' for option 'c:v'. Я должен поблагодарить вас за вашу помощь, потому что до сих пор никто не помог мне в этой проблеме. Спасибо. - person Ara Deonas; 19.02.2015
comment
Хотел бы я принять это, но из-за этих проблем я все еще не могу транслировать видео. - person Ara Deonas; 20.02.2015