Software engineering notes

Raspberry Pi with ffmpeg

rpi camera 只支援輸出 raw h.264

雖然 chrome 跟 safari (firefox 不援, 而 safari 因為是 call 自己的 quicktime 去播放影片所以支援的又更廣) 都支援解碼 h.264 codec 但不支援解 raw h.264

但可以解 container 一定要是 mp4, 所以輸出 h.264 還需要經過一層轉檔成 mp4 才能在瀏覽器上看到

install ffmpeg

sudo apt-add-repository ppa:jon-severinsson/ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg

convert raw h264 to mp4

ffmpeg -r 30 -i test2.h264 -vcodec copy test2.mp4

ffserver

/etc/ffserver.conf 加上

<Stream live.mp4>
   Format mp4
   Feed feed1.ffm

   VideoCodec libx264
   VideoFrameRate 30
   VideoSize 320x240

   NoAudio
</Stream>

啟動 ffserver : ffserver -f /etc/ffserver.conf

將 ffmpeg 轉檔的 stream 傳到 feed1.ffm : ffmpeg -i /tmp/t.h264 -copyinkf -codec copy -f mpegts udp://localhost:8090/feed1.ffm

打開瀏覽器 : http://107.185.47.26:9080/live.mp4

MP4 H.264 (AAC or MP3)

H.264 video codec 及 ACC audio codec 的 MP4 container 格式可以被桌機及手機的 IE, Safari, Chrome 原生支援, 但 Chromium 及 Opera 不支援此格式, IE 及 Chrome 也支援 MP4 container 裡的 MP3 audio codec, 但 Safari 不支援, 不過 Firefox 在 Android 及 Firefox OS 裡只有在 thrid-party decoder 支援的情況下才支援

Browser support